如何利用sendmail发送外部邮件?

      在写监控脚本时,为了更好的监控服务器性能,如磁盘空间、系统负载等,有必要在系统出现瓶颈时,及时向管理员进行报告。在这里通常采用邮件报警,同时,邮件设置为收到邮件,即向指定手机号码发送短信。这样可以实现7*24小时及时监控服务器状况。
      在这里,采用的是linux系统自带的邮件服务器:sendmail。但sendmail默认只能给本机发送邮件,如何发送外部邮件呢?在这里,需要修改sendmail的配置文件。具体步骤如下:
      1、修改配置文件
            # vim /etc/mail/sendmail.cf
               O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA =>>127.0.0.1 即是本地回环地址
               改为:O DaemonPortOptions=Port=smtp, Name=MTA
      2、重启服务
            # /etc/init.d/sendmail restart

      example: 监控本机根分区的硬盘使用率,当超过50%,即发外部邮件!

            df |awk -F"[ %]*" 'NR==2&&$5>50 {print $1"的磁盘使用率为"$5"%"}' |mail -s "Disk Overuse" slowtech@126.com
 

后续:其实不修改配置文件也可。

注意:mail命令是mailx包提供的 ,需要安装此包,yum install mailx

如果发送失败,会提示“You have new mail in /var/spool/mail/root”

此时,可通过查看/var/spool/mail/root了解失败的原因。

刚开始主机名是mysql-server1,发送失败,查看/var/spool/mail/root中信息,提示“550 MI:IMF”错误。同时提供了一个退信代码的网址,原来“550 MI:IMF 发信人电子邮件地址不合规范”。后来修改主机名为mysql-server1.com后,就能发送成功了。

         

        

posted @   iVictor  阅读(1219)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示