无法清除 sendmail mqueue-client

无法清除 sendmail mqueue-client
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 的运行时间,该时间设置为清除队列,但导致积压不断增加。希望现在禁用了它,一切都应该清除了。

相关内容