这里实现的邮件告警方式是使用一个可以在互联网上正常收发邮件的邮箱账号(例如:***@163.com),通过在zabbix服务端中设置,实现当发生故障时可以发送告警邮件到指定邮箱
实现步骤:

1、 安装邮件发送工具mailx

能查到版本信息说明安装成功

2、 修改配置文件
在/etc/mail.rc文件最后添加以下内容并重启zabbix-server服务:

Smtp-auth-passwordd的获取方式见下图:

3、 修改web端

三个脚本参数分别对应sendmail.sh脚本里面的需要的参数:收件人地址、主题、详细内容。

配置用户,以Admin为例,因为Admin用户是在Zabbix administrators这个用户群组里面,所以要保证这个群组对所有的主机群组都有管理权限:



配置动作将告警和发邮件的操作关联起来

修改一下告警内容:

默认标题:
{TRIGGER.STATUS}: {TRIGGER.NAME}
消息内容:

故障:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!
告警主机:{HOSTNAME1},IP地址:{HOST.CONN}
告警时间:{EVENT.DATE}--{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

告警恢复内容也修改一下:

默认标题:
{TRIGGER.STATUS}: {TRIGGER.NAME}
消息内容:
恢复:{TRIGGER.STATUS},服务器:{TRIGGER.NAME} 已经恢复!   
 告警主机:{HOSTNAME1} ,IP地址:{HOST.CONN}
告警时间:{EVENT.DATE}---{EVENT.TIME}
恢复时间:{EVENT.DATE}---{EVENT.RECOVERY.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}


恢复操作设置相同
注释:步骤1-3:默认是1-1,就是从1开始到1结束,一旦故障发生,就执行sendmail.sh脚本发送告警邮件给你设置的用户群组或用户(我上面只添加了Admin用户),如果故障持续了一个小时也没解决,它也只执行一次,如果是1-0,0表示无限次,发送间隔就是步骤持续时间60s,就会发送60封邮件,显然是不合理的。
Web端配置完毕
4、 编写sendmail.sh脚本
注意你在zabbix-server的配置文件中设置的告警脚本存放路径:

我这里选择了默认,没做修改,所以sendmail.sh脚本必须放在此路径下面
脚本内容如下(记得+X权限):

#!/bin/sh
export.UTF-8
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
touch /tmp/mailtmp.txt
chown zabbix.zabbix /tmp/mailtmp.txt

5、 验证测试
在zabbix server端停掉zabbix-agent,看能否收到告警邮件


恢复邮件:

zabbix邮件告警已完成
ending.....