技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> 用msmtp代替系统自身的sendmail

用msmtp代替系统自身的sendmail

浏览:2044次  出处信息

   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搜不到这个答案的。

QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1