Linux下 /var/spool/postfix/maildrop 的作用与清理

Hi, Everyone!Welcome to DQF's Blog,For technical exchange, Please add QQ: 905030209,Thanks!

问题描述

在系统巡检的时候,发现一台主机/var/spool/postfix/maildrop/目录空间使用较多

问题原因

在网上搜索之后明白是mail没有成功的邮件。由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送cron所有者, 而我的服务器中关闭了postfix,导致邮件发送不成功,全部小文件堆积在了maildrop目录下面。如果sendmail或者postfix正常运行,则会在/var/mail目录下也会堆积大量的邮件。

解决方法

继续上网查资料,发现是crontab 每次执行任务后会发送邮件,接受者是在他的配置文件 “/etc/crontab” 通过 MAILTO=root’ 来设置的,默认是root,如果执行输出没有十分必要要用邮件发送的话,可以修改此处。
方法一:更改crontab配置

修改“/etc/crontab”

将‘MAILTO=root’替换成‘MAILTO=""’修改之后没有成功,需要重启crond服务才可以

也可从在crontab(crontab -e)中最前面直接加入MAILTO=""

如果是我们不关心的备注型等输出我们完全可以让其输出到 /dev/null 这样就不会因为发送失败到导致在/var/spool/postfix/maildrop下面产出什么文件。
方法二:定时任务重定向到空

例如:

*/10 * * * * /tmp/test.sh >/dev/null 2>&1

操作步骤

登录ansible主控机进行操作

1.更改contab配置

ansible all -m shell -a "sed -i 's#MAILTO=root#MAILTO=\"\"#g' /etc/crontab"
ansible all -m shell -a "service crond restart"

2.删除/var/spool/postfix/maildrop/目录下文件

for i in {0..9};do rm -f /var/spool/postfix/maildrop/$i*;done
for i in {a..z};do rm -f /var/spool/postfix/maildrop/$i*;done
for i in {A..Z};do rm -f /var/spool/postfix/maildrop/$i*;done

Leave a Reply

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Blog Theme: FreeDom by DQF.