溜まったdeferなどのメールキューを削除する

| コメント(0) | トラックバック(0)
postfixなどで、送信時にホストに接続できなかったりして再配送処理(deferやdeferred)に廻ってしまったメールキューは、手動で削除しない限り、デフォルトの5日間は数分おきに延々と再配送処理を繰り返す。
main.cfの設定でこの期間を短縮することは可能だが、ウザいので手っ取り早く消してしまいたいときは、管理者権限からエディタ(gedit)を起動して、

/var/spool/postfix/defer/メールIDの最初の1文字/メールID

のファイルを抹消すれば良い。

コマンドラインから行うときは、

# postsuper -d ALL defer (or deferred)

で実行可能。
ディレクトリを指定しない場合は、/var/spool/postfix/ 以下のすべてのキューが削除される。

command not found となってしまうときは、管理者権限を得るときに、
su じゃなくて、 su - で上位ディレクトリから行うとできるはずです。


なぜこの作業が必要かというと、前回の記事でバウンスメールの処理を行うにあたり、バウンスが返ってこなければ削除が行われないということに起因する。

deferが繰り替えされる要因としては、
1.ホスト名の解決はできたが、そのホストのDNSサーバに接続できずMXレコードが引けず、Connection timed out になるため、postfixは再送を試みる。
2.同じく、DNSサーバで名前解決はしたが、接続されるはずのメールサーバがダウンしている、もしくは存在しないため Connection timed out となり、postfixは再送を試みる。

これらが大半を占めると思われる。

なので、大量のメールアドレスを扱うメルマガ配信システムを持ってる場合等は、一日一回はメールキューの処理を行なったほうがいいかもしれない。
ただし、メールキューを削除すると、メールアドレスは正常であるにもかかわらず何らかの理由でdeferなどに一時的にまわったキューも削除されてしまうので注意。


「n回以上 Connection timed out になったキューは自動的に管理者にバウンスを返す」
みたいな設定ができればいいんだけどな・・・
もしかするとマニュアルをよく読めばできるのかな・・・

どなたかお知恵を貸してください。

トラックバック(0)

トラックバックURL: http://www.igreks.jp/blog/mt-tb.cgi/3

コメントする