我有一个新的 Ubuntu 18.04 系统,并希望mdadm
、smartd
等通过我的 gmail 帐户发送警告电子邮件。我已按照如何配置 Postfix 以通过我的 Gmail 帐户发送所有电子邮件?和如何在 Ubuntu 16.04 / 17.10 上配置 Postfix 以使用 Gmail SMTP,但我一直遇到身份验证失败的问题。我的 Gmail 帐户设置了双因素身份验证 (2FA)。这可能是一个因素吗?
答案1
正如乔治所说,2FA 确实是一个因素。我在下面写下了解决我的问题的完整程序:
安装软件包
sudo apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules
- 选择
Internet host
。 - 输入主机名(不必为互联网所知),例如
trillian.at.home
。
从谷歌获取应用密码
Google 允许您设置拥有自己密码的“应用程序”。此技术也适用于邮件中继。
- 访问您的应用密码页面 (https://security.google.com/settings/security/apppasswords)。
- 使用您的双重身份验证方法登录。
- 选择应用程序:
Mail
和设备:Other
。 - 给你的“应用程序”起一个名字,例如
mail relay from <hostname>
。 - 按
Generate
。 - 写下“应用程序”密码(16 个字符,无空格)。
存储应用密码
打开/创建密码文件:
sudo nano /etc/postfix/sasl/relay_passwd
将以下文本放入文件中:
[smtp.gmail.com]:587 [email protected]:APP-PASSWORD
其中 USERNAME 是您的 gmail 用户名,APP-PASSWORD 是 16 位应用程序密码。
创建哈希文件:
sudo postmap /etc/postfix/sasl/relay_passwd
确保只有 root 可以读取/写入密码文件:
sudo chown root:root /etc/postfix/sasl/relay_passwd /etc/postfix/sasl/relay_passwd.db
sudo chmod 0600 /etc/postfix/sasl/relay_passwd /etc/postfix/sasl/relay_passwd.db
创建证书文件
cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
配置 postfix
sudo nano /etc/postfix/main.cf
删除该relayhost
行并确保文件中包含以下行。
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/relay_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
测试
跑步
echo "Test email" | mail -s "Test" [email protected]
希望您的邮件已出现在 gmail 中。否则,请使用mailq
和tail -f /var/log/mail.log
进行调试。
设置 mdadm 和 smartd
如果测试电子邮件已到达,您现在可以设置mdadm
并smartd
。对于mdadm
,我使用以下行
MAILADDR [email protected]
在/etc/mdadm/mdadm.conf
我的 Gmail 收件箱中启用邮件过滤。同样,我使用文本
-m [email protected]
在 我 的DEVICESCAN
行 中/etc/smartd.conf
。
答案2
请关注指导使其正常工作,因为 2FA 会影响这些应用程序,但这里是摘要:
- 访问您的应用密码页面。您可能会被要求登录您的 Google 帐户。
- 在底部,单击“选择应用程序”,然后选择您正在使用的应用程序。
- 单击选择设备并选择您正在使用的设备。
- 选择生成。
- 按照说明在您的设备上输入应用程序密码(黄色栏中的 16 个字符的代码)。
- 选择完成。
完成后,您将不会再看到该应用密码。但是,您将看到已为其创建应用密码的应用和设备列表。
阅读更多:
https://duo.com/blog/bypassing-googles-two-factor-authentication
答案3
我可以按照 Ubuntu 22.04 上的上述说明使电子邮件正常工作,但有以下注意事项:
我无法创建证书文件(/etc/ssl/certs/thawte_Primary_Root_CA.pem 不存在)并且
我没有将“smtp_tls_CAfile = /etc/postfix/cacert.pem”添加到“/e/etc/postfix/main.cftc/postfix/main.cf”