Debian

如何在 Debian 上正確配置 exim4,以便我可以使用sendmail -t 通過我的 office365 帳戶發送郵件?

  • June 10, 2021

我正在使用 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.clientin部分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.compasswd.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 基礎架構的一部分;我猜微軟正在遷移到那個。當新配置由於某種原因回滾時,可能會發送有效的腳本發送電子郵件。

引用自:https://unix.stackexchange.com/questions/449401