QMGR(8) QMGR(8) 名前 qmgr - Postfix キューマネージャ 書式 qmgr [generic Postfix daemon options] 解説 qmgr デーモンは入ってくるメールの到着を待ち、Postfix 配送 プロセスが配送するための準備をします。実際のメールルーティ ング方法は trivial-rewrite(8) デーモンに委託されます。この プログラムは master(8) プロセスマネージャから起動される こ とを想定しています。 ロ ーカルの double-bounce アドレス宛のメールは静かに捨てら れます。これにより配送できないバウンス通知によって起こる潜 在的なループが止められます。 メールキュー qmgr デーモンは次のキューの保守をします: incoming ネッ ト ワ ークから入ってくるメール、またはローカル pickup エージェントが maildrop ディレクトリから拾っ てきたメール。 active 配送するためにキューマネージャが開いたメッセージ。 active キューに入れられるメッセージは限られた数だけ です(固定された配送速度のための穴あきバケツ戦略)。 deferred 最 初 の 試行で配送できなかったメール。キューマネー ジャには配送試行の間隔を倍にして指数的に遅らせる 機 構が組み込まれています。 corrupt 読 めない、もしくは損傷したキューファイルは検査のた めにここに移動されます。 hold "hold" に保存されたメッセージは誰かが開放するまでそ こに留められます。 配送状態レポート qmgr デーモンは次のディレクトリのメッセージごとの配送状態 レポートに注目しつづけます。それぞれの状態レポートファイル は対応するメッセージファイルと同じ名前です: bounce なぜメールがバウンスされたかという受信者ごとの状態 の情報。これらのファイルは bounce(8) デーモンにより 保守されます。 defer なぜメールが遅延されたかという受信者ごとの状態の情 報。これらのファイルは defer(8) デーモンにより保 守 されます。 qmgr デーモンは bounce(8) や defer(8) デーモンに不達レポー トを送るように依頼する責任を負います。 方法 キューマネージャにはキューファイルを開いたり(入力)メッセー ジ配送 (出力)するための様々な方法が組み込まれています。 leaky bucket こ の 方 法は active キュー内のメッセージの数を制限 し、負荷が重い時にキューマネージャがメモリを使い 果 たすのを防ぎます。 fairness active キューの場所が空いている時、キューマネージャ は incoming キューと deferred キューから1メッセージ ず つ持ってきます。これは未処理のメールが新しいメー ルの配送を妨げることを防ぎます。 slow start この方法は同じ目的地への並列配送数をゆっくり調整 す る こ とで、「大群(thundering herd)」問題をなくしま す。 round robin キューマネージャは配送先で要求をソートします。ラ ウ ン ドロビン選択により、一つの送信先への配送が他の送 信先を支配することがないようにします。 exponential backoff 最初の試行で配送できなかったメールは遅延されま す。 配 送試行の時間間隔はそれぞれの試行ごとに倍になりま す。 destination status cache キューマネージャは配送できない送信先を短期間のメ モ リ 内リストに保持することで、不必要な配送試行を避け ます。 トリガー アイドル状態のシステムでは、キューマネージャはイベントのト リガーの到着を待つか、タイマーで落ちるのを待ちます。トリガ ーは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) 目 覚し。これはマスターサーバがサーバ群にいなくなら ないように説得するために使います。この動作は入っ て くるキューのスキャンをはじめます。 qmgr デーモンはトリガーのバッファ全体を読みます。複数の別 々のトリガー要求は一つにまとめられ、A と F が D と I よ り 先になるようにソートされます。従って、遅延キューを動かすに は A F D を要求し、キューマネージャに新しいメールの到着 を 知らせるには I を指定します。 標準 なし。qmgr デーモンは外界と接触しません。 セキュリティ qmgr デーモンはセキュリティに注意を払う必要がありません。 1文字メッセージを信頼しないローカルユーザから読み こ む た め、 サ ービス拒否攻撃(Denial of Service attacks) には弱く なっています。 qmgr デーモンは外の世界とは話を し ま せ ん し、chroot された環境では低い特権に固定されて動きます。 診断 問題や処理は syslog デーモンに記録されます。不正なメッセー ジファイルは詳細な調査のために corrupt キューにセーブさ れ ます。 notify_classes パラメータの設定によっては、ポストマスター にバウンスやその他のトラブルが通知されます。 バグ 単独のキューマネージャプロセスは smtpd のような複数のフ ロ ントエンドプロセスとディスクアクセスの競合をします。突然た くさんのメールが入ってくると、外への配送速度にネガティブな 影響を及ぼすことがあります。 設定パラメータ 以 下の main.cf パラメータは特にこのプログラムに関連があり ます。文法の詳細やデフォルト値は Postfix main.cf ファイ ル を参照してください。設定の変更後は postfix reload コマンド を使ってください。 その他 allow_min_user '-' で始まる受信者アドレスはバウンスしない。 queue_directory Postfix キューのトップレベルディレクトリ。 アクティブなキューの制御 qmgr_clog_warn_time 特定の配送先が active キューを妨げているという警 告 の最小遅延間隔。 0 を指定すると無効にします。 qmgr_message_active_limit アクティブなキューの数を制限します。 qmgr_message_recipient_limit メモリに保持する受信者の数を制限します。 こ のパラメータは単期間・メモリ内配送先キャッシュの サイズも制限します。 タイミング制御 minimal_backoff_time 遅延メッセージの配送試行間隔の最低秒数。 このパラメータは単期間・メモリ内配送先 状 態 キャッ シュ に 届 かない配送先を記憶しておく時間も制限しま す。 maximal_backoff_time 遅延メッセージの配送を試行する最大間隔秒数。 maximal_queue_lifetime 配送できないとして返送するまでキューに入っている 最 大の日数。 queue_run_delay 遅 延キューをスキャンする間隔の秒数。キューのスキャ ンは重なりません。 transport_retry_time 壊れた配送方法に連絡を試みる間隔の秒数。 並列度制御 下の文で transport は master.cf の最初のフィールドを指しま す。 qmgr_fudge_factor (有効範囲: 10..100) 大 きなメーリングリストのメッセージ配送にビジーなメ ールシステムが使う配送リソース の パ ー セ ン テ ー ジ。100% では、あるメッセージの配送は前のメッセージ が配送されるまで始まりません。これは大きなメーリ ン グ リストに対しては良い結果を生みますが、1対1のメー ルでは応答時間が悪くなります。100% より小さく す る と、1 対1のメールでは応答時間が向上しますが、大きな メーリングリストの配送は悪くなります。最悪の場 合、 リ ストの最初の受信者はすぐにメッセージを受け取りま すが、最後の人は同じメッセージが1日後に受け取 り ま す。 initial_destination_concurrency 同 じ配送先に並列で配送する際の、配送先ごとの並列度 の初期値。 default_destination_concurrency_limit 同じ配送先への並列度の制限数のデフォルト。 transport_destination_concurrency_limit 指定されたメッセージ transport での同じ配送先に対す る並列配送数の制限。 受信者制御 default_destination_recipient_limit メッセージ配送ごとの受信者数の制限のデフォルト。 transport_destination_recipient_limit 指定されたメッセージ 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 QMGR(8)