NQMGR(8) NQMGR(8) 名前 nqmgr - Postfix キューマネージャ 書式 nqmgr [generic Postfix daemon options] 解説 nqmgr デーモンは入ってくるメールの到着を待ち、Postfix 配送 プロセスが配送するための準備をします。実際のメールルーティ ング方法は trivial-rewrite(8) デーモンに委託されます。この プログラムは master(8) プロセスマネージャから起動される こ とを想定しています。 ロ ーカルの double-bounce アドレス宛のメールは静かに捨てら れます。これにより配送できないバウンス通知によって起こる潜 在的なループが止められます。 メールキュー nqmgr デーモンは次のキューの保守をします: incoming ネッ ト ワ ークから入ってくるメール、またはローカル pickup エージェントが maildrop ディレクトリから拾っ てきたメール。 active 配送するためにキューマネージャが開いたメッセージ。 active キューに入れられるメッセージは限られた数だけ です(固定された配送速度のための穴あきバケツ戦略)。 deferred 最 初 の 試行で配送できなかったメール。キューマネー ジャには配送試行の間隔を倍にして指数的に遅らせる 機 構が組み込まれています。 corrupt 読 めない、もしくは損傷したキューファイルは検査のた めにここに移動されます。 hold "hold" に保存されたメッセージは誰かが開放するまでそ こに留められます。 配送状態レポート 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 キューマネージャは洗練されたプリエンプティブメッ セ ー ジスケジューリングを使ってメッセージ毎の正確な遅 延を保存する一方で、受信者毎の遅延の平均を最小化 し ようとします。 トリガー アイドル状態のシステムでは、キューマネージャはイベントのト リガーの到着を待つか、タイマーで落ちるのを待ちます。トリガ ー は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 "-" で始まる受信者アドレスはバウンスしない。 queue_directory Postfix キューのトップレベルディレクトリ。 アクティブなキューの制御 下 の文章で、transport は master.cf エントリの最初のフィー ルドです。 qmgr_clog_warn_time 特定の配送先が active キューを妨げているという警 告 の最小遅延間隔。 0 を指定すると無効にします。 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 が持つことが可能なメモリ内受 信者数の制限。 タイミング制御 minimal_backoff_time 遅延メッセージの配送試行間隔の最低秒数。 こ の パ ラメータは単期間・メモリ内配送先状態キャッ シュに届かない配送先を記憶しておく時間も制 限 し ま す。 maximal_backoff_time 遅延メッセージの配送を試行する最大間隔秒数。 maximal_queue_lifetime 配 送できないとして返送するまでキューに入っている最 大の日数。 queue_run_delay 遅延キューをスキャンする間隔の秒数。キューのス キャ ンは重なりません。 transport_retry_time 壊れた配送方法に連絡を試みる間隔の秒数。 並列度制御 initial_destination_concurrency 同 じ配送先に並列で配送する際の、配送先ごとの並列度 の初期値。 default_destination_concurrency_limit 同じ配送先への並列度の制限数のデフォルト。 transport_destination_concurrency_limit 指定されたメッセージ transport での同じ配送先に対す る並列配送数の制限。 受信者制御 default_destination_recipient_limit メッセージ配送ごとの受信者数の制限のデフォルト。 transport_destination_recipient_limit 指定されたメッセージ transport での、メッセージ配送 ごとの受信者数の制限のデフォルト。 メッセージのスケジューリング transport_delivery_slot_cost (有効範囲: 0,2,3...) このパラメータは基本的に、transport によるメッセ ー ジ 配送が他のメッセージに割り込まれる頻度を制御しま す。メッセージ/配送内部カウンタは それぞれの trans- port によって扱われる transport_delivery_slot_cost 配送に対して、 1 だけ増加します。このカウンタは他の メッ セージが使うための "利用可能な配送スロット" の 数を表しています。 "利用可能な配送スロット" カウ ン タの値よりも少ない transport エージェントを使って他 のメッセージが配送されると、カレントメッセージは 他 のメッセージによる割り込みを受けます。 値が 0 に等しいと、transport に対するメッセージの割 り込みを無効にします。 transport_minimum_delivery_slots 利用可能な配送スロットを少なくとも transport_mini- mum_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), プロセスマネージャー 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 NQMGR(8)