一直没好好研究sendmail这个邮件处理的东东,结果招来不少麻烦。
先把由它导致的一些问题及解决方法(很山寨,很有效)列出来,日后再慢慢学习。
1.启动过程超慢。
现象:重启服务器或#service restart sendmail时,停留在Starting sendmail 和 sm-client不动了,可能需要几分钟甚至十几分钟,让人心碎。
原因:DNS解析失败。通常是配置了错误的DNS服务器地址或网络故障无法访问DNS;另一种可能是hosts文件配置有问题,无法解析(反向?)本地主机名。
解
决:如果是单机运行linux,可以删除DNS设置文件/etc/resolv.conf,或者干脆停用sendmail:#chkconfig
sendmail off。如果有网络连接,则重点检查/etc/resolve.conf 和
/etc/hosts。首先确定resolve.conf配置是否正确,如果没有DNS则可以把它删掉,或保留"search
localdomain",注释掉“nameserver
xxx”等内容。其次检查hosts文件,看看有没有把本机的主机名写在里头,如果写了而对应的IP地址不是127.0.0.1的话很可能会出问题。假定
/etc/sysconfig/network配置的主机名是Server001,则hosts文件首行应改为
127.0.0.1 localhost.localdomain localhost Server163
另:DNS在linux系统中很能制造麻烦,配置错误会导致很多程序运行非常缓慢,即使有的程序与网络无关。
2.系统资源耗尽。
今天上海有个服务器不响应了,ssh,ftp统统不能登陆。现场重启才恢复,初步判定是内存耗尽。
检查/var/log/message,从昨天中文开始就只记录了数据库检查点操作的信息,而平时的一堆crond信息都没有了。
不
经意中发现/var/spool/mail/root文件好大个,2G的样子,运行mail半天都打不开,于是试着把它删掉。可好似不一会
儿,mailbox又开始暴涨,又将近1.5G了。是不是“邮箱”有2G的限制,新的mail写不进去,放到什么地方缓存起来了,清空“邮箱”后,又从缓
存写回来。man
sendmail后,发现/var/spool/mqueue里几十万个文件,一面删除一面top,top里好多sendmail进程,一直闲置的
swap分区尽然也消耗大半。原来又是sendmail搞的鬼。
系统里有很多分钟级甚至秒级的crond,每次运行这些crond,系统都要给root发一个mail,同时写到/var/log/message里。message可以自动滚存,而mail不会,久而久之mailbox就撑爆了,mqueue机制也让内存慢慢耗尽。
首
先停用sendmail,删除mailbox,清空mqueue目录。删除缓存邮件时,rm * -f提示Argument list too
long,参考别人的文章用 ls|xargs rm -f
达成。参看
现在还没找到彻底解决的方法,要么停用或研究sendmail配置,要么看看crond可不可以不用每次发邮件,总之还要学习。
阅读(2084) | 评论(0) | 转发(0) |