mail发不出的烦恼
最近遇到一个问题,
这是一台linux机器,rhel6.7,/var总满,或者是突然某用户test就不能登录了。
既然空间不够,就把没用的日志删了;用户登不进是因为一堆莫名其妙的进程启的太多,也就杀掉。然后系统就活了,可没过多久,旧病复发。
既然是问题,总有个原因。
看下这些进程都是什么鬼?
ps –u test –f
wc一下,竟然有1800+多个类似进程
撑爆系统的就是它们。从名字也能看出,这是些邮件相关的进程,那就去看看邮件日志。
/var/log/maillog
果然,里面有很多报错,按照postfix的进程号grep下,看到错误都是这样的:
grep "\[27779\]" maillog
这个27779的邮件进程不断试图发邮件,已经失败这么多次了。
当然,还其他n多类似进程也失败多次。
再看看maillog的大小,不停的写,文件不停的增大,最终把/var也撑满了。
问题显而易见了,有应用要发邮件,而发邮件有报错,应用不停的启动进程发,最后日志和进程急剧增长,系统不可用了。问题找到了,那么就有一种处理方法:
让邮件发出来,发邮件不报错,就消除了hang死的进程,maillog的日志增长速度就可控。
机器上的邮件服务器是postfix,检查下服务启动了吗?果然没启动,那就把它拉起来
service postfix start
然后做个检查
postfix check
报了两个个问题
一是警告不支持ipv6
这可以修改配置文件
/etc/postfix/main.cf
默认是启动ipv4和ipv6的
将其修改为
inet_protocols= ipv4
二是有两个目录的属组错误
chgrp –R postdrop public maildrop
权限也改成755
chmod –R 755 public maildrop
再次postfix check,就没有任何警告了
但是,此时,仍然不能发邮件,maillog仍然报permission denied的错误。
用root执行下面命令,邮件就可以发出来了
postfix set-permission
用test用户登录,查看邮箱,执行命令mail,就能看到收件箱里的一堆邮件。之前那些等待发邮件而发不出的进程瞬间也都释放了。
更多文章请关注公众号:IT运维记事本