drwxr-xr-x 2 smmsp smmsp 4.0K May 6 23:31 mqueue
drwxrws--- 2 smmsp smmsp 29M May 8 10:40 mqueue-client
如您所见,mqueue-client
有 29 兆字节的未发送邮件。这似乎是由于向本地主机发送邮件的内部功能出现故障。
我尝试过多次清除队列,但都没有成功。结果是一个进程占用了大量的 CPU 资源:
16287 smmsp 20 0 50212 44m 2416 R 85 4.4 965:35.45 sendmail-msp
我尝试过终止进程、停止 sendmail 服务、删除 mqueue-client 的内容,甚至切换到 smmsp 用户。但都不起作用。rm
尝试删除邮件时挂起。
我该如何清空这个队列?
完成此操作后,我会将所有内容转移到 Postfix。
答案1
正如 Janne 在评论中所建议的那样,我查看了我的syslog
邮件,发现许多邮件发送失败,导致它们被推迟并堆积在mqueue-client
文件夹中。
经过一番挖掘,结果发现定时任务设置为完成/通知/警告/错误时发送邮件到根目录。通过发布crontab -e
并添加MAILTO=""
到配置顶部,不再发送邮件,问题已解决!
mqueue-client
现在我使用这个 Bash 脚本清除大约 150 万封坏邮件:
#!/usr/bin/env bash
cd mqueue-client
deleted=0
for i in `ls`
do
rm -f $i
percentage=$(bc <<< "scale=2; ($deleted / 1035435) * 100")
((deleted++))
echo "Deleted $i. Files deleted $deleted. $percentage% complete."
done
使用以下命令从 /var/spool 运行./filename
更新
不幸的是,运行这个脚本一整晚后,邮件队列并没有明显减少。这是因为我没有禁用 CRON 的运行时间,该时间设置为清除队列,但导致积压不断增加。希望现在禁用了它,一切都应该清除了。