如何在 Debian 上正確配置 exim4,以便我可以使用sendmail -t
通過我的 office365 帳戶發送郵件?
我正在使用 Debian 拉伸(9.4)。
我有一個office365帳戶。
使用 Evolution,我可以通過 POP3 成功下載郵件,還可以使用 Evolution“發送電子郵件”首選項發送郵件:
Server: smtp.office365.com Port: 587 Server requires authentication TICKED Encryption method: STARTTLS after connecting Authentication: Login Username: <myid@mydomain>
Evolution 在我第一次使用它時提示我輸入我的 office365 密碼,此後一直很好。
那太好了。然而:
我還有一些 crontab 腳本,它們偶爾會通過此處
sendmail -t
所述以程式方式發送電子郵件。該軟體包被配置為“智能主機發送的郵件;沒有本地郵件”和傳出智能主機到. 我也有包含一行。exim4-config``smtp.office365.com::587``/etc/exim4/passwd.client``smtp.office365.com:<myid@mydomain>:<mypassword>
直到大約一個月前(我認為他們在 6 月的第一周的某個時候停止工作),這些腳本通過
smtp.office365.com
絕對正常的方式發送電子郵件。但是,從那時起,對於每封嘗試發送的電子郵件,/var/log/exim4/mainlog
現在都會顯示一堆錯誤消息,如下所示:2018-06-12 22:04:37 XXXXXX-XXXXXX-XX <= <> R=XXXXXX-XXXXXX-XX U=Debian-exim P=local S=2270 2018-06-12 22:04:42 XXXXXX-XXXXXX-XX H=outlook.ms-acdc.office.com [40.100.174.194] TLS error on connection (recv): The TLS connection was non-properly terminated. 2018-06-12 22:04:42 XXXXXX-XXXXXX-XX H=outlook.ms-acdc.office.com [40.100.174.194] TLS error on connection (send): The specified session has been invalidated for some reason. 2018-06-12 22:04:42 XXXXXX-XXXXXX-XX ** <myid@mydomain> R=hub_user_smarthost T=remote_smtp_smarthost H=outlook.ms-acdc.office.com [40.100.174.194] X=TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256 CV=no DN="C=US,ST=Washington,L=Redmond,O=Microsoft Corporation,CN=outlook.com": SMTP error from remote mail server after pipelined MAIL FROM:<> SIZE=3347: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [LO2P265CA0067.GBRP265.PROD.OUTLOOK.COM] 2018-06-12 22:04:42 XXXXXX-XXXXXX-XX Frozen (delivery error message)
我不清楚在微軟端或我端是否發生了一些變化(我的機器是 vanilla Debian stable amd64;我不記得在事情停止工作的時候是否應用了任何相關的安全更新)。我懷疑微軟可能以某種方式加強了身份驗證,我需要更改 exim4 配置中的某些內容來處理它(我會重申,Evolution 一直在通過同一
smtp.office365.com:587
渠道發送郵件而沒有問題)。sendmail -t
對於如何使該方法再次起作用的任何建議,我感到困惑和感激。
我已恢復系統的
sendmail -t
功能:研究
/etc/exim4/passwd.client
in部分man exim4_passwd_client
讓我意識到,僅僅因為我的外發郵件是通過 發送的smtp.office365.com
,列出該 DNS 名稱passwd.client
實際上可能還不夠……在此過程中涉及一些反向 DNS 查找。Doingping smtp.office365.com
實際上會從名為outlook.ms-acdc.office.com
. 所以我更新了我的/etc/exim4/passwd.client
文件以包含一行*.office.com:<myid@mydomain>:<mypassword>
現在一切都恢復正常了。(我之前註意到我確實
*.office365.com
在passwd.client
文件中也有一行;我的猜測是,在 6 月初,MS 的設置發生了一些變化,影響了 exim4 是否認為它正在連接到 office365.com 或 office.com 域下的 SMTP 伺服器) .當然,現在的問題是,在微軟決定對以前稱為 Hotmail 的服務進行另一個更名並且所有 DNS 名稱再次更改之前,還有多長時間 :^)
2021-06-10 更新:在過去的一周裡,我使用腳本的 sendmail 似乎變得不可靠(不是完全失敗;有時還是會通過)。
ping smtp.office365.com
現在得到回复lhr-mvp.trafficmanager.net
;我認為,在文件中添加*.trafficmanager.net:<myid@mydomain>:<mypassword>
一行/etc/exim4/passwd.client
似乎已經解決了這個問題。顯然trafficmanager.net
是 Azure 基礎架構的一部分;我猜微軟正在遷移到那個。當新配置由於某種原因回滾時,可能會發送有效的腳本發送電子郵件。