2009年9月10日木曜日

Postfix にたまったメールキューの処理の仕方

送信元を詐称したスパムメールのバウンスでメールキューが一杯になってしまうことがよくある。
必要のないキューを削除しないと、メールサーバの負荷が高くなり、メール配送の遅延が発生することにもなる。
対応方法を以下に示す。

負荷が高すぎて作業に支障が出る場合は、postfix を停止する。
# service postfix stop

原因を特定する。
メールログの確認。
# less /var/log/maillog

キューの内容を確認。
Postfix を停止している場合は、mailq コマンドの実行に root 権限が必要。
# mailq >/tmp/mailq.txt
# less /tmp/mailq.txt

メッセージの内容を確認する場合。
# postcat -q QUEUE_ID

大量のキューを hold キューに退避する。
# postsuper -h ALL

Postfix を起動する。
# service postfix start


削除が必要なキューを調べ、各行に QUEUE_ID を書いたテキストを作成する。
例えば、Sender が MAILER-DAEMON でかつ Arrival Time が Wed (水曜日) のメールを抽出する。
$ perl -ne \
'print "$1\n" if (/^(\w+).+ Wed .+ MAILER-DAEMON/);' \
/tmp/mailq.txt >/tmp/delete_qid.txt

キューを削除する。
# cat /tmp/delete_qid.txt | postsuper -d -

必要なキューは、hold キューから戻す。
# postsuper -H QUEUE_ID

参考

0 件のコメント: