我在AWS上运行Ubuntu,并使用他们的SES(简单电子邮件服务)和sSmtp来发送日志,因为这是服务器上唯一需要的电子邮件。
我有ssmtp发送和一切正常,除了从cron作业发送的电子邮件由于发件人地址被拒绝。 SES要求validationFrom:和To:电子邮件地址,但从cron发送的电子邮件只是root ,而不是[email protected] 。
有没有办法设置cron用作From:地址的完整电子邮件地址,还是有办法让ssmtp重写From:当它只是一个没有域的名字?
我的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
谢谢。
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
由于似乎无法更改cron从Ubuntu发送的From:地址,所以我find了一个解决方法。 这可能不是最好的方法,但它似乎工作。
安装ssmtp时,会创build从/usr/sbin/sendmail到/usr/sbin/ssmtp 。 我所做的是删除链接,并创build一个包含以下内容的sendmail文件:
sed "s/From: root /From: [email protected] /" | /usr/sbin/ssmtp $*
现在,任何从root发送的邮件都会被重写为[email protected]