参考自:https://blog.csdn.net/djhsun/article/details/78731683
#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" [email protected] #此邮箱为收件箱
测试发送成功,结果如下:
[root@localhost ~]# mail -v -s "theme" [email protected]
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:@139.com>
250 Ok
>>> DATA
354 End data with .
>>> .
250 Ok: queued as
>>> QUIT
221 Bye
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(发送内容)。
例如发送邮件给[email protected],编辑如下脚本:
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
Administration–>Media types–>Create media type:
管理–>报警媒介类型–>创建媒体类型
Name(名称):媒介类型名称。
Type(类型):介质类型。
Script name:脚本名称(需要先创建AlertScriptsPath路径,sendmail.sh脚本放在这个目录下,写绝路路径没用)
脚本参数:添加以下3个参数:,分别对应sendmail.sh脚本需要的3个参数:收件人地址、邮件主题、邮件内容。
{ALERT.SENDTO} #收件人地址
{ALERT.SUBJECT} #邮件主题
{ALERT.MESSAGE} #邮件内容