我不明白为什么我的AWS EC2上的cron( Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64) )似乎无法通过sSmtp向AWS SES发送电子邮件。
这工作: echo "test" | ssmtp [email protected] echo "test" | ssmtp [email protected] ,我从我的本地用户收到一封电子邮件。
这工作: echo "test" | sudo ssmtp [email protected] echo "test" | sudo ssmtp [email protected] ,我从root得到一封电子邮件。
但是,当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
基于一些谷歌search, MAILFROM=似乎并没有在Ubuntu上工作,并改变它似乎没有任何效果(从根的CRON和我本地的用户CRON)。
我很困惑和困惑。 sSmtp似乎没有任何debugging选项来帮助理解cron电子邮件来自哪里,然后查看标题。
服务器是一个非常小的安装,我不想安装postfix每天发送10封电子邮件(主要是日志文件)。
谢谢!
所以,SES需要在“从”和“到”字段中的一个域。
虽然MAILFROM=在Ubuntu的cron中不被支持,你可以在ssmtp.conf中设置FromLineOverride=NO ,而ssmtp会强制“发送”地址为“root @ hostname”而不是“root”。 这照顾“从”地址。
现在,您还需要确保“至”地址有一个域名(默认情况下,它也只是“根”)。 这可以通过添加一个[email protected]行到/ etc / crontab来解决。
这解决了我的“554交易失败:缺less最终的”@域“问题。 我没有遇到你的“交易失败:用户名缺失:'Cron守护进程'”消息,所以我不能评论。
所有这一切的关键Debug=YES ,ssmtp.conf中的Debug=YES将一堆信息写入系统日志。