频道栏目
首页 > 资讯 > Linux > 正文

Linux CentOS7 Zabbix邮件报警 通过QQ企业邮箱发送邮件的问题解决方案

18-06-27        来源:[db:作者]  
收藏   我要投稿

环境

CentOS 7+QQ个人邮箱: smtp..qq.com(QQ企业邮箱: smtp.exmail.qq.com)

#POP3/SMTP协议

接收邮件服务器:pop.exmail.qq.com ,使用SSL,端口号995

发送邮件服务器:smtp.exmail.qq.com ,使用SSL,端口号465

#海外用户可使用以下服务器

接收邮件服务器:hwpop.exmail.qq.com ,使用SSL,端口号995

发送邮件服务器:hwsmtp.exmail.qq.com ,使用SSL,端口号465

常用命令:

查看邮件日志:vi /var/log/maillog

配置邮件:vi /etc/mail.rc

编辑主机地址:vi /etc/hosts

发送邮件测试:

命令行: mail -v -s "title" addressee ,回车后输入内容按Ctrl+D发送邮件.

管道符:

echo "mail main content" | mail -v -s "title" addressee

echo "mail content" | mail -s "title" addressee

文件内容作为邮件内容: mail -v -s "title" addressee < /test.txt

步骤

1.安装软件包

yum -y install mailx

ln -s /bin/mailx /bin/mail

chown -R zabbix.zabbix /bin/mail

2.配置邮件(编辑 /etc/mail.rc)

本次测试使用的是个人QQ邮箱

vim /etc/mail.rc

#使用SSL的方式发送邮件 增加如下关于SSL的配置

set nss-config-dir=/etc/pki/nssdb/

set smtp-user-starttls

set ssl-verify=ignore

set from=2725892658@qq.com

set smtp=smtps://smtp.qq.com:465

set smtp-auth-user=2725892658@qq.com

set smtp-auth-password=fhtohpsyjaowdchc

set smtp-auth=login

说明:

nss-config-dir是存放证书的目录,需创建生成ssl证书

mkdir -p /etc/pki/nssdb/

cd /etc/pki/nssdb

#生成证书

echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/pki/nssdb/qq.crt

certutil -A -n "GeoTrust SSL CA" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/qq.crt

certutil -A -n "GeoTrust Global CA" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/qq.crt

certutil -L -d /etc/pki/nssdb/

certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt #认证

from是发送的邮件地址

smtp是发生的外部smtp服务器的地址

smtp-auth-user是外部smtp服务器认证的用户名

smtp-auth-password是外部smtp服务器认证的用户密码

smtp-auth是邮件认证的方式

根据QQ邮件服务规则,所以只能采用SSL / 465 发送邮件,注意smtp的配置格式:

set smtp=smtps://smtp.exmail.qq.com:465

3.测试mailx配置是否有问题

echo test | mail -v -s " test" test@qq.com #此邮箱为收件箱

测试发送成功,结果如下:

[root@localhost ~]# mail -v -s "theme" test@qq.com

nihao #输入邮件正文,Ctrl+D发送

EOT

Resolving host smtp.qq.com . . . done.

Connecting to 183.232.93.144:465 . . . connected.

Comparing DNS name: "upload.mail.qq.com"

Comparing DNS name: "hwsmtp.exmail.qq.com"

Comparing DNS name: "hwimap.exmail.qq.com"

Comparing DNS name: "cloudmx.qq.com"

Comparing DNS name: "imap.exmail.qq.com"

Comparing DNS name: "hwpop.exmail.qq.com"

Comparing DNS name: "smtp.qq.com"

SSL parameters: cipher=AES-256, keysize=256, secretkeysize=256,

issuer=CN=GeoTrust SSL CA - G3,O=GeoTrust Inc.,C=US

subject=CN=pop.qq.com,OU=R&D,O=Shenzhen Tencent Computer Systems Company Limited,L=Shenzhen,ST=Guangdong,C=CN

220 smtp.qq.com Esmtp QQ Mail Server

>>> EHLO localhost

250-smtp.qq.com

250-PIPELINING

250-SIZE 73400320

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN

250-MAILCOMPRESS

250 8BITMIME

>>> AUTH LOGIN

334 VXNlcm5hbWU6

>>> MjcyNTg5MjY1OEBxcS5jb20=

334 UGFzc3dvcmQ6

>>> Zmh0b2hwc3lqYW93ZGNoYw==

235 Authentication successful

>>> MAIL FROM:<2725892658@qq.com>

250 Ok

>>> RCPT TO:

250 Ok

>>> DATA

354 End data with .

>>> .

250 Ok: queued as

>>> QUIT

221 Bye

zabbix服务器端编写邮件发送脚本

1.修改zabbix_server.conf配置文件,指定zabbix

vim /usr/local/zabbix/etc/zabbix_server.conf

#修改alertscripts为以下路径

AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts

2.创建邮件发送脚本

(1)在zabbix 2.x版本中,当有报警通知时,默认会传3个参数给脚本,它分别为是:

$1(发送给谁)

$2(发送标题)

$3(发送内容)。

例如发送邮件给test@qq.com,编辑如下脚本:

mkdir /usr/local/zabbix/alertscripts #创建脚本目录

vim /usr/local/zabbix/alertscripts/sendmail.sh #编辑脚本,以下为脚本内容

#!/bin/bash

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

(2)更改属主及赋予可执行权限

chown -R zabbix.zabbix /tmp/mailx.log

chmod +x /usr/local/zabbix/alertscripts/mailx.sh

chown -R zabbix.zabbix /usr/local/zabbix/

(3)测试邮件发送脚本

/usr/local/zabbix/alertscripts/sendmail.sh test@qq.com "测试邮件标题" "测试邮件内容"

但从zabbix 3.0之后,可以自定义参数了,所以不写参数,它是不会传参数给脚本的,需要注意:

vim /etc/zabbix/zabbix_server.conf

#修改alertscripts为以下路径

AlertScriptsPath=/usr/local/zabbix/alertscripts

#重启zabbix服务

service zabbix_server restart

zabbix后台配置

Administration–>Media types–>Create media type:

管理–>报警媒介类型–>创建媒体类型

创建媒体类型

Name(名称):媒介类型名称。

Type(类型):介质类型。

Script name:脚本名称(需要先创建AlertScriptsPath路径,sendmail.sh脚本放在这个目录下,写绝路路径没用)

脚本参数:添加以下3个参数:,分别对应sendmail.sh脚本需要的3个参数:收件人地址、邮件主题、邮件内容。

{ALERT.SENDTO} #收件人地址

{ALERT.SUBJECT} #邮件主题

{ALERT.MESSAGE} #邮件内容

如果在3.0中不添加这三个参数会报错,因为在3.0以后zabbix允许自定义参数了,所以不会默认传递参数,在2.0的时候会默认传递三个参数,所以在3.0如果不写这三个参数会报错。

4.2、给用户添加报警媒介

在这以Admin用户为例 管理—》用户—》点击Admin

 

点击Admin

4.3、创建动作

填写动作选项

除了自己填写一个名称以外,其余的都默认就好了。当然也可以修改成中文:参考如下

默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!

默认信息:

告警主机:{HOSTNAME1}

告警时间:{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}已恢复!

恢复信息:

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE}{EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

已启用:打钩

填写条件选项

填写操作详细信息

解释:默认的步骤是1-1,也即是从1开始到1结束。一旦故障发生,就是执行sendEmail.sh脚本发生报警邮件给Admin用户和zabbix administrator组。假如故障持续了1个小时,它也只发送一次。如果改成1-0,0是表示不限制.无限发送间隔就是默认持续时间60秒。那么一个小时,就会发送60封邮件。

到这我们的邮件报警配置就完成了,这是只要我们设置的触发器触发,就会自动给我发送报警邮件。

相关TAG标签
上一篇:spark资源调度和linux安装spark和spark算子补充等实例教程
下一篇:思科CISCO防火墙ASA5510重置密码
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站