Linux/UNIX更改Crontab电子邮件设置(MAILTO)

时间:2020-01-09 10:42:11  来源:igfitidea点击:

如何发送电子邮件到[email protected]而不是默认的系统root用户,以在Linux或者类似Unix的系统上进行crond服务。
在Linux或者类似Unix的系统上,如何在crontab文件下更改电子邮件设置?
一个crontab文件包含对cron守护程序的说明。
它每分钟唤醒一次,检查所有存储的crontab,检查每个命令以查看是否应在当前分钟内运行。
执行命令时,所有输出将邮寄到crontab的所有者或者crontab中的MAILTO环境变量中命名的用户(如果存在)。

如何更改Crontab电子邮件设置(MAILTO)

MAILTO语法为:

name = value

等号(=)周围的空格是可选的,并且值中任何后续的非前导空格都将是分配给name的值的一部分。
可以将值字符串放在引号中(单引号或者双引号,但匹配),以保留前导或者尾随的空格。
不会解析值字符串以进行环境替换,因此类似以下行:

PATH = $HOME/bin:$PATH

可能无法正常工作。

设置MAILTO变量以更改Crontab电子邮件设置

除LOGNAME,HOME和SHELL外,如果由于在此crontab中运行命令而有任何理由发送邮件,则cron还将查看MAILTO。
如果定义了MAILTO(并且是非空的),则将邮件发送给如此命名的用户。
首先打开您的crontab文件:

# vi /etc/crontab

或者

$ crontab -e

要将电子邮件发送到[email protected],请执行:

[email protected]

让我们向本地用户sai发送电子邮件:

MAILTO=sai

如果定义了MAILTO但为空(MAILTO =),则不会发送邮件。

MAILTO=""

否则,电子邮件将发送给crontab的所有者。

例子

MAILTO="[email protected]"
@midnight       /root/scripts/backup-servers
10 20 * * sun   /bin/php-cli /wwwroot/apps/cleanup.php
#
# We can switch email alert too
#
MAILTO="sysadmin.it@domain-name-here"
@daily /root/scripts/push-backup-host.sh 
MAILTO="storage.admin@domain-name-here"
* 10 * * * /root/scripts/check-hardware-raid-array-health.pl
#
# Disable email alert for rest of jobs
#
MAILTO=""
5 0 * * *       /scripts/bin/daily.sh >> /tmp/daily.shoutput.txt 2>&1

关于将电子邮件路由到网络或者本地网络之外的说明

设置MAILTO不会神奇地发送电子邮件。
要发送电子邮件,必须在同一主机或者局域网中运行电子邮件服务器。
换句话说,Linux和Unix用户需要运行诸如Sendmail或者Postfix之类的SMTP服务器。
最新的SMTP允许使用SMARTHOST,您可以其中使用云计算或者ISP电子邮件服务器转发电子邮件。