6 月 6 日之后,命令行 sendmail 停止运行

6 月 6 日之后,命令行 sendmail 停止运行

自 6 月 6 日起,所有向我的 gmail 帐户发送邮件的脚本都停止工作,Thunderbird 反复要求输入我的密码,而该密码在过去一周内没有改变。我正在运行 Ubuntu 20.04、5.13.0-44-generic #49~20.04.1-Ubuntu SMP Wed May 18 18:44:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux。我已启用两步验证,并至少检查了两次我的 Google 设置。我现在已经修复了 Thunderbird,使用以下信息:https://support.mozilla.org/bm/questions/1369886 我正在使用 sendmail 提醒自己已运行的脚本(例如备份)。我已添加代码以将日志文件放在我的日志目录中,但仍然希望收到警报电子邮件。我使用这篇文章重新配置了 exim4,但这并没有解决问题:https://www.talk-about-it.ca/setting-up-exim4-with-gmail-and-2-factor-authentication/

6 月 10 日:突然间,我的收件箱中出现了大量由脚本生成的 Gmail 邮件。我刚刚将 exim4.config 中的密码更改为应用程序密码!太好了!感谢您的帮助。通过 Google 生成应用程序密码并将其插入到 /etc/exim4/exim4.conf.template 中就成功了。该密码位于以 client_send 开头的行中,大约第 1887 行。该行是:

客户端发送 = :[电子邮件保护]: '用户密码'

标记为已解决。

答案1

Google 宣布,5 月 30 日之后,任何非 Web 应用将无法使用仅密码身份验证来访问 Google 帐户。这意味着您无法再在 IMAP 或 SMTP 中使用密码。

至于 Thunderbird,您必须更改您的帐户配置以使用 OAuth2 身份验证而不是密码,这应该非常简单。

对于脚本,这取决于您使用的 MTA(邮件服务器)。我猜您使用的是 Exim(没有“exm4”这种东西,但有“exim4”——您可能指的是这个),其配置如下:提交(不是发送) 邮件发送到您的 Gmail 帐户 - 因此需要进行身份验证。

您有多种选择。

  1. 如果可以将 Exim 配置为使用 OAuth2(我不知道 - 您必须在网上搜索信息),您可以重新配置它,就像使用 Thunderbird 一样。

  2. 如果 Exim 不支持 OAuth2,您可以卸载它并安装另一个支持 OAuth2 的 MTA。我知道 Postfix 支持(尽管我从未配置过它)。

  3. 您可以将 Google 帐户切换为使用双重身份验证。然后,您将能够生成应用程序密码(只有启用了 2FA 的帐户才有可能)为您的 MTA。用生成的密码替换 MTA 配置中的正常密码。它应该像以前一样工作。

  4. 如果你只是从脚本向你的 Gmail 账户发送邮件,那么你实际上可能不需要提交完全没有。这是必需的,当你想中继通过 Google 发送给其他收件人的邮件,而不是将邮件发送到 Google 作为最终目的地。您只需发送像任何外部主机一样将邮件发送到 Gmail,无需任何身份验证即可发送到端口 25。这当然需要更改 MTA 的配置(您现在可能已将其配置为使用 Gmail 作为“智能主机”;将其重新配置为可自行发送邮件的独立站点)。

至于最后一个选项,Google 可能会拒绝该邮件或将其放入垃圾邮件文件夹。如果被拒绝,可能有两个原因:

  1. Google 不喜欢您发送邮件的机器的 IP 地址;认为它是垃圾邮件来源。您对此无能为力 - 您必须坚持提交(即前面的方法之一)。

  2. Google 发现您使用自己的 Gmail 地址作为“发件人:”发送邮件,但邮件并非来自 Google。您的机器不是 Gmail,因此不应以 Gmail 的名义发送邮件。

    在这种情况下,最好的选择是拥有一个正确注册的自己的域名,并使用该域名的电子邮件地址作为“发件人:”(该地址不需要真正起作用,即能够接收邮件;重要的是该域名的SPF 记录指定允许以该域名的名义发送邮件的机器的 IP 地址)。如果您没有自己的域名,则必须尝试使用​​虚构的“发件人:”地址(例如[email protected]),看看 Google 是否会接受它们(也许将这些地址添加为 Gmail 帐户的别名会有所帮助)。

如果 Google 接受了您的邮件,但将其放入垃圾邮件文件夹,请记住定期检查并在每封邮件上点击“这不是垃圾邮件”。最终,Google 可能会停止将您的邮件放入垃圾邮件。如果没有,请在您的 Gmail 帐户上创建一个过滤规则,告诉它对您使用的发件人地址“永远不要发送到垃圾邮件”。

虽然从描述来看最后一个选项似乎最复杂,但实际上它是最简单的一个 :),只要 Google 接受您的邮件即可。只需进行一些实验即可检查它是否有效。

相关内容