停止 cron 作业以 root 身份发送电子邮件,但允许 sendmail 运行

停止 cron 作业以 root 身份发送电子邮件,但允许 sendmail 运行

我最近让 Postfix 充当通过 Google Workspace(以前称为 Google G Suite)中继的仅发送 MTA。我现在想在完成 cron 作业后将电子邮件发送到我的个人电子邮件。我最初遇到的问题是,我的服务器发送了两封电子邮件,一封发送给,[email protected]另一封发送给,[email protected]后者退回了 MAILER-DAEMON 回复,因为该帐户不存在。

这是我最初的 cron 作业,位于/etc/cron.d/google-drive-backup

59 11 * * * root /root/scripts/google-drive-backup.sh && mail --append="From:Root <[email protected]>" --append="Reply-To:[email protected]" [email protected]

我在这些论坛上进行了研究,并发现使用以下方法可以抑制输出>/dev/null 2>&1:如果我将其直接放在脚本后面,效果会很好:

59 11 * * * root /root/scripts/google-drive-backup.sh >/dev/null 2>&1

我可以确认没有发送电子邮件,因为邮件日志/var/log/mail.log是空的。但是,当与以下命令结合使用时,抑制输出不会产生任何影响mail

59 11 * * * root /root/scripts/google-drive-backup.sh >/dev/null 2>&1 && mail --append="From:Root <[email protected]>" --append="Reply-To:[email protected]" [email protected]

或者

59 11 * * * root /root/scripts/google-drive-backup.sh && mail --append="From:Root <[email protected]>" --append="Reply-To:[email protected]" [email protected] >/dev/null 2>&1

本质上,我想禁用 crontab 的默认电子邮件功能并使用 sendmail,以便我可以自定义主题和电子邮件标题。

答案1

我最终将stdoutand隐藏stderr到一个空文件中,然后使用两个 & 符号创建一个带有命令的主题,echo该命令会通过管道传输到mail命令中以完成其余部分。这是我完成的 cron 作业:

59 11 * * * root /root/scripts/google-drive-backup.sh >/dev/null 2>&1 && echo "Cron job has finished at $(date +'\%d/\%m/\%Y') $(date +'(\%H:\%M:\%S)')" | mail --subject="WordPress Backup Complete" --append="From:Root <[email protected]>" --append="Reply-To:[email protected]" [email protected]

相关内容