©著作权归作者所有:来自51CTO博客作者汤向峰的原创作品

原文地址:https://blog.51cto.com/12226796/2440359?source=dra

Centos配置

1、安装mail

[root@zabbix alertscripts]# yum install mailx -y

2、编辑配置文件在最后一行添加

[root@zabbix alertscripts]# vim /etc/mail.rc
set bsdcompat
set sendcharsets=iso-8859-1,utf-8
set from=邮箱
set smtp=smtp://smtp.exmail.qq.com
set smtp-auth-user=邮箱
set smtp-auth-password=邮箱密码
set smtp-auth=login

3、测试邮件发送是否正常

[root@zabbix alertscripts]# echo "zabbix test mail" |mail -s "zabbix" 邮箱

4、编写发邮件脚本

[root@zabbix alertscripts]# cd /usr/lib/zabbix/alertscripts
[root@zabbix alertscripts]# vi mailx.sh

#!/bin/bash
#send mail

messages=echo $3 | tr '\r\n' '\n'
subject=echo $2 | tr '\r\n' '\n'
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

5、修改权限

touch /tmp/mailx.log 
chown -R zabbix.zabbix /tmp/mailx.log 
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/

6、测试脚本发送邮件

[root@zabbix alertscripts]# echo "hello world" | mail -s "testmail" 你的邮箱

Ubuntu18.04配置

原文地址:https://blog.csdn.net/warlice/article/details/90519232

安装sendemail

sudo apt install sendemail 

获取邮箱的smtp验证码

我使用的是qq邮箱。,在设置/账户页,查找到如下设置。点击开启pop3/smtp服务。这个过程需要用安保手机向服务方发送“配置邮件客户端”的短信。然后你就可以看到你的授权码了。

 

测试发送邮件

sendEmail  -xu 11989686@qq.com -xp pkjdfgaesozomkkhde -t 11989686@qq.com -u "这是标题" -m "这是正文" -s smtp.qq.com  -f 11989686@qq.com
-t 是接受邮箱地址 -f 是发送邮箱地址 -xu 是smtp邮箱用户名 -xp 是smtp的授权码 -u 是主题 -m 是邮件正文 -s 是smtp服务器域名

创建脚本目录

sudo mkdir /etc/zabbix/alert.d # zabbix 默认脚本位置,可以在/etc/zabbix/zabbix_server.conf看到
sudo vim sendemail.sh  # 编写脚本
chmod 777 sendemail.sh

编写发送邮件的脚本

原文地址:https://www.cnblogs.com/yhq1314/p/9921431.html

#!/bin/bash
SMTP_server='smtp.163.com'    # SMTP服务器
username='*@163.com'     # 用户名
password='*****'              # 密码
from_email_address='*@163.com' # 发件人Email地址
to_email_address="$1"               # 收件人Email地址,zabbix传入的第一个参数
message_subject_utf8="$2"           # 邮件标题,zabbix传入的第二个参数
message_body_utf8="$3"              # 邮件内容,zabbix传入的第三个参数

# 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。
message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_subject_utf8
EOF`
[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"

# 转换邮件内容为GB2312
message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_body_utf8
EOF`
[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"

# 发送邮件
sendEmail='/usr/local/bin/sendEmail'
$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312

 测试该脚本

./sendemail.sh **@163.com 1111 hello

 

zabbix页面配置web

添加三个脚本参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

8、用户配置

 

 

 

9、配置动作

 

 


故障{TRIGGER.STATUS},服务器名:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

告警主机:{HOSTNAME}
告警主机IP地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

 

 


 

 


恢复{TRIGGER.STATUS}, 服务器名:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

告警主机:{HOSTNAME}
告警主机IP地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

10、完成测试
测试发送邮件内容