
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 の実行を無効にしていなかったため、バックログが増大していたためです。これで、これが無効になり、すべてがクリアされるはずです。