ssmtp 不会发送 cron 电子邮件

ssmtp 不会发送 cron 电子邮件

我不明白为什么我的 AWS EC2 ( Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)) 上的 cron 似乎无法通过 sSmtp 将电子邮件发送到 AWS SES。

这有效:我收到了来自本地用户的电子邮件。echo "test" | ssmtp [email protected]

这有效:我收到了一封来自 root 的电子邮件。echo "test" | sudo ssmtp [email protected]

但是,当 cron 运行并尝试发送电子邮件时,我什么也没收到,并且系统日志中会出现以下内容:sSMTP[14608]: 554 Transaction failed: Missing final '@domain'或有时:554 Transaction failed: User name is missing: 'Cron Daemon <root>'

cron 试图以谁的身份发送电子邮件?我原以为是root

在 /etc/crontab 中:

MAILTO="[email protected]"

(我也尝试过MAILTO=root

/etc/ssmtp/revaliases:

root:[email protected]:email-smtp.us-east-1.amazonaws.com:465
me:[email protected]:email-smtp.us-east-1.amazonaws.com:465

/etc/ssmtp/ssmtp.conf:

[email protected]
mailhub=email-smtp.us-east-1.amazonaws.com:465
rewriteDomain=myemail.com
hostname=myemail.com
#UseSTARTTLS=YES
UseTLS=YES
AuthUser=XXXXXXXXXXXXXXXXX
AuthPass=XXXXXXXXXXXXXXXXX
AuthMethod=LOGIN
FromLineOverride=YES

根据一些谷歌搜索,它MAILFROM=似乎在 Ubuntu 上不起作用,并且更改它似乎没有效果(从根 cron 和我的本地用户 cron)。

我感到困惑和迷茫。sSmtp 似乎没有任何调试选项来帮助了解 cron 电子邮件来自谁、发往谁以及查看标题。

该服务器的安装非常小,我不想postfix仅仅为了每天发送 10 封电子邮件(主要是日志文件)而安装。

谢谢!

答案1

因此,afaict SES 要求“发件人”和“收件人”字段中都包含域。

虽然MAILFROM=Ubuntu 的 cron 不支持,FromLineOverride=NO但您可以在 ssmtp.conf 中设置,ssmtp 将强制“发件人”地址为“root@hostname”,而不仅仅是“root”。这样就可以处理“发件人”地址。

现在 - 您还需要确保“收件人”地址有域名(默认情况下也只是“root”)。可以通过[email protected]在 /etc/crontab 中添加一行来解决此问题。

这解决了我的“554 事务失败:缺少最后的‘@domain’”问题。我没有遇到您的“事务失败:缺少用户名:‘Cron Daemon’”消息,因此我无法对此发表评论。

所有这些的关键点是Debug=YES在 ssmtp.conf 中将一堆信息写入系统日志。

相关内容