邮件服务器磁盘满了怎么办?哪些目录可以先清?
邮件服务器磁盘满了怎么办?哪些目录可以先清?
第一步:快速定位磁盘占用——不要盲目删。
# 找出最大的目录
du -h --max-depth=1 / 2>/dev/null | sort -hr | head -20
# 邮件相关的关键目录
du -sh /var/spool/postfix/*
du -sh /var/vmail/* # Dovecot 邮件存储
du -sh /var/log/mail*
第二步:按安全顺序清理(越靠前越安全):
① 日志文件 ——
② Postfix 延迟队列中的死信 ——
③ 垃圾邮件/病毒邮件隔离区 —— 如果使用 SpamAssassin / Amavis / rspamd,检查隔离目录:
④ 用户邮箱中的大附件 —— 用脚本统计
⑤ 邮件归档存储 —— 检查是否有自动备份任务将归档写入系统盘而非数据盘。
① 日志文件 ——
/var/log/mail.log*、/var/log/syslog*:先压缩(gzip *.log.1),再删除超过 14 天的归档。更优方案是提前配置 logrotate(见 FAQ-30)。② Postfix 延迟队列中的死信 ——
postqueue -p | tail -1 查看队列总数;mailq | grep -c "^[A-F0-9]" 精确统计。删除特定发件人的积压邮件:mailq | grep 'sender@spam.com' | cut -d' ' -f1 | postsuper -d -。③ 垃圾邮件/病毒邮件隔离区 —— 如果使用 SpamAssassin / Amavis / rspamd,检查隔离目录:
du -sh /var/lib/amavis/virusmails/ /var/spool/spamassassin/。清理超过 7 天的隔离邮件。④ 用户邮箱中的大附件 —— 用脚本统计
/var/vmail/ 下每个用户目录大小:du -sh /var/vmail/*/* | sort -hr | head -20。联系占用最大的前 5 个用户清理。⑤ 邮件归档存储 —— 检查是否有自动备份任务将归档写入系统盘而非数据盘。
最后手段——不应轻易使用:删除 Postfix 活跃队列(
/var/spool/postfix/active/)中的邮件会导致正常邮件丢失。仅在磁盘满到 Postfix 无法写入新邮件时,通过 postsuper -d ALL deferred 仅清延迟队列(含死信),保留活跃队列。📎 RFC 5321 Section 4.5.4.1 重试与队列管理
