强制 cron 电子邮件地址从 [重复] 发送

强制 cron 电子邮件地址从 [重复] 发送

我在 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]

相关内容