我想使用常规mailx
套餐的/bin/mail
应用程序发送电子邮件警报:
echo "Testing alerts from prod server" | mail -s "Example email" [email protected]
我控制 mydomain.com 的 DNS。 mydomain.com 还使用 Google Apps。
Google Apps 通常不会从随机 SMTP 客户端传送电子邮件。让 Google 应用“信任”我的 Unix 服务器发送邮件的最佳方式是什么?
答案1
您可能需要设置智能主机的身份验证才能发送电子邮件。在这种情况下,智能主机可能是某个 Google 服务器。
粗略地说,它的工作方式是
(authentication)
mail -----------> local mailserver ----------------> remote smarthost
也就是说,本地邮件服务器接收来自客户端程序(例如mail
)的消息,然后进行身份验证并传递到远程智能主机。
您没有说明您在本地使用哪个邮件服务器,但我将使用 Exim 的示例。对于 Exim,您需要向/etc/exim4/passwd.client
密码文件添加一个条目。这是该文件的默认状态。
# password file used when the local exim is authenticating to a remote
# host as a client.
#
# see exim4_passwd_client(5) for more documentation
#
# Example:
### target.mail.server.example:login:password
根据评论,man 5 exim4_passwd_client
有更多信息。
我认为大多数发行版默认都会设置本地邮件服务器,尽管使用的服务器可能有所不同。 Debian 和 Ubuntu 可能默认设置 Exim。请注意,即使安装了邮件服务器,默认情况下也可能不会将其设置为连接到智能主机。
如果未安装本地邮件服务器,您应该安装一个。有些程序可以绕过本地邮件服务器进行身份验证并直接发送到智能主机,但这不是一个好主意。
答案2
我必须激活所描述的“安全性较低的应用程序”这里使其接受电子邮件。但我使用的是普通 Gmail 帐户。
答案3
很抱歉重新提出这样一个老问题,但它仍然出现在该问题的搜索结果中。
我发现,谷歌现在正在执行完整的“设备管理”,因此您想要登录的每个设备都必须访问:
https://accounts.google.com/DisplayUnlockCaptcha
问题是我的 exim4 服务器上没有 X11 设置,并且我无法找出神奇的 CURL 公式来转到链接并提取当您按该链接上的“继续”按钮时动态生成的令牌网址。
因此,即使我在 exim4 中配置了 TLS/mta 支持(Google 不再支持 SSH/smtps),要连接到 smtp.google.com:587,它也不会接受我的用户名/密码,而无需执行以下操作:
https://myaccount.google.com/lesssecureapps?utm_source=google-account&utm_medium=web
启用“不太安全的应用程序”的访问。
我什至通过以下方式手动测试:
openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf
发行:
EHLO {servername}
AUTH PLAIN {base64 encoded combo username password string}
每次我收到错误时:
535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials l22sm5213582ywl.68 - gsmtp
您可以使用以下命令获取 Base64 编码的字符串:
echo -ne "\0{login_email}\0{login_password}"|base64
一旦我设置“启用不太安全的应用程序”,上面的示例就会返回:
235 2.7.0 Accepted
并且,exim4 同样开始工作。
谁能推荐一种 CLI 方式来访问验证码链接?