Postfixのcorruptメールを削除

Postfixのスプールに溜まったcorruptメールをきれいに削除する方法。

メールの配送状況の確認はmailqコマンドを使用します。このコマンドを実行すると、どのメールが処理中で、どのメールが配信にエラーが起きて溜まっているかを確認できます。

普通はmailqを実行して配信エラーが無いか確認するだけで十分なのですが、あるとき気が付いたらMuninのPostfixの状況を示すグラフの値がいつもと違っていました。普段corruptキューの値は0なのですが、このcorruptが1になっていました。

実際にPostfixのcorruptディレクトリーを確認すると、確かにC961B3Fというファイルが作成されていました。この時mailqコマンドを実行してもC961B3Fというidは存在しませんでした。

Postfixのキューに溜まったエラーメールを削除するには、postsuperコマンドの-dオプションを使用します。そこで次のようにしてcorruptメールを削除しようとしました。

postsuper -d C961B3F

しかしmailqに表示されない、すなわちキューに登録されていないのでこのコマンドでは削除する事ができませんでした。

そこで最後の手段でスプール上のファイルを直接削除しました。

find /var/spool/postfix -name C961B3F -delete

rmコマンドで削除しても同じですが、Postfixは関連ファイルを他のディレクトリーにも作成しているのでfindコマンドで検索と削除を同時に実行しました。いきなり削除が怖い場合は、-deleteオプションの代りに-printオプションを使用して指定ファイルの検索のみを実行すると安心です。