自 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 行。该行是:
client_send =:用户名@gmail.com:'用户密码'
标记为已解决。
谷歌宣布,在 5 月 30 日之后,将无法在访问谷歌帐户的任何非网络应用程序中使用仅密码身份验证。这意味着您不能再在 IMAP 和 SMTP 中使用您的密码。
至于 Thunderbird,您必须更改您的帐户配置以使用 OAuth2 身份验证而不是密码,这应该很简单。
对于脚本,这取决于您使用的 MTA(邮件服务器)。我猜您在将邮件提交(而不是发送)到您的 Gmail 帐户的配置中使用 Exim(没有“exm4”之类的东西,但有“exim4”-您可能是这个意思)-因此需要进行身份验证。
你有几个选择。
如果可以将 Exim 配置为使用 OAuth2(我不知道 - 您必须在网上搜索信息),您可以重新配置它,就像使用 Thunderbird 一样。
如果 Exim 不支持 OAuth2,您可以将其卸载并安装另一个支持 OAuth2 的 MTA。我知道 Postfix 可以(尽管我从未配置过它)。
您可以切换您的 Google 帐户以使用 2 因素身份验证。然后,您将能够为您的 MTA 生成应用程序密码(仅适用于打开 2FA 的帐户)。用生成的密码替换 MTA 配置中的普通密码。它应该像以前一样工作。
如果您只是将邮件从脚本发送到您的 Gmail 帐户,那么您实际上可能根本不需要提交。当您想通过 Google 将邮件转发给其他收件人时,这是必需的,而不是在将邮件作为最终目的地发送到 Google 时。您可以像任何外部主机一样将邮件发送到 Gmail,无需任何身份验证即可发送到端口 25 。这当然需要更改您的 MTA 的配置(您现在可能已将其配置为使用 Gmail 作为“智能主机”;将其重新配置为独立发送邮件的站点)。
至于最后一个选项,谷歌有可能会拒绝邮件或将其放入垃圾邮件文件夹。如果被拒绝,可能有两个原因:
Google 不喜欢您发送邮件的机器的 IP 地址;认为它是垃圾邮件来源。您对此无能为力 - 您必须坚持提交(即以前的方法之一)。
Google 发现您使用自己的 Gmail 地址作为“发件人:”发送邮件,但邮件并非来自 Google。您的机器不是 Gmail,所以它不应该以 Gmail 的名义发送邮件。
在这种情况下,最好的选择是拥有一个正确注册的自己的域并使用来自该域的电子邮件地址作为“发件人:”(该地址不需要实际工作,即能够接收邮件;重要的是域的SPF 记录指定您的机器的 IP 地址允许以该域的名称发送邮件)。如果您没有自己的域,则必须尝试使用虚构的“发件人:”地址(例如。
[email protected]
)以查看 Google 是否会接受它们(也许将这些地址添加为您的 Gmail 帐户中的别名会有所帮助)。如果 Google 接受了您的邮件,但将其放入垃圾邮件文件夹,请记得定期检查并在您的每封邮件上单击“这不是垃圾邮件”。最终,Google 可能会停止将您的邮件放入垃圾邮件。如果没有,请在您的 Gmail 帐户上创建一个过滤规则,告诉它对于您使用的发件人地址“从不发送到垃圾邮件”。
虽然最后一个选项从描述中看起来最复杂,但实际上是最简单的一个 :),如果 Google 会接受您的邮件。它只需要一些实验来检查它是否会起作用。