如何更改来自 Cron 的电子邮件的“发件人:”字段?

Ale*_*nko 39 email linux cron

我通过 nullmailer 使用远程 SMTP,它需要将 From 字段设置为特定名称,但 cron 将其设置为 root@my.sweet.server.com。

我怎么能把它改成像 me@ya.ru 这样的东西?

小智 44

现代版本的 cron 确实接受 crontab 格式的“MAILFROM=...”。我建议你试试“man 5 crontab”。如果它提到 MAILFROM,则您的版本应该支持它。要查找的短语在讨论 MAILTO 的段落末尾,应该是这样的:

If MAILFROM is defined (and non-empty), it will be used as the envelope sender address, otherwise, ''root'' will be used.

  • MAILFROM 终于在 Ubuntu 22.04 中出现了。10年后。 (14认同)
  • “现代”在哪里意味着什么?从我在更改日志或文档中看到的,Debian 不稳定 (3.0pl1-124) 中最新版本的 cron 不支持这一点。 (9认同)
  • 你可以在 Debian/Ubuntu 上安装 `cronie` 来替换 `cron`。Ta-daa:`MAILFROM` 存在: (4认同)
  • MAILFROM 在 Ubuntu 20.04 中仍然缺失。 (4认同)
  • 不幸的是,Ubuntu 的 cron(至少从 14.04 LTS 开始)在 `man 5 crontab` 中没有提到 `MAILFROM`。 (3认同)

Ric*_*way 17

我认为您不能更改发件人地址,(应该有人添加 MAILFROM 选项)。

你可以做这样的事情来达到类似的结果:

* * * * * /path/to/script 2>&1 | mail -s "Output of /path/to/script" toaddress@example.com -- -r "fromaddress@example.com" -F"Full Name of sender"
Run Code Online (Sandbox Code Playgroud)

所有输出都通过管道传送到 mail 命令,因此根本不使用 MAILTO 变量。

需要设置 to 地址,但您可以使用 $MAILTO 变量。-- 将其余选项设置为 sendmail 选项,以便您可以使用 -r 和 -F 选项。

-s 是主语

-r 是回复地址

-F 是发件人的全名(使其在电子邮件客户端中看起来不错)

  • 不适用于 Debian Buster 10.9 (2认同)

小智 10

/etc/mailname 包含FROM 地址的域名部分。如果 /etc/mailname 包含“somecompany.com”,那么为 root 运行的 cron 会将发件人设为 root@somecompany.com

  • 这里有一些信息:https://wiki.debian.org/EtcMailName - 没有说明 nullmailer 是否使用它。我使用 sendmail,但它似乎不起作用。 (3认同)

小智 5

您可以通过环境变量或命令行从地址设置 nullmailer。命令行参数-f,并-F分别发送方地址和全名。

通常你可以在 crontab 中设置环境变量。

NULLMAILER_USER=webmaster
NULLMAILER_HOST=host.example.com
NULLMAILER_NAME="Mr Cron"

5 0 * * * /usr/local/bin/daily.sh
Run Code Online (Sandbox Code Playgroud)


小智 5

对我来说,在系统上更改发件人地址的最简单方法是创建一个~/.mailrc包含以下内容的文件:

set name="My Full Name"
set from="myrealemail@example.com"
Run Code Online (Sandbox Code Playgroud)

mail以我的用户身份运行的任何命令现在都使用这些设置。