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

我在NAS设备上每天运行一次以下cron job命令:

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

我想知道是否有办法管道列表,这将导致cron向我发送电子邮件,显示它删除的文件和/或遇到的任何错误。

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

 sudo apt install postfix 
  • 对于常规类型的邮件配置选择“ Internet站点” ,如果要进行更详细的配置,请使用以下命令:

     sudo dpkg-reconfigure postfix 

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

本地用户邮箱的默认位置是/var/mail/ 。 您可以通过命令行以方便的方式安装命令行电子邮件客户端mutt来读取用户的电子邮箱:

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

您可以通过在Cronjob定义之前更改crontab envvar MAILTO的值来更改默认目标邮箱

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

一旦您的系统能够发送电子邮件,您必须使您的Cronjob更详细 (例如,添加-rrm命令)并且必须设置正确的MAILTO值。 所以你的crontab看起来像这样:

 MAILTO="example.email@gmail.com" * * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v {} \; 

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


参考文献和进一步阅读:

  • 让crontab工作的问题

  • 如何在Ubuntu 16.04上安装和配置Postfix

  • Postfix TLS支持

  • 如何从命令行发送邮件?

  • 从Linux命令行发送电子邮件的5种方法

我使用一种非常简单的方法让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密码尝试