postfixが電子メールをキューに入れるまで60〜90ミリ秒かかります—通常ですか?


8

ローカルのPostfixサーバーに個別のメールを送信するときに、(多分?)奇妙な遅延が発生しています。

問題の診断に役立つように、5つのメールを送信する小さなテストプログラムを作成しました。

get smtp 1ms   (  1 ms)
email 0 677ms  (676 ms)
email 1 802ms  (125 ms)
email 2 890ms  ( 88 ms)
email 3 973ms  ( 83 ms)
email 4 1088ms (115 ms)

最初のメールのハンドシェイクを割り引くと、1メールあたり約90ミリ秒になります。これらのタイミングは、別のコードパスを使用して他の誰かが作成した別のテストアプリでも確認されているため、サーバーに関連しているようです。

詳細なロギングをオンにしたところ、メッセージの終わりと受信の間に遅延があることがわかり\r\n\r\nます。

[16:31:29.95] [SEND] \r\n.\r\n
[16:31:30.05] [RECV] 250 2.0.0 Ok: queued as B128E1E063\r\n

[16:31:30.08] [SEND] \r\n.\r\n
[16:31:30.17] [RECV] 250 2.0.0 Ok: queued as 4A7DE1E06E\r\n

[16:31:30.19] [SEND] \r\n.\r\n
[16:31:30.27] [RECV] 250 2.0.0 Ok: queued as 68ACC1E072\r\n

[16:31:30.28] [SEND] \r\n.\r\n
[16:31:30.34] [RECV] 250 2.0.0 Ok: queued as 7EFFE1E079\r\n

[16:31:30.39] [SEND] \r\n.\r\n
[16:31:30.45] [RECV] 250 2.0.0 Ok: queued as 9793C1E07A\r\n

時間間隔は物語を伝えます(最初の電子メールに必要なハンドシェイクを割引して)-各電子メールはpostfixがキューに入るのを約60〜90ミリ秒待っています!

これは私には過剰だと思われます。postfixが送信するすべての電子メールに対して60〜90ミリ秒かかるのは「正常」ですか?それとも、私は不当な期待を持っていますか?ローカルのPostfixサーバーがメールを約20ミリ秒でキューに入れると予想します


3
SPFのチェック、逆引きDNSの検索、Identなどのフィルタリングをオンにしていますか?SMTPまたはMSPを使用していますか?
クリスS

回答:


12

それは正常に聞こえます。複数の接続を並行してメールを送信している場合でも、メールあたり90ミリ秒を取得できますか?これにより、メールを送信できるレートを簡単に上げることができます。

他のMTA(sendmail)がfsync()を実行して、受け入れられたメールがディスクにコミットされてから250応答を返すことを確認しているため、システムがメールを受け入れた後にクラッシュしても、メールはドロップされません。postfixもおそらく同様です。

これをテストするには、メールスプールディレクトリをtmpfsに一時的に配置し、メールの受信にかかる時間を確認します。

その90ミリ秒のウィンドウで実行できるその他の処理には、ウイルススキャン、ブラックリストチェックなどがあります。


6

Postfixのベストプラクティスは、回避するために最初のキューの前にほとんどのフィルタリングを行うべきであると述べています:

  1. そもそも受け入れてはならないメッセージのリソースを無駄にする。
  2. エラーメッセージの返信を避けます(したがって、元のメールとエラーメッセージのリソースを消費します)。
  3. エラーメッセージを間違った受信者に送信することを避けます。

したがって、キューイング時間はリソースを節約するために最適化されていません。smtpd_recipient_restrictionsPostfixのすべてのチェックインを無効にすると、main.cfおそらく、より多くのエラーを犠牲にしてより速くキューに入れ、ユーザーに(誤った)エラーメッセージをより多く受け取る可能性があります。たとえば、それがアプリケーションの出力サーバーのみであれば、それは完全に許容されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.