検証目的
----------
Sendmail でメールが複製される障害を確認するため、再現試験を行いました。
検証環境
----------
* OS: Debian GNU/Linux 4.0r1
* Sendmail: 8.10.2
※ Sendmail のバージョンは実際に障害が発生したバージョンです。
メール配送
------------
[MUA] --> [MTA1] --> [MTA2] --{Internet}--> [MTA3]
(ドメイン a.test) (ドメイン b.test)
* MUA .... メールを送信するメーラ
* MTA1 ... 組織A (a.test) の メールスプールサーバ
* MTA2 ... 組織A (a.test) の 中継サーバ
* MTA3 ... 組織B (b.test) の 中継サーバ
試験方法
----------
MTA2 のエイリアスで「postmaster => bar」を定義。
(bar@a.test は存在しない)
MUA から以下のメールを送信する。
From: foo@a.test (foo@a.test は存在しない)
To: user1@b.test (user1@b.test は存在する)
CC: hogehoge@b.test (hogehoge@b.test は存在しない)
試験結果 (概要)
-----------------
user1@b.test でキューの再送間隔毎に同一メールを受信する。
1. MTA2 -> MTA3 の送信のとき、
正常に送信できるアドレス (user1@b.test) には送信される。
2. 何らかの理由で恒久的に送信できないアドレス (hogehoge@b.test) があると、
送信できなった旨をエラーとして MTA2 が送信者へ返信する。
3. MTA2 がエラー通知をなんらかの理由で送信者へ返信できないと、
ダブルバウンス (エラー通知の送信失敗) が発生。
Postmaster へダブルバウンスを通知する。
4. Postmaster 宛てがエイリアス展開されダブルバウンスの通知がなされるが、
ダブルバウンスの通知がなんらかの理由で失敗すると、
savemail panic とログに残され、ダブルバウンス通知はキューから削除される。
(qf* -> Qf へリネームされる。)
5. オリジナルのメール (foo@a.test => user1@b.test, hogehoge@b.test)
がキューに残される。
※ このバージョンのバグ?同じ試験を最新バージョン 8.14.1 で試したが
キューに残らなかった。
6. キューに残ったオリジナルのメール (foo@a.test => user1@b.test, hogehoge@b.test)
が再送間隔ごとに処理され、1~5 を繰り返す。
回避策
--------
1. Sendmail の設定ファイル (Sendmail.cf) を、
O DeadLetterDrop=/var/tmp/dead.letter
とし、ダブルバウンスのメールを捨てる。
2. Sendmail を再起動する。kill -HUP <Sendmail の PID>
0 件のコメント:
コメントを投稿