%20%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E5%85%B1%E9%80%9A%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%20MTA%20%E3%81%AB%E4%B8%AD%E7%B6%99%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E3%80%81%E5%90%8C%E6%99%82%E6%8E%A5%E7%B6%9A%E3%82%92%E3%81%84%E3%81%8F%E3%81%A4%E8%A8%B1%E5%8F%AF%2F%E9%96%8B%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
私は、SMTP 経由で下流のアーカイブ リポジトリに大量の (数十万の) ジャーナル メールを中継する Sendmail サーバーをいくつか持っています。これらのメールはすべて同じ受信者ドメインを持っています (これを「fooarchiveproviderdomain.com」と呼びます)。私の側では、/etc/mail/mailertable
アーカイブ ドメイン用に簡単なルートを設定しています。
fooarchiveproviderdomain.com esmtp:[1.1.1.1]:[2.2.2.2]
最近、プライマリ ダウンストリーム MTA (上記の例では 1.1.1.1) が過負荷になり、バナー グリーティングをタイムリーに返送できないことがあることに気付きました。私の側では、Sendmail がメール ログに次のようなエラーをスローします。
timeout waiting for input from [1.1.1.1] during client greeting
タイムアウト後、システムがバックアップ ルート (上記の例では 2.2.2.2) に送信し、すぐに受け入れられていることがわかります。
これらのタイムアウトは営業時間のピーク時に多く発生するため、これは負荷に関連していると確信しています。そうは言っても、すべて同じドメイン宛ての新しいメールと以前にキューに入れられたメッセージを処理するときに、サーバーが開始する接続の数を把握したいと考えています。
私考えるsendmailはキューに入れられたメッセージを1つのファイルで再試行するということですか?つまり、たとえば10000通のメールに遅延メッセージがある場合、キューランナーはしません10000 の同時接続を開始します... 1 つだけが発行されますか?
私も考える別々の SMTP セッションで到着した新しい受信メッセージは別々に処理されるということですか? つまり、たとえば sendmail ボックスに 15 件の新しいメッセージが届いた場合、それぞれが別々の sendmail 子デーモンによって処理され、下流の MTA への独自の SMTP 接続が開始されるということですか?
サーバーが処理できる着信接続の量に影響を与えずに、同時ダウンストリーム接続を制限する方法はありますか?
答え1
してもいいです
dsmtp
1)メーラーを使用して「一度に」配信試行を選択的にスキップします
(「1 つの SMTP セッションにつき 1 つのメッセージ」配信を生成します)。
mailertable
エントリ:
fooarchiveproviderdomain.com dsmtp:[1.1.1.1]:[2.2.2.2]
2) FEATURE(queuegroup)を使用して、配信用のカスタムキューグループを選択します。fooarchiveproviderdomain.com
3) キュー グループからの配信を微調整する方法を多数のオプションから選択します。たとえば、キュー グループ パラメータ(2 つの並列ランナー = キュー グループの実行ごとに 2 つの SMTP セッション) や(キュー グループ内のメッセージを 12 分ごとに処理) R=2
などです。I=12m
永続的なキューランナーを使用すると、「一度に」配信を試行せずに遅延を減らすことができます。
https://www.safaribooksonline.com/library/view/sendmail-cookbook/0596004710/ch09s06.html
コメント: 変更中どうやってメッセージを「ジャーナリング アプリ」によって送信することも別のオプションです。