如何设置 Cron 发送电子邮件?

如何设置 Cron 发送电子邮件?

我的 NAS 设备每天运行一次以下 cron 作业命令:

find /nfs/rpiggott/complete -mtime +45 -exec rm {} \;

我想知道是否有办法通过管道传输一个列表,从而导致 cron 向我发送一封电子邮件,显示它删除了哪些文件和/或遇到了任何错误。

答案1

为此,您的系统应该能够发送电子邮件。因此您可以安装和配置postfix

sudo apt install postfix
  • 为了常规邮件配置类型选择互联网网站,如果要进行更详细的配置使用命令:

    sudo dpkg-reconfigure postfix
    

此时 Cron 将开始发送电子邮件。通常会输出到 STDOUT 的所有内容(如果您在命令行中执行命令),包括所有错误消息,都将被发送到运行 Cronjob 的用户的本地邮箱。

本地用户邮箱的默认位置是/var/mail/,您可以安装命令行邮件客户端,mutt这样就可以方便的通过命令行读取您用户的邮箱:

sudo apt install mutt
  • 请注意,如果之前没有完成,mutt安装过程将涉及安装和配置。postfix

您可以更改默认目标邮箱通过在 Cronjob 定义之前改变MAILTO内部环境变量的值。crontab

请注意:除非您未在发送邮件配置中启用 SSL/TLS 证书,否则大多数公共邮件服务器都会以某种方式忽略您的电子邮件。例如,mail.google.com将它们放入垃圾邮件中。如果这是一个服务器实例,并且您已经为主域拥有 SSL/TLS 证书,请按照这本很好的手册将其附加到 Postfix。

一旦您的系统能够发送电子邮件,您必须让你的 Cronjob 更加详细(例如添加-vrm命令)并且必须设置适当的值MAILTO。因此您的代码crontab应该如下所示:

MAILTO="[email protected]"
* * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v {} \;

另一种方法是创建一个脚本(将通过 执行crontab),其中包含您的命令并使用mailmutt或发送电子邮件。有关更多详细信息ssmtpsendmail请参阅参考资料的底部。


参考文献及进一步阅读:

答案2

我使用了一个非常简单的方法来cron发送电子邮件:将 Linux 配置、脚本和文档备份到 Gmail

自动发送电子邮件的最简单方法

使用 ssmtp 发送电子邮件警报我们发现从终端或脚本自动发送电子邮件的最简单方法。安装步骤很简单:

sudo apt install ssmtp
sudo nano /etc/ssmtp/ssmtp.conf
# Change "MyEmailAddress" and "MyPassword" to your own.

有一个步骤没有提到;Google 将向您发送一封电子邮件,确认您是否允许“不太安全”的应用程序使用您的帐户发送邮件:

Gmail 启用了安全性较低的电子邮件应用程序

收到太多邮件很烦人。例如,每次你输错密码,sudo你都会收到一封电子邮件:不要再通过电子邮件向我发送错误的 sudo 密码尝试信息

相关内容