我在 AWS 上运行 Ubuntu,并使用他们的 SES(简单电子邮件服务)和 sSmtp 来发送电子邮件日志,因为这是服务器上唯一需要的电子邮件。
我已经发送了 ssmtp,一切正常,只是 cron 作业发送的电子邮件由于发件人:地址而被拒绝。SES 要求验证发件人:和收件人:电子邮件地址,但 cron 发送的电子邮件只是root
,而不是[email protected]
。
有没有办法设置 cron 用作发件人:地址的完整电子邮件地址,或者有没有办法让 ssmtp 在它只是一个没有域名的名称时重写发件人:?
我的 ssmtp.conf 如下所示:
[email protected]
mailhub=email-smtp.us-east-1.amazonaws.com:465
rewriteDomain=mydomain.com
hostname=mydomain.com
#UseSTARTTLS=YES
UseTLS=YES
AuthUser=XXXX
AuthPass=XXXX
AuthMethod=LOGIN
FromLineOverride=YES
谢谢。
答案1
cron 使用sendmail
命令发送邮件。通常邮件服务器会附加域名,因此在您的情况下 ssmtp 需要这样做。
我以前从未使用过 sSMTP,但它的发件人重写似乎很奇怪。我查看了源代码,发现有一个文件/etc/ssmtp/revaliases
。
该示例列出了以下内容:
# sSMTP aliases
#
# Format: local_account:outgoing_address:mailhub
#
# Example: root:[email protected]:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
就你的情况来说可能是:
root:[email protected]:email-smtp.us-east-1.amazonaws.com:465
答案2
由于似乎无法更改 Ubuntu 中 cron 发送的发件人地址,我找到了一个 hack 解决方案。这可能不是最好的方法,但似乎确实有效。
安装 ssmtp 后,它会创建一个从/usr/sbin/sendmail
到 的链接/usr/sbin/ssmtp
。我所做的就是删除该链接并创建一个包含以下内容的 sendmail 文件:
sed "s/From: root /From: [email protected] /" | /usr/sbin/ssmtp $*
现在任何从 发送的邮件root
都将被重写到[email protected]