我在 CentOS 上使用 postfix 从 crontab 发送邮件(使用 MAILTO=)。邮件确实会发送,但只在 21:01,无论 cronjob 运行的时间如何。如果我运行多个作业,所有邮件都会保存起来并同时发送,而不是在作业完成后立即发送。我的 crontab 如下所示:
[email protected]
[email protected]
15 15 * * * sudo - u someuser sh /path/to/script/
检查 /var/log/maillog,条目仅在 21:01 出现在日志中,就像它在此之前不会尝试发送它们一样。我知道 cronjobs 在此之前早就完成了,因为通过电子邮件发送给我的输出包含脚本启动和完成的时间戳。postfix 服务正在运行,没有报告任何错误
这是由我可以更改的某处配置引起的吗?如何确保作业运行完成后立即发送邮件?
答案1
通常这是由于 systemd 在邮件投递之前终止了邮件投递进程而导致的。关于这是否是一个好的设计存在一些争议。
显然,解决这个问题的方法是将任何使用(在您的实例中是 postfix 的另一个名称或符号链接)生成电子邮件的 systemd 进程配置/usr/bin/sendmail
为分叉服务。