我正在使用 Debian Stretch (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>
。
直到大约一个月前(我认为他们在六月第一周的某个时候停止工作),这些脚本通过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)
我不清楚微软端或我端是否发生了变化(我的机器是普通的 Debian stable amd64;我不记得在停止工作时是否应用了任何相关的安全更新)。我怀疑微软可能以某种方式加强了身份验证,我需要更改 exim4 配置中的某些内容来处理它(我会重申,Evolution 一直通过同一smtp.office365.com:587
通道发送邮件,没有出现任何问题)。我很困惑,也很感激任何关于如何让该sendmail -t
方法再次发挥作用的建议。
答案1
我已经恢复了系统的sendmail -t
功能:
/etc/exim4/passwd.client
研究in的部分man exim4_passwd_client
让我意识到,仅仅因为我的外发邮件是通过 发送的smtp.office365.com
,在 in 中列出 DNS 名称passwd.client
实际上可能还不够……该过程中涉及一些反向 DNS 查找。实际上,做事ping 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 基础设施的一部分;我猜微软正在向这个方向迁移。当新配置因某种原因回滚时,有时可能会发送有效的脚本发送电子邮件。