Postfixのキューの再送間隔がわかりにくいため、やさしく解説してみた

コンピュータ
スポンサーリンク

■メール関連の記事
Postfix(SMTP)とDovecot(POP)で中継メールサーバ、受信サーバの検証環境を準備してみる
Postfixのrelayhost、transport、fallbackに関して
Postfix(SMTPサーバ)のキューの再送間隔に関して
メールサーバのパフォーマンステスト(負荷テスト)で、大量にメールを送る方法
Postfix(SMTPサーバ)でドメイン単位で送信宛先を制限したい
Gmailの送信者ガイドラインに対応するため、TLS、SPF、DKIM、DMARCの動作確認や設定をしてみた(その1)

SMTPサーバのPostfixを構築すると、必ずキューの再送間隔に戸惑うと思います。

そのため、やさしくキューの再送間隔に関して解説してみます。

スポンサーリンク

簡易確認

maximal_queue_lifetime = 1d   //1日で再送諦める
minimal_backoff_time = 900s   //900秒キューに入っているメールがあれば再送
maximal_backoff_time = 3600s  //再送間隔のMAX
queue_run_delay = 900s  //キューをチェックする間隔
bounce_queue_lifetime = 1d  //1日送信できなかったらエラーメールをFromに返す

詳細確認

中継メールサーバにてメールを送信したが、送信先と正常に通信ができない場合キューに入ります。そのあと、メールに入ったキューは以下の挙動となる。

1.約15分後(900秒)に送ってみる → ダメならキューに入る
→minimal_backoff_time = 900s  //900秒からスタート!

2.約30分後(1800秒)に送ってみる → ダメならキューに入る
→minimal_backoff_time = 900s  //2回目は約2倍の1800秒で再送する

3.約60分後(3600秒)に送ってみる → ダメならキューに入る
→minimal_backoff_time = 900s  //3回目は、更に約2倍の3600秒で再送する

4.約60分後(3600秒)に送ってみる → だめならキューに入る
→maximal_backoff_time = 3600s  //4回目は、更に約2倍の7200秒とならず、左記のパラメータの上限である3600sで再送し続ける

5.ひたすら60分間隔で再送して、1日経過(1d)したら送信を諦めてFromにメールを返信
→maximal_queue_lifetime = 1d  //1日経過したら再送を諦める
→bounce_queue_lifetime = 1d //1日経過したらエラーメールをFromに返す

再送のログを確認してみる。

//キューがないことを確認
# mailq
Mail queue is empty


//メールを送る
# echo "本文_test mail" | mailx -s "タイトル_title" -S smtp=smtp://192.168.11.12 -r relay@test.local aaaabc@yahoo.co.jp


//送信先(192.168.11.11)が落ちているため、配送されずキューに入っていることを確認
# mailq
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
3813B8AF7DB     508 Wed Dec 22 00:10:37  relay@test.local
              (connect to 192.168.11.11[192.168.11.11]:25: Connection refused)
                                         aaaabc@yahoo.co.jp

-- 0 Kbytes in 1 Request.


//設定通り再送しているかログから確認する、ID(3813B8AF7DB)でgrepすると良い
# grep 3813B8AF7DB /var/log/maillog
Dec 22 00:10:37 pop postfix/smtpd[4595]: 3813B8AF7DB: client=pop[192.168.11.12]
Dec 22 00:10:37 pop postfix/cleanup[4599]: 3813B8AF7DB: message-id=<61c1ee6d.ZI26h7U5yvmqEWlg%relay@test.local>
Dec 22 00:10:37 pop postfix/qmgr[4491]: 3813B8AF7DB: from=<relay@test.local>, size=508, nrcpt=1 (queue active)
Dec 22 00:10:37 pop postfix/smtp[4600]: 3813B8AF7DB: to=<aaaabc@yahoo.co.jp>, relay=none, delay=0.08, delays=0.06/0.02/0/0, dsn=4.4.1, status=deferred (connect to 192.168.11.11[192.168.11.11]:25: Connection refused)
Dec 22 00:40:02 pop postfix/qmgr[4491]: 3813B8AF7DB: from=<relay@test.local>, size=508, nrcpt=1 (queue active)
Dec 22 00:40:17 pop postfix/smtp[5511]: 3813B8AF7DB: to=<aaaabc@yahoo.co.jp>, relay=none, delay=1781, delays=1765/0.05/16/0, dsn=4.4.1, status=deferred (connect to 192.168.11.11[192.168.11.11]:25: Connection refused)

//00:10:37 にキューに入り、約30分後の00:40:17 に、再送していることを確認できる。

■メール関連の記事
Postfix(SMTP)とDovecot(POP)で中継メールサーバ、受信サーバの検証環境を準備してみる
Postfixのrelayhost、transport、fallbackに関して
Postfix(SMTPサーバ)のキューの再送間隔に関して
メールサーバのパフォーマンステスト(負荷テスト)で、大量にメールを送る方法
Postfix(SMTPサーバ)でドメイン単位で送信宛先を制限したい
Gmailの送信者ガイドラインに対応するため、TLS、SPF、DKIM、DMARCの動作確認や設定をしてみた(その1)

タイトルとURLをコピーしました