如果 cronjob 失败,Cron 将不会使用 msmtp 发送电子邮件

如果 cronjob 失败,Cron 将不会使用 msmtp 发送电子邮件

我正在尝试配置一台机器,以便如果其中一个 cronjobs 在出现错误的情况下输出某些内容,它会向我发送一封电子邮件。

  • 我正在使用 Debian Wheezy。
  • Cron 运行正常(没有电子邮件功能)。
  • msmtp 已安装并配置。已将 /usr/{bin|sbin}/sendmail 符号链接到 /usr/bin/msmtp。

我可以使用以下方式发送电子邮件:

echo "test" | mail -s "subject" [email protected]

或者执行:

echo "test" | /usr/sbin/sendmail

如果没有符号链接(/usr/sbin/sendmail),cron 会告诉我:

(CRON) info (No MTA installed, discarding output)

通过符号链接我得到:

(root) MAIL (mailed 1 byte of output; but got status 0x004e, #012)

您能建议如何配置 cron/msmtp 对吗?

谢谢!

编辑:

注意:我错误地写了“msmtpd”。它不是一个守护进程,而是一个 SMTP 客户端,名字只是“msmtp”(没有“d”结尾)。它是按需执行的,并不是一直在后台运行。

当我尝试使用 msmtp 发送电子邮件时,它有效:

echo "test" | msmtp [email protected]

在另一端,我在 SMTP 服务器的日志中读到:

Nov  2 09:26:10 S01 postfix/smtpd[12728]: connect from unknown[CLIENT_IP]
Nov  2 09:26:12 S01 postfix/smtpd[12728]: 532301C318: client=unknown[CLIENT_IP], sasl_method=CRAM-MD5, [email protected]
Nov  2 09:26:12 S01 postfix/cleanup[12733]: 532301C318: message-id=<>
Nov  2 09:26:12 S01 postfix/qmgr[2404]: 532301C318: from=<[email protected]>, size=191, nrcpt=1 (queue active)
Nov  2 09:26:12 S01 postfix/local[12734]: 532301C318: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=0.62, delays=0.59/0.01/0/0.03, dsn=2.0.0, status=sent (delivered to command: IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #1001)
Nov  2 09:26:12 S01 postfix/qmgr[2404]: 532301C318: removed
Nov  2 09:26:13 S01 postfix/smtpd[12728]: disconnect from unknown[CLIENT_IP]

并且电子邮件已发送给目标用户。因此看起来 msmtp 客户端运行正常。

这肯定是 cron/msmtp 集成中的某个东西,但我不知道那是什么。你能帮我吗?

答案1

解决方案是向我的用户的 cron 配置中添加以下内容(通过调用 crontab -e):

CRONARGS=-m/usr/bin/msmtp

答案2

我遇到的情况与问题中描述的完全相同,但当前的答案并没有为我解决问题。就我而言,问题的解释是每次cron执行sendmail命令时,它都会设置$HOME/,而不是/home/<user>。因此,即使通过符号链接msmtp替换sendmail,也无法找到位于 中的用户特定配置文件$HOME/.msmtprc

我的解决方案是用来代替/etc/msmtprc$HOME/.msmtprc

这可能不是您的系统的最佳解决方案,因为它可能会强制/etc/msmtprc其他用户读取您的一些敏感数据。

更多详情请阅读: http://comments.gmane.org/gmane.linux.debian.devel.bugs.general/671011

答案3

cron 有一个上游。https://github.com/vixie/cron

请考虑发送此处引用的 -m 补丁。

另外,我不知道如何让 20 年前导入 cron 的发行版与上游合并。但我们能做的就是尝试。

答案4

我知道这是一个过时的问题,但我遇到了这个问题,我通过安装解决了它msmtp-mtamsmtp我已经用/etc/msmtprc和配置了我的服务器/etc/aliases,所以我的设置可能与OP的设置略有不同。

相关内容