我在 Ubuntu 10.10 上设置了 msmtp,以便 cron 可以向我发送电子邮件。在大多数情况下,它运行良好。
但是,发送到我的 Gmail 帐户的电子邮件显示来自(未知发件人),标题显示:
From: root (Cron Daemon)
如何将“发件人”标头设置为有效的电子邮件地址?
我刚刚邮件传输协议符号链接为/usr/sbin/sendmail
我发现的一个可能的解决方案是:http://tech.bluesmoon.info/2010/01/pretty-print-cron-emails.html
不过,我很好奇是否有更简单的方法。
答案1
我找到了两个解决方案:
- 使用 msmtp 1.8.8 或更高版本(出现在 Ubuntu 20.10 中),使用
set_from_header on
配置设置,它可以覆盖现有的From:
,而不像以前add_missing_from_header
那样只能在缺失时添加它 - 对于早期版本(例如 Ubuntu 20.04),
- 删除
msmtp-mta
现在没用的包, - 创建一个两行脚本重写标题,例如
/usr/local/bin/msmtp-pseudo-mta.bash
- 删除
#!/bin/bash
# Workaround until mtmsp >= 1.8.8 in Ubuntu 20.10.
sed -e "s/From: root (Cron Daemon)/From: WHATEVER YOU LIKE/" | msmtp $BASH_ARGV
-
- 使其可执行,例如
chmod 755 /usr/local/bin/msmtp-pseudo-mta.bash
- 将其符号链接为 sendmail:
- 使其可执行,例如
sudo ln -s /usr/local/bin/msmtp-pseudo-mta.bash /usr/sbin/sendmail
答案2
没问题。只需按照手册中所述进行配置即可: http://msmtp.sourceforge.net/doc/msmtp.html#Envelope_002dfrom-address
maildomain example.com
应将 example.com 添加到所有未设置域名的邮件中。
答案3
您可以使用-a
switch 来指定附加标头。附加标头可以是From
,因此这正是您所需要的。
例子:
/some_command.sh | mail -s "Email subject" -a "From:Sender Name <[email protected]>" [email protected]