ssmtp 不会发送 cron 电子邮件

Rog*_*rat 4 cron amazon-web-services ssmtp

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

这有效:echo "test" | ssmtp my@myemail.com我从本地用户那里收到一封电子邮件。

这有效:echo "test" | sudo ssmtp my@myemail.com我收到一封来自 root 的电子邮件。

但是,当 cron 运行并尝试发送电子邮件时,我什么也没有得到,这出现在 syslogs:sSMTP[14608]: 554 Transaction failed: Missing final '@domain'或有时:554 Transaction failed: User name is missing: 'Cron Daemon <root>'

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

/etc/crontab:

MAILTO="me@myemail.com"
Run Code Online (Sandbox Code Playgroud)

(我也试过MAILTO=root

/etc/ssmtp/revaliases:

root:me@myemail.com:email-smtp.us-east-1.amazonaws.com:465
me:me@myemail.com:email-smtp.us-east-1.amazonaws.com:465
Run Code Online (Sandbox Code Playgroud)

/etc/ssmtp/ssmtp.conf:

root=me@myemail.com
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
Run Code Online (Sandbox Code Playgroud)

基于一些谷歌搜索,MAILFROM=它似乎在 Ubuntu 上不起作用,更改它似乎没有任何效果(来自根 cron 和我的本地用户 cron)。

我很困惑和困惑。sSmtp 似乎没有任何调试选项来帮助了解 cron 电子邮件的来源和目的地并查看标题。

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

谢谢!

yon*_*tan 7

因此,afaict SES 在“from”和“to”字段中都需要一个域。

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

现在 - 您还需要确保“to”地址有一个域名(默认情况下它也只是“root”)。这可以通过向MAILTO=you@whereever.com/etc/crontab添加一行来解决。

这解决了我的“554 Transaction failed: Missing final '@domain'”问题。我没有遇到您的“交易失败:缺少用户名:'Cron Daemon'”消息,因此我无法对此发表评论。

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