Gmail工作区/Gmail套件使用msmtp从服务器发送电子邮件
我们正在迁移到Gmail的过程中,以便能够委托管理一个邮件服务器。
我们以前在我们的服务器上使用ssmtp来发送邮件,使用我们自己的邮件服务器(Zimbra)。
我现在已经设法让Gmail工作区工作,并想分享一些关于如何做到这一点的指导。
这是在Debian / Ubuntu系统上完成的。
设置双因素认证
登录到你的谷歌账户。
点击安全选项卡,向下滚动到2步验证,启用它。
你可能需要向谷歌提供你的手机号码,或者在这里选择其他选项。
设置一个应用程序的密码
点击2步验证下方的 "应用程序密码"。
谷歌将要求你再次登录。
(注意我已经设置了一个应用程序的密码,你的屏幕在开始时可能看起来有点不同)
点击选择应用程序,并选择其他(自定义名称)。
你可以输入任何你喜欢的名字--它是供你参考的。例如:
点击进入 生成
将会出现一个弹出窗口。你的应用程序密码将只显示这一次,所以一定要复制它。
注意,密码只是显示为四段,每段四个字符,以便于阅读。 将没有空格 在实际的密码中。
在这种情况下,密码是
lwsznhkychasbbrh
单击 "完成"。
切换到msmtp
ssmtp不再被维护,也可能会有连接到Gmail的问题。
/var/log/syslog:Oct 15 09:52:22 Athena sSMTP[19076]。使用ECDHE_ECDSA_CHACHA20_POLY1305的SSL连接
/var/log/syslog:Oct 15 09:52:22 Athena sSMTP[19076]。授权失败(535 5.7.8 https://support.google.com/mail/?p=BadCredentials ************.79 - GSMtp)
ssmtp: 授权失败 (535 5.7.8) https://support.google.com/mail/?p=BadCredentials *************.4 - gsmtp)
显然,ECDHE的认证部分 对较新系统的一些用户来说可能是个问题.
变通方法是切换到 ǞǞǞ.
移除ssmtp(所有命令以root身份运行)。
apt-get purge ssmtp
安装msmtp
apt-get 安装 msmtp msmtp-mta
设置msmtp
nano /etc/msmtprc
投入以下数据。
违约
授权开
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log账户 Gmail
host smtp.gmail.com
端口587来自[email protected]
用户 [email protected]
密码 lwsznhkychasbbrh账户默认:Gmail
改变你的登录数据(从、用户和密码--我已经采取了 lwsznhkychasbbrh 来自上面的例子)。
请注意,你不需要重启服务或类似的东西--访问数据将被用于服务器试图发送的下一封邮件。
使用 应用程序密码 上面生成的--你的账户密码将不起作用。
msmtp: 认证失败(方法PLAIN)。
msmtp: 服务器信息。534-5.7.9 需要特定的应用密码。了解更多信息请访问
msmtp: 服务器信息。534 5.7.9 https://support.google.com/mail/?p=InvalidSecondFactor *************.29 - GSMtp
msmtp: 无法发送邮件(账户默认来自/etc/msmtprc)。
此外,请注意,应用程序的密码应在字符之间没有空格的情况下输入(如上所述)。
保护这个文件(它包含登录数据!)。
chmod 600 /etc/msmtprc
启用更不安全的应用程序
https://admin.google.com/u/2/ac/security/lsa
不幸的是,你会 还有 需要使 不太安全的应用程序 在谷歌管理中对你的账户进行访问,否则你会继续得到同样的错误信息。
msmtp: 认证失败(方法PLAIN)。
msmtp: 服务器信息。535-5.7.8 用户名和密码不接受。了解更多信息请访问
msmtp: 服务器信息。535 5.7.8 https://support.google.com/mail/?p=BadCredentials **********.34 - GSMtp
msmtp: 无法发送邮件(账户默认来自/etc/msmtprc)。
将其改为 "允许用户管理他们对不太安全的应用程序的访问",并点击 拯救.
发送一个测试信息
如果一切工作正常,你现在可以发送一个测试信息。
echo 'test' | msmtp [email protected]
如果这个命令没有错误地返回,那么一切都会成功。
此外,如果你刷新你的应用程序密码视图,你会看到应用程序密码已经被使用("最后使用")。
(不过根据我的测试,这可能并不总是准确的)。
如果它能 不是 工作,你会得到类似于以下的输出。
msmtp: 认证失败(方法PLAIN)。
msmtp: 服务器信息。535-5.7.8 用户名和密码不接受。了解更多信息请访问
msmtp: 服务器信息。535 5.7.8 https://support.google.com/mail/?p=BadCredentials ***********.9 - GSMtp
msmtp: 无法发送邮件(账户默认来自/etc/msmtprc)。
注意:如果你使用上面看到的垃圾桶图标删除你的应用程序密码,也会出现这个错误。顺便说一下,这是应用密码的一个有用的功能:如果你怀疑有漏洞,你可以简单地删除应用密码,用另一个应用密码设置你的设备。
如果你继续收到这个错误,请检查你是否启用了不太安全的应用程序,正如我指示你做的那样(上文)。
注意二:你将在你的电子邮件账户中收到关于新创建的应用程序密码的信息。
注意三:你也会在你的发送文件夹中获得已发送的信息。
参考资料
- https://doc.ubuntu-fr.org/msmtp
- https://stackoverflow.com/questions/63560494/gmail-is-blocking-to-send-email-via-smtp
- https://www.getmailbird.com/setup/access-gmail-com-via-imap-smtp
- https://support.google.com/a/answer/176600?hl=en (这也提到了一个SMTP中继服务,可以作为一个替代方案)。
奖金
谷歌提到他们的 本页中的费率限制:
- SMTP中继服务每天有10.000个收件人(需要一个静态IP地址或有效的G套件用户登录)。
- Gmail的SMTP每天有2.000条信息