原始問題背景: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