IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

用msmtp代替系统自身的sendmail

snnn的blog 2012-12-24 13:31:35 累计浏览 2,654 次
本机暂存

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

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. xargs命令少为人知的细节 (累计阅读 5,657)
  2. 一句话crontab实现防ssh暴力破解 (累计阅读 4,752)
  3. ubuntu定时执行任务crontab的使用 (累计阅读 4,582)
  4. crontab异常,无法自动运行 (累计阅读 4,551)
  5. 分享一个固定时间自动更新svn的简单shell脚本 (累计阅读 4,255)
  6. linux下计划任务crontab学习笔记 (累计阅读 4,141)
  7. SHELL TIPS: rsync 和 crontab 变量 (累计阅读 4,051)
  8. 后台脚本挂起的几种原因 (累计阅读 3,605)
  9. 一个监测服务器swap并重启php的脚本 (累计阅读 3,313)
  10. 实用命令行工具详解(五)—crontab (累计阅读 3,032)