参考博文:Linux 中 /var/spool/postfix/maildrop 占用空间很大问题

1.故障背景

接收到告警消息,/var/spool/postfix/mailfdrop 占用磁盘空间过大

2.原因分析

由于 Linux 在执行 cron 时,会将 cron 执行脚本中的 outputwarning 信息,都会以邮件的形式发送 cron 所有者, 而由于服务器环境中的 sendmailpostfix 没有正常运行,导致邮件发送不成功,全部小文件堆积在了 maildrop 目录下面,而且没有自动清理转换的机制,所以长达数年的时间,此目录已堆积了大量的文件。查看 man cron 的信息,可以知道会发送给 cron owner

3.解决措施

临时删除

虽然时删除了,以后也还会出现。所以我们需要从源头杜绝这个问题再次出现。

1
2
$ cd /var/spool/postfix/maildrop
$ find ./ -type f -mtime +7 | xargs rm -f # 因为文件过多,直接rm -f无法删除

长期解决

通过上面的介绍我们知道是因为 crontab 执行定时任务的时候把脚本的一些输出发送给脚本执行者。

如果我们需要了解 crontab 输出内容,直接重定向到文件即可 >files

如果是我们不关心的备注型等输出我们完全可以让其输出到 > /dev/null 2>&1 这样就不会因为发送失败到导致在 /var/spool/postfix/maildrop 下面产出什么文件。

1
2
$ crontab -l
*/10 * * * * /tmp/test.sh > /dev/null 2>&1