从进程中看到,好像是postfix有问题。我这postfix主要是用来给程序发达邮件用的,如报警,程序外发邮件等。平时postfix进程不会像现在这样异常,这在postf主进程CPU占用高,其它的相关进程,也占用很高,如smtp,qmgr等。当然,也看到了不少error的进程,而且属主是postfix,所以可以判断是postfix出问题了,为了证实,把postfix服务停掉,观察top状态,服务器负载都下去了,而且磁盘写入,上下文切换都降低了,所以,postfix异常是正确的。
这是刚停止postfix以后的vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 88736 600328 448020 13682256 0 0 0 5 0 0 0 0 99 0 0
0 0 88736 600164 448020 13682256 0 0 0 0 3500 725 0 0 99 0 0
0 0 88736 600448 448020 13682256 0 0 0 0 4008 842 0 0 99 0 0
0 0 88736 600544 448020 13682256 0 0 0 0 3197 668 0 0 100 0 0
因为对postfix不是很熟悉,所以,在网上找了一篇文章:
参考文档:http://www.myhack58.com/Article/60/sort095/2012/35334.htm
按他的思路和方法,我打开maillog日志,发现日志是写入很快,用tail -f可以看是狂刷屏,而且日志文件有几个G大了。日志大概如上:
Feb 28 10:08:27 mail postfix/error[10442]: DC467C1AE4: to=<[email protected]>, relay=none, delay=12332, delays=12324/3.5/0/4, dsn=4.0.0, status=deferred (delivery temporarily suspended: host mx1.comcast.net[68.87.26.147] refused to talk to me: 554 imta33.westchester.pa.mail.comcast.net comcast 124.172.223.189 Comcast block for spam. Please see http://postmaster.comcast.net/smtp-error-codes.php#BL000000)
Feb 28 10:08:27 mail postfix/error[10943]: 6BA87C6222: to=<[email protected]>, relay=none, delay=760, delays=751/9.2/0/0.18, dsn=4.4.2, status=deferred (delivery temporarily suspended: lost connection with mta5.am0.yahoodns.net[66.196.118.33] while sending RCPT TO)
然后用postcat -q命令查看其中一封邮件的内容: 如 postcat -q 659D0C3636,可以看到,邮件是用[email protected]发送的,再仔细分析日志,确实是挺多from [email protected]记录。登陆[email protected]邮箱,发现有8000多封退信,而且还在增加中。到此,问题所在可以真正找出来了。因为[email protected]是以前开发程序时所创建的帐号,有可能是密码设的太简单,被人破解,被用于狂发邮件。果断把[email protected]封掉。然后再用postsuper -d ALL 把其它postfix缓存清空,到此故障完全排除。有些排查和解决步骤,那篇文章中出现的,我这里就没写出来了,思路是借鉴他的。