このドキュメントの目的 ====================== このドキュメントは Postfix 高速 ETRN サービスの目的、サービスの 動作方法、そしてどのようにテストするかを記述しています。 この問題に関する情報を持つ他のドキュメント: - conf/sample-flush.cf, サンプル設定ファイル - conf/main.cf, サンプル設定ファイル - flush(8), flush サービスの実装 Postfix 高速 ETRN サービス ========================== SMTP ETRN コマンドはインターネットに断続的に接続されるサイトの ために設計されました。ETRN を用いると、サイトはプロバイダの メールサーバに "すべての私のメールを今すぐ配送して下さい" と 通知することができます。 バージョン 20001005 以前の Postfix は ETRN コマンドを貧弱な 方法で実装していました: 単にすべてのキューにあるメールの配送を 試行しました。これはたくさんの顧客へのメールをキューに入れている メールサーバでは遅い方法です。 バージョン 20001005 の時点で、Postfix はすべてのキューファイルを 調べることを必要としない高速 ETRN が実装されました。"sendmail -qR" コマンドはローカルの SMTP サーバに ETRN コマンドを送ることで 実装されました。 Postfix "高速 ETRN/sendmail -qR" は与えられた目的地のサイト宛の キューに入ったメールだけを配送しようとすることで、配送を高速化 しています。古い Postfix "slow ETRN" は依然予備の方法として 使われています。 Postfix 高速 ETRN の動作方法 ============================ "高速 ETRN" サービスは、キューにあるメールの配送先ごとのログファイルを 維持する、新しい "flush" デーモンを使います。これらのログファイルは /var/spool/postfix/flush 以下に保存されます。それぞれのログファイルの 名前は配送先のドメイン名から付けられます。文法的に有効なドメイン名を 持つ配送先だけが、配送先ごとのログファイルを持つことができます。 新しい "flush" デーモンの動作は main.cf 設定ファイル内のパラメータで 制御されます。 デフォルトでは、Postfix "fast ETRN/sendmail -qR" サービスは Postfix がメールをリレーしようとする配送先のみに使えます: fast_flush_domains = $relay_domains "relay_domain" パラメータは Postfix がリレーしようとする配送先を 指定します。 新しい "高速 ETRN/sendmail -qR" サービスに適さない配送先に対しては、 Postfix ば全てのキューにあるメールを配送しようとする古い "低速 ETRN" 手法に戻します。 "高速 ETRN/sendmail -qR" をある他のドメインにも使えるようにするには、 次のように指定します: fast_flush_domains = $relay_domains, some.other.domain "高速 ETRN/sendmail -qR" を無効にし、Postfix が常に全てのキューに あるメールを配送しようとする古い "低速 ETRN" を使うためには、 次のように指定します: fast_flush_domains = 高速 ETRN サービスのテスト ========================== "高速 ETRN" サービスを使った Postfix を一番最初に動かす際には、 "sendmail -q" を実行してサイト毎の遅延メールログファイルを移す 必要があります。このステップを怠った場合、結果的には Postfix の ルーチン的な遅延メールの配送の試行としてログファイルが移ってくる ことになりますが、それには数時間かかるでしょう。 "sendmail -q" が全ての配送の試行 (しばらく時間がかかります) を 終えると、"高速 ETRN" サービスのテストの準備が整います。 ETRN コマンドの実行が許されたクライアントから Postfix SMTP サーバに telnet し (デフォルトでは全てのクライアント)、次のように入力します: helo my.client.tld etrn some.customer.domain ここで "some.customer.domain" は /var/spool/postfix/flush 以下の どこかにある、空でないログファイルを持つドメイン名です。 maillog ファイルで、すぐにキューマネージャがキューファイルを 開いた証拠の数行のログファイルの記録を確認します: Oct 2 10:51:19 localhost postfix/qmgr[51999]: 682E8440A4: from=, size=12345, nrcpt=1 (queue active) Oct 2 10:51:19 localhost postfix/qmgr[51999]: 02249440B7: from=, size=4711, nrcpt=1 (queue active) 配送先が到達可能かどうかによって次の動作が変わります。 到達可能でなければ、メールキュー ID が /var/spool/postfix/flush 以下の some.customer.domain ログファイルに加えられます。 あなたのサーバが ("relay_domains" に挙げられたドメインに) リレーを しようとするが、キューにメールがない場合の練習を続けます。 helo my.client.tld etrn some.other.customer.domain 今回は "etrn コマンドはメール配送を全く引き起こしません。これが 全てのメール配送を引き起こすのであれば、間違ったドメイン名を 使ったか、"高速 ETRN" サービスが OFF になっています。 最後に、あなたのメールサーバがリレーしようとしない配送先の場合の 練習を続けます。あなたのサーバにその配送先当てのキューに入った メールがあるかどうかは関係ありません。 helo my.client.tld etrn not.a.customer.domain "高速 ETRN" キャッシングポリシーがデフォルトのままであれば、 "etrn" コマンドにより全てのキューにはいったメールの配送試行が 引き起こされます。