Sendmail是一个漏洞奇多、配置超级麻烦的东西,所以很多系统管理员都把它禁用了。但是如此一来,如果Crontab脚本执行出错,就只有天知地知了。
Sendmail有很多轻量级的替代,我之前一直在用Ssmtp,但是这东西已经停止维护了,我在google 搜它的源代码都搜不到。于是我就只好找其它的替代,于是就找到了Msmtp:http://msmtp.sourceforge.net/。
1. 安装:
下载解压之后,
- ./configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc
- make
- make install
即可。
2. 配置
如果你像我这样,编译的时候加上了--sysconfdir=/etc,那么全局的配置文件就在/etc下面,名为Msmtprc。
这是我的配置:
- $ cat /etc/Msmtprc
- defaults
- tls off
- logfile /var/log/Msmtp.log
- account default
- host mail.tudou.com
- from xxxx@tudou.com
- domain tudou.com
- auth login
- user sunchangming
- password xxxx
3.让mail命令使用Msmtp而不是Sendmail
这个很简单,在/etc/mail.rc的末尾加一行:
- set Sendmail="/usr/bin/Msmtp"
4.让Crontab用Msmtp
打开/etc/sysconfig/crond,设置一下CRONDARGS的值:
- CRONDARGS="-m '/usr/bin/Msmtp -t'"
请注意这里一定要加-t。否则Msmtp是从Command line arg而不是Stdin读取收件人列表。我之前就是因为没有加这个,而导致Cron老是报告。
- Sep 24 18:06:01 a02 crond[8023]: (app_admin) MAIL (mailed 52 bytes of output but got status 0x0040 )
独家秘方哦!Google搜不到这个答案的。