mailx配置TSL发送邮件 整体流程 1 配置mialx发送外部邮件到qq邮箱 2 配置zabbix引用邮件 需要做zabbix自动报警 于是想到了mailx作为客户端,使用SMTP发送邮件;测试了半天才发现的阿里为了防止滥发邮件,把出口的25端 口给封了,封了!然后现在摆在面前的只有2条路,1、申请阿里云解封;2、使用TSL加密协议,也就是465端口; 出于服务器安全考虑,这里使用465端口发送 进入正题: 一、配置mailx使用SMTP发送邮件: 1、安装mailx;这里直接使用yum install mailx -y 进行安装即可; maiLx -v 可以查看版本,好像需要12.0版本以上的才支持配置外部邮件。 2、在/etc/mail.rc配置文件中,在最后面输入以下内容:auth-passwd 不要填写密码,填授权码 set [email protected] set smtp=smtp.163.com set [email protected] set smtp-auth-password= passwd set smtp-auth=login qq邮箱的配置 1、邮箱需要开启SMTP功能,每个邮箱的开启方法都大同小异; 2、现在大部分邮箱使用SMTP会让你启动一个授权码来代替邮箱密码 具体各个邮箱开启授权码的方式可以直接百度; 测试是否发送成功: mailx -s "邮箱测试" [email protected] < message_file 测试邮件一旦成功,收件箱会马上收到邮件,如果没有收到,则等一会可以看到shell界面的错误提示; 上面配置的是简单的使用25端口的SMTP发送邮件的功能,一般情况下我们使用这个就足够了,这个办法 在网上也很多配置说明,这里就不再浪费时间了,下面我们讲重点,使用TSL发送邮件; 前面说了,阿里云把25端口封了,去申请解封也比较麻烦,于是就想到了用TSL方式,绕过25端口发送邮件; TSL也就是使用SSL加密的方式,使用465或者其他端口来发送邮件,现在大部分邮箱都支持SSL,具体SSL的端口 地址,也可以查百度,这里是以126邮箱为准,126邮箱使用的是465或者994端口; 下面是详细的配置过程: 1、软件要求:openssl、mailx 12.0以上; 2、既然使用的是SSL协议,那当然是要有证书的了,下面是获取证书的操作; mkdir -p /zabbix/ .certs/ echo -n | openssl s_client -connect smtp.qq.com:465 | sed - ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs /qq .crt certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs /qq .crt certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs /qq .crt 为了防止出现前文所说的发送邮件警告提示,还需要进入邮箱SSL证书存放目录/root/.certs里执行如下命令: certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt 返回如下提示即可: **Notice: Trust flag u is set automatically if the private key is present.** 这是为了信任证书的标记操作。 至此,已经完成了mailx结合QQ邮箱发送系统邮件的部署了,通过命令行发送测试邮件试试吧: 按照上面操作,只要不报错,就是正常的,我们会在/root/.certs下面看到几个证书文件 3、证书配置好了,下面我们就要来配置mail.rc配置文件了,和最开始的不同,这里我们就需要配置和TSL相关的东西了 set [email protected] set smtp=smtps://smtp.qq.com:465 set [email protected] set smtp-auth-password=******************* ## 你在邮箱生成的授权码 set smtp-auth=login set ssl-verify=ignore set nss-config-dir=/home/zabbix/.certs 其实就多了几个配置stmp前面加了stmps://指定协议类型,后面加上端口号; 启动ssl协议 ,下面指定ssl证书所在目录,就这样。 配置OK了之后,测试发送邮件; 测试能收到邮件就OK,说明发送没问题,至于具体会出现什么报错,可以根据报错的内容进行谷歌; 我这里在发送邮件的时候会提示一个证书不信任的问题,因为不影响正常发送邮件,所以选择忽略; 关于其他类型的邮箱这里没有做测试,QQ邮箱据说比这个好简单。其他的深入研究这里因为时间关系,没有太多的 技术含量,只是在查找资料的过程中,发现没有一个完整的案例,特意将自己的操作过程写下来; 参考文章:http://irow10.blog.51cto.com/2425361/1812638/ https://sourceforge.net/p/nail/mailman/message/30263940/ http://baijiahao.baidu.com/s?id=1587401158046300905&wfr=spider&for=pc
邮件可正常发送了,接下来配置zabbix通过触发器调用报警
步骤 1 、修改 zabbix_server.conf 添加一行指定报警脚本位置的命令 AlertScriptsPath=/alidata/server/zabbix/share/zabbix/alertscripts
2、写报警邮件 echo "$3" | mail -s "$2" "$1" 就这一行命令,$3 是内容 $2是标题, $1s是收件人。 3、添加媒体 名称随便起,脚本名称指定刚才写的那个脚本名称 4、指定用户使用该媒体发送邮件
5、创建报警动作
报警图片 ,过程分析,阿里云不支持25端口发邮件,所以用TLS 465 端口,一定要给zabbix用户配置证书,我以前配置给root了不能发送的,还要注意给zabbix用户发送邮件的权限,确定邮件可以正常发送好,再来解决调用问题,脚本可以使用shell也可以使用python发送邮件可以用脚本也可以在web控制台配置,不过控制台的我没有试。 web界面引用脚本的配置流程是 创建媒体>用户引用媒体>创建动作,在创建动作界面也出现了问题,因为不是特别会zabbix 动作设置,就创建动作当zabbix错误级别达到problem就报警。创建完成后可以关闭agentd 或者修改密码什么的,就是让你触发器的阈值触发,测试是否成功, [email protected] 有问题的可以问我的。 |
zabbix3.4 需要配置动作action 在里面指定触发报警的条件,如触发器状态到达average 就报警,报警可以调用媒体发送邮件 |