
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 MB 的未發送郵件。這似乎可能是由於向本機發送郵件的內部功能失敗所致。
我曾多次嘗試清除隊列,但沒有成功。結果是一個行程佔用了大量的 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 的分鐘,但導致積壓的情況不斷增加。希望現在這已被禁用,一切都應該清楚了。