More from: Delivered-To:

メールの配送漏れ?

ユーザーから昨日届くはずのメールが届いていないとの連絡があった。
なんでも特定の時間帯のメールが少なくて、ちょうどその時間帯に送られたメールがあるけどPCで受信できないとのこと。
”そんな筈は・・・”と思ってサーバーのログを見ると届いていない筈のメール(送信元のアドレス等で判断)は配信されたことになっている。
/var/spool/mail下にあるスプールを見てもちゃんと入っている(後で気付いたがこの時点で勘違いしていた)。
そこで自分のPCで同じアカウントを設定して受信させてみると受信できない(ユーザー側は一定期間サーバーに残す設定にしてあるので私のところでも受信できる筈)。
スプールにあるのに受信できない原因を探している途中で気付いたが、このサーバーはpostfixでmaildir形式で構築してあり、先のスプールファイルには配信されずユーザー毎のディレクトリ(~/Maildir下)に配信される筈だった(汗)。
とにかく受信できないメールをなんとか受信出来るようにするのが先決なので色々調べてformailコマンドで配信することにして実行したところ、今度は
: mail forwarding loop for hoge@hogehoge.dom
というエラーメールがrootに送られてくるだけで配送されない。
ループになるような原因としてはaliases以外に考えられなかったので/etc/alisesファイルを何度も修正し、最後には転送設定を削除までしたが結果は変化しないorz。
となると転送設定の問題では無いだろうということでエラーメッセージでググるとヒントが見つかった。
それは送られてきたメールヘッダーの
Delivered-To:
に受信者と同じメールアドレスの記述があるとMTA(postfix)がメールループだと判断してしまうということらしい。
なぜDelivered-To:に同じアドレスが入っているかを調べる時間が勿体ないので、とにかくスプールファイルを直接(もちろんバックアップを取ったうえで)編集し、Delivered-To:に書かれているアドレスを若干変更して保存。
そうした後にformailコマンド
# formail -s sendmail -v -t -oiee < ./hoge を実行したところ無事にmboxに配信された。 あとは特定の時間帯にだけこの現象が起きた原因を探らなければ(汗)。

←クリックしてくれると嬉しいです。