用Msmtp代替系統(tǒng)自身Sendmail的技巧
Sendmail是一個漏洞奇多、配置超級麻煩的東西,所以很多系統(tǒng)管理員都把它禁用了。但是如此一來,如果Crontab腳本執(zhí)行出錯,就只有天知地知了。
Sendmail有很多輕量級的替代,我之前一直在用Ssmtp,但是這東西已經(jīng)停止維護了,我在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,設(shè)置一下CRONDARGS的值:
- CRONDARGS="-m '/usr/bin/Msmtp -t'"
請注意這里一定要加-t。否則Msmtp是從Command line arg而不是Stdin讀取收件人列表。我之前就是因為沒有加這個,而導(dǎo)致Cron老是報告。
- Sep 24 18:06:01 a02 crond[8023]: (app_admin) MAIL (mailed 52 bytes of output but got status 0x0040 )
獨家秘方哦!Google搜不到這個答案的。