質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

Q&A

解決済

3回答

4268閲覧

Postfixにて同一理由でのdeferredが連続した場合の送信差し止め(suspend)仕様

jakku9232

総合スコア13

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

0グッド

0クリップ

投稿2020/06/18 04:46

CentOS7上に構築したPostfixにてメールサーバを運用しております。

とある事情で連続してソフトバウンス(deferred)になる送信先メールサーバがあったのですが、
どうも「10分間に5回連続して同じ宛先に同じ理由でdeferredになると、Postfix側で10分間当該宛先へのメール送信をエラーにしてsuspendするという仕様がある」ように見えています。

Postfixの関連ドキュメントを当たっているのですが、この様な仕様を明記したものが見当たらず、どの様な形で実装されているのか知見をお持ちの方はいらっしゃいませんでしょうか。

■Postfixバージョン
2.10.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2020/06/18 05:37

メールログには何か記録されていませんでしょうか。設定パラメーターやしきい値など。
jakku9232

2020/06/18 06:00 編集

ログには特に情報ありませんでした。設定ファイルでも特に当該処理に関する設定は行っておりません。 マスクしますが以下が通常のdeferred時とerrorとなる(Postfix側でSuspendされる)時それぞれのログです。 ■通常時 May 28 16:47:13 localhost <mail.info> postfix/smtp[1792]:857FF853339: to=<aaa.bbb@ccc.com>, relay=xxxx.xxxx.xxxx.com[xx.xx.xx.xx]:25, delay=1000, delays=998/0.05/1.6/0, dsn=4.0.0, status=deferred (host xxxx.xxxx.xxxx.com[xx.xx.xx.xx] refused to talk to me: ~~~~) ■エラー時 May 28 16:47:13 localhost <mail.info> postfix/error[1797]:CEE6A853335: to=<aaa.bbb@ccc.com>, relay=none, delay=1001, delays=999/1.9/0/0.02, dsn=4.0.0, status=deferred (delivery temporarily suspended: host xxxx.xxxx.xxxx.com[xx.xx.xx.xx] refused to talk to me: ~~~~)
guest

回答3

0

ベストアンサー

おそらく、smtp_initial_destination_concurrency = initial_destination_concurrency (default: 5) で、同一ドメイン宛、同時 5 接続でエラーになると、それ以降の同ドメイン宛の配送を止めるようです。

「10分間に 5回」のような rate_limit ではなく、たまたまキューの再送のタイミングで同一ドメイン宛が 6通以上だったものと思います。

投稿2020/06/18 10:03

TaichiYanagiya

総合スコア12173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jakku9232

2020/06/22 02:04

ご返信が遅くなりすみません。 いただいたパラメータを確認し、細かい仕様を調べています。 `smtp_initial_destination_concurrency`、ただの「送信並列度」ではないか?と思っていましたが、`maximal_backoff_time`が10分に設定されていたため、再送が終わるまでメールがスタックし、`smtp_initial_destination_concurrency`の上限数5に引っかかっていると理解しました。 まさしく以下の通りの現象が起きていると理解しました。こちらクローズとさせていただきます。 ``` 「10分間に 5回」のような rate_limit ではなく、たまたまキューの再送のタイミングで同一ドメイン宛が 6通以上だったものと思います。 ```
guest

0

一応デフォルトの再送の設定では以下のようになっています。

queue_run_delay = 300s minimal_backoff_time = 300s maximal_backoff_time = 4000s maximal_queue_lifetime = 5d bounce_queue_lifetime = 5d
1.送信失敗したらdeferredに入れる。 2.queue_run_delay(300秒)毎にdeferredをチェック。 3.minimal_backoff_time(300秒)を超えるメールがあれば再送。 また失敗したら2倍(300×2=600秒)の時間後に再送。 また失敗したら4倍(300×4=1200秒)の時間後に再送。 4.maximal_backoff_time(4000秒)を超えるまで繰り返し。 また失敗したらこの時間間隔で再送。 5.maximal_queue_lifetime(5日)を超えたら再送を諦める。 6.bounce_queue_lifetime(5日)を超えたら送信元にエラーメールを返す。

http://www.postfix.org/postconf.5.html

投稿2020/06/18 04:59

Mashiro

総合スコア654

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jakku9232

2020/06/18 05:13

早速ありがとうございます。すみません、言葉不足でした。 ご質問させていただいたのは、「同一メールの再送設定」ではなく、「送信先が同一のメールが全てsuspendされる」、という事象です。 ご提示いただいた内容は「同一キューIDのメールにおいてdeferred時の再送回数(秒数)」を設定するものと理解しており、同じメールはn回再送して届かなければnon-delivery notificationが発出された上で当該メールを捨てる、という動作をするということは理解しております。 今回はそちらではなく、同じ宛先に同じ理由でdeferredになる異なるメールを5通送信してしまった場合に、同一宛先のあらゆるメールが10分間Postfix側でsuspendされてしまう、という事象が発生しています。
guest

0

どういう条件で相手がdeadだとするかは SCHEDULER_README に有ります。
相手がdeadだと判断した時、その状態を覚えている時間は minimal_backoff_time です。

投稿2020/06/22 03:00

doda

総合スコア947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問