我正在尝试配置一台机器,以便如果其中一个 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-mta
。msmtp
我已经用/etc/msmtprc
和配置了我的服务器/etc/aliases
,所以我的设置可能与OP的设置略有不同。