原始问题背景:bash
前几天运维同事忽然发现zabbix监控上面再也不发送邮件了,而zabbix的监控界面状态都是可以显示出来。由于以前出现过相似的问题,估计是163邮箱的问题,因而登录用于告警的邮箱,直接经过网页发送邮件也一样报错,估计是邮件防垃圾服务进行了限制,须要等到次日才能恢复(次日确实恢复正常),可是当天若是须要继续使用zabbix的邮箱监控的话,只能经过更换告警邮箱。运维
因而配置了新的邮箱qixin_monitor@163.com用于告警。ide
新问题以下测试
[root@zabbix_master ~]# tail -n 5 /etc/mail.rc //查看mail.rc的邮箱配置 #setting for zabbix set from=qixin_monitor@163.com smtp=smtp.163.com set smtp-auth-user=qixin_monitor smtp-auth-password=test_haha16 set smtp-auth=login [root@zabbix_master ~]# echo “mail content”|mail -s test 17701754487@163.com [root@zabbix_master ~]# smtp-server: 550 User has no permission //550报错 "/root/dead.letter" 11/316 . . . message not sent.
报错显示用户没有权限,而以前的邮箱clovemfeng@163.com倒是OK的编码
1. 查找两个邮箱的配置spa
发现两个邮箱的POP3/SMTP/IMAP的状态不一致,因而开通qixin_monitor@163.com的客户端受权密码。3d
2. 开通客户端受权密码code
该步骤是须要手机号码验证并绑定手机的orm
假设其客户端受权密码为:fdfdterefcstewrere
server
3. 测试邮箱发送
[root@zabbix_master ~]# echo “mail content”|mail -s test 17701754487@163.com
[root@zabbix_master ~]# smtp-server: 535 Error: authentication failed
"/root/dead.letter" 11/316
. . . message not sent.
发现居然报535错误,用户名与密码验证失败。
4. 手动测试密码
既然经过mail命令直接发送有问题,因而笔者作了以下几件事情:
(1)经过telnet命令验证用户名跟密码
[root@zabbix_master ~]# telnet smtp.163.com 25
Trying 220.181.12.13...
Connected to smtp.163.com.
Escape character is '^]'.
220 163.com Anti-spam GT for Coremail System (163com[20141201])
HELO 163.COM
250 OK
AUTH LOGIN
334 dXNlcm5hbWU6
cWl4aW5fbW9uaXRvcg==
334 UGFzc3dvcmQ6
UWl4aW5AMTIz
535 Error: authentication failed
(其中用户名跟密码均作了base64编码转换,echo -n username/password |base64)
(2)测试原来的clovemfeng@163.com
发现居然能够成功登录。
[root@zabbix_master ~]# telnet smtp.163.com 25
Trying 220.181.12.13...
Connected to smtp.163.com.
Escape character is '^]'.
220 163.com Anti-spam GT for Coremail System (163com[20141201])
HELO 163.COM
250 OK
AUTH LOGIN
334 dXNlcm5hbWU6
Y2xvdmVtZmVuZw==
334 UGFzc3dvcmQ6
UXhAbW9uaXRvciMxMjM=
235 Authentication successful
(3)继续尝试?
这两个帐号有什么不一样?初步看来,用户名跟密码不同!! 用户名没法修改,那么我把密码改为同样的总行了吧?
可是结果仍旧是535 Error: authentication failed,后来甚至注册了一个用户名没有特殊字符,可是仍是失败。
5. 回归邮箱设置检查
继续比对新老帐号的区别,登录163.com网页邮箱继续查看,发现以下区别
上图是今天刚刚开通SMTP/POP3/IMAP功能的邮箱配置,生成了客户端受权密码。
这个是以前注册邮箱,也就是clovemfeng@163.com的配置,开通了SMTP服务,可是并无开通客户端受权密码,由于并无使用期IMAP服务。
结论:
也就是说,之前注册的邮箱是不须要什么客户端受权密码的,而新注册的却须要这个东西。
那么,咱们无论经过mail -s 也好,telnet smtp.163.com也好,角色都是客户端,那么尝试下将客户端受权密码做为配置密码试试?
因而乎,居然成功了!
[root@zabbix_master ~]# telnet smtp.163.com 25
Trying 220.181.12.13...
Connected to smtp.163.com.
Escape character is '^]'.
220 163.com Anti-spam GT for Coremail System (163com[20141201])
EHLO 163.COM
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrFvEOrUCa0xDrUUUUj
250-STARTTLS
250 8BITMIME
AUTH LOGIN
334 dXNlcm5hbWU6
cWl4aW5fbW9uaXRvcg==
334 UGFzc3dvcmQ6
aXB2d2RjZW1oZGp5dnV0ZQ==
235 Authentication successful
问题,解了~最终配置以下,其实也就是将smtp-auth-password的值从实际密码修改为了客户端受权密码。
[root@zabbix_master ~]# tail -n 5 /etc/mail.rc
#setting for zabbix
set from=qixin_monitor@163.com smtp=smtp.163.com
set smtp-auth-user=qixin_monitor smtp-auth-password=fdfdterefcstewrere
set smtp-auth=login