NQMGR(8) NQMGR(8) 名前 nqmgr - Postfix キューマネージャ 書式 nqmgr [generic Postfix daemon options] 解説 nqmgr デーモンは入ってくるメールの到着を待ち、Postfix 配送 プロセスが配送するための準備をします。実際のメールルーティ ング方法は trivial-rewrite(8) デーモンに委託されます。この プログラムは master(8) プロセスマネージャから起動される こ とを想定しています。 ロ ーカルの double-bounce アドレス宛のメールは黙って捨てら れます。これにより配送できないバウンス通知によって起こる潜 在的なループが止められます。 オ プションの relocated データベースにリストされたユーザ宛 のメールは "user has moved to new_location" メッセージが付 いてバウンスされます。正確な記述は relocated(5) を参照して 下さい。 メールキュー nqmgr デーモンは次のキューの保守をします: incoming ネットワークから入ってくるメール、またはロ ー カ ル pickup エージェントが maildrop ディレクトリから拾っ てきたメール。 active 配送するためにキューマネージャが開いたメッセー ジ。 active キューに入れられるメッセージは限られた数だけ です(固定された配送速度のために穴あきバケツ戦略)。 deferred 最初の試行で配送できなかったメール。キュー マ ネ ー ジャ には配送試行の間隔を倍にして指数的に遅らせる機 構が組み込まれています。 corrupt 読めない、もしくは損傷したキューファイルは検査の た めにここに移動されます。 配送状態レポート nqmgr デーモンは次のディレクトリのメッセージごとの配送状態 レポートに注目しつづけます。それぞれの状態レポートファイル は対応するメッセージファイルと同じ名前です: bounce なぜメールがバウンスされたかという受信者ごとの状態 の情報。これらのファイルは bounce(8) デーモンにより 保守されます。 defer なぜメールが遅延されたかという受信者ごとの状態の情 報。これらのファイルは defer(8) デーモンにより保 守 されます。 nqmgr デーモンは bounce(8) や defer(8) デーモンに不達レポ ートを送るように依頼する責任を負います。 方法 キューマネージャにはキューファイルを開いたり(入力)メッセー ジ配送 (出力)するための様々な方法が組み込まれています。 leaky bucket こ の 方 法は active キュー内のメッセージの数を制限 し、負荷が重い時にキューマネージャがメモリを使い 果 たすのを防ぎます。 fairness active キューの場所が空いている時、キューマネージャ は incoming キューと deferred キューから1メッセージ ず つ持ってきます。これは未処理のメールが新しいメー ルの配送を妨げることを防ぎます。 slow start この方法は同じ目的地への並列配送数をゆっくり調整 す る こ とで、「大群(thundering herd)」問題をなくしま す。 round robin キューマネージャは配送先で要求をソートします。ラ ウ ン ドロビン選択により、一つの送信先への配送が他の送 信先を支配することがないようにします。 exponential backoff 最初の試行で配送できなかったメールは遅延されま す。 配 送試行の時間間隔はそれぞれの試行ごとに倍になりま す。 destination status cache キューマネージャは配送できない送信先を短期間のメ モ リ 内リストに保持することで、不必要な配送試行を避け ます。 preemptive message scheduling キューマネージャは洗練されたプリエンプティブメッ セ ー ジスケジューリングを使ってメッセージ毎の正確な遅 延を保存する一方で、受信者毎の遅延の平均を最小化 し ようとします。 TRIGGERS アイドル状態のシステムでは、キューマネージャはイベントのト リガーの到着を待つか、タイマーで落ちるのを待ちます。トリガ ー は1バイトのメッセージです。メッセージの到着に依存して、 キューマネージャは次のうち一つの行動を起こします(メッセ ー ジの後にソフトウェアの内部で使われるシンボル的な定数が続き ます): D (QMGR_REQ_SCAN_DEFERRED) 遅延キューのスキャンをはじめます。すでに遅延キュ ー の スキャンが行なわれている最中であれば、それが終わ り次第再びはじめます。 I (QMGR_REQ_SCAN_INCOMING) 入ってくるキューのスキャンをはじめます。す で に ス キャ ンが行なわれている最中であれば、それが終わり次 第再びはじめます。 A (QMGR_REQ_SCAN_ALL) 遅延キューファイルのタイムスタンプを無視します。 要 求は次の遅延キュースキャン時に有効です。 F (QMGR_REQ_FLUSH_DEAD) 動 い て いない配送方法や配送先に関する情報を消しま す。 W (TRIGGER_REQ_WAKEUP) 目覚し。これはマスターサーバがサーバ群にいなくな ら な いように説得するために使います。この動作は入って くるキューのスキャンをはじめます。 nqmgr デーモンはトリガーのバッファ全体を読みます。複数の別 々 のトリガー要求は一つにまとめられ、A と F が D と I より 先になるようにソートされます。従って、遅延キューを動かすに は A F D を要求し、キューマネージャに新しいメールの到着を 知らせるには I を指定します。 標準 なし。nqmgr デーモンは外界と接触しません。 セキュリティ nqmgr デーモンはセキュリティに敏感ではありませ ん。1 文 字 メッセージを信頼しないローカルユーザから読みこむため、サー ビス拒否攻撃(Denial of Service attacks) には弱くなっていま す。 nqmgr デーモンは外の世界とは話をしませんし、chroot さ れた環境では低い特権に固定されて動きます。 診断 問題や処理は syslog デーモンに記録されます。不正なメッセー ジ ファイルは詳細な調査のために corrupt キューにセーブされ ます。 notify_classes パラメータの設定によっては、ポストマスタ ー にバウンスやその他のトラブルが通知されます。 バグ 単 独のキューマネージャプロセスは smtpd のような複数のフロ ントエンドプロセスとディスクアクセスの競合をします。突然た くさんのメールが入ってくると、外への配送速度にネガティブな 影響を及ぼすことがあります。 設定パラメータ 以下の main.cf パラメータは特にこのプログラムに関連があ り ま す。文法の詳細やデフォルト値は Postfix main.cf ファイル を参照して下さい。設定の変更後は postfix reload コマンドを 使ってください。 その他 allow_min_user "-" で始まる受信者アドレスはバウンスしない。 relocated_maps 存 在しないユーザ、ホストまたはドメインの連絡情報の テーブル。 relocated(5) 参照。 queue_directory Postfix キューのトップレベルディレクトリ。 アクティブなキューの制御 下の文章で、transport は master.cf エントリの最初のフィ ー ルドです。 qmgr_message_active_limit アクティブなキューの数を制限する。 qmgr_message_recipient_limit メモリに保持する受信者の数を制限する。 こ のパラメータは単期間・メモリ内配送先キャッシュの サイズも制限します。 qmgr_message_recipient_minimum メッセージ毎のメモリ内受信者の最小値。 default_recipient_limit transport ごとのメモリ内受信者数の制限のデフォル ト 値。 transport_recipient_limit 指定されたメッセージ transport に対する、メモリ内受 信者数の制限。 default_extra_recipient_limit プリエンプティブメッセージが持てる transport ごとの メモリ内受信者数の合計の制限のデフォルト値。 transport_extra_recipient_limit transport 配送により配送される全てのプリエンプティ ブメッセージ transport が持つことが可能なメモリ内受 信者数の制限。 Timing controls minimal_backoff_time 遅延メッセージの配送試行間隔の最低秒数。 こ の パ ラメータは単期間・メモリ内配送先状態キャッ シュに届かない配送先を記憶しておく時間も制 限 し ま す。 maximal_backoff_time 遅延メッセージの配送を試行する最大間隔秒数。 maximal_queue_lifetime 配 送できないとして返送するまでキューに入っている最 大の日数。 queue_run_delay 遅延キューをスキャンする間隔の秒数。キューのス キャ ンは重なりません。 transport_retry_time 壊れた配送方法に連絡を試みる間隔の秒数。 Concurrency controls initial_destination_concurrency 同 じ配送先に並列で配送する際の、配送先ごとの並列度 の初期値。 default_destination_concurrency_limit 同じ配送先への並列度の制限数のデフォルト。 transport_destination_concurrency_limit 指定されたメッセージ transport での同じ配送先に対す る並列配送数の制限。 受信者制御 default_destination_recipient_limit メッセージ配送ごとの受信者数の制限のデフォルト。 transport_destination_recipient_limit 指定されたメッセージ transport での、メッセージ配送 ごとの受信者数の制限のデフォルト。 Message scheduling transport_delivery_slot_cost (有効範囲: 0,2,3...) このパラメータは基本的に、transport によるメッセ ー ジ 配送が他のメッセージに割り込まれる頻度を制御しま す。メッセージ/配送内部カウンタは それぞれの trans- port によって扱われる transport_delivery_slot_cost 配送に対して、 1 だけ増加します。このカウンタは他の メッ セージが使うための "利用可能な配送スロット" の 数を表しています。 "利用可能な配送スロット" カウ ン タの値よりも少ない transport エージェントを使って他 のメッセージが配送されると、カレントメッセージは 他 のメッセージによる割り込みを受けます。 値が 0 に等しいと、transport に対するメッセージプリ エンプションは使えません。 transport_minimum_delivery_slots 少なくとも transport_minimum_delivery_slots の使 え る 配 送 スロットをためることができないメッセージが transport によって配送される時には、メッセージの 割 り込みは全く試行されません。 transport_delivery_slot_discount (有効範囲: 0..100) transport_delivery_slot_loan こ れらのパラメータはメッセージのプリエンプションが 起こるとすぐにスピードを上げます。要求された配送 ス ロッ トの全てが使えるようになるのを待つ代わりに、必 要量の transport_delivery_slot_discount % プ ラ ス transport_delivery_slot_loan がたまるだけ残っていれ ば、割り込みが起こります。他の割り込みが後で起こ る 前 に総量がたまらなければいけないことに注意してくだ さい。 default_delivery_slot_cost default_minimum_delivery_slots default_delivery_slot_discount default_delivery_slot_loan transport に固有のパラメータのデフォルト値は上に 書 かれています。 関連項目 master(8), プロセスマネージャー relocated(5), 移動したユーザのテーブルの書式 syslogd(8) システムロギング trivial-rewrite(8), アドレスルーティング ライセンス The Secure Mailer license はこのソフトウェアと一緒に配布さ れなければいけません。 作者 Wietse Venema IBM T.J. Watson Research P.O. Box 704 Yorktown Heights, NY 10598, USA Scheduler enhancements: Patrik Rak Modra 6 155 00, Prague, Czech Republic 1