QMGR(8) QMGR(8) 名前 qmgr - Postfix キューマネージャ 書式 qmgr [generic Postfix daemon options] 解説 qmgr(8) デーモンは入ってくるメールの到着を待ち、Postfix 配送プロセスが 配送するための準備をします。実際のメールルーティング 方 法 は trivial- rewrite(8) デーモンに委託されます。このプログラムは master(8) プロセス マネージャから起動されることを想定しています。 ローカルの double-bounce アドレス宛のメールはログに記録されて捨てられま す 。これにより配送できないバウンス通知によって起こる潜在的なループが止 められます。 メールキュー qmgr(8)デーモンは次のキューの保守をします: incoming ネットワークから入ってくるメール、またはローカル pickup(8) エー ジェントが maildrop ディレクトリから拾ってきたメール。 active 配送するためにキューマネージャが開いたメッセージ。 active キュー に入れられるメッセージは限られた数だけです(固定された配送速度 の ための穴あきバケツ戦略)。 deferred 最初の試行で配送できなかったメール。キューマネージャには配送試行 の間隔を倍にして指数的に遅らせる機構が組み込まれています。 corrupt 読めない、もしくは損傷したキューファイルは検査のためにここに移動 されます。 hold "hold" に保存されたメッセージは誰かが開放するまでそこに留められ ます。 sets them free. 配送状態レポート qmgr(8) デーモンは次のディレクトリのメッセージごとの配送状態レポート に 注 目 し つづけます。それぞれの状態レポートファイルは対応するメッセージ ファイルと同じ名前です: bounce メールがバウンスされた理由に関する受信者ごとの状態の情報。これら のファイルは bounce(8) デーモンにより保守されます。 defer メールが遅延された理由に関する受信者ごとの状態の情報。これらのフ ァイルは defer(8) デーモンにより保守されます。 trace Postfix "sendmail -v" または "sendmail -bv" コマンドで要求される 受信者ごとの状態の情報。これらのファイルは trace(8) デーモンによ り保守されます。 qmgr(8) デーモンは bounce(8)、defer(8) または trace(8) デーモンに不達レ ポートを送るように依頼する責任を負います。 方法 キューマネージャにはキューファイルを開いたり(入力)メッセージ配送 (出力) するための様々な方法が組み込まれています。 穴あきバケツ この方法は active キュー内のメッセージの数を制限し、負荷が重い時 にキューマネージャがメモリを使い果たすのを防ぎます。 公平性 active キューの場所が空いている時、キューマネージャは incoming キューと deferred キューから1メッセージずつ持ってきます。これ は 配送されずに残っているメールが新しいメールの配送を妨げることを防 ぎます。 スロースタート この方法は同じ目的地への並列配送数をゆっくり調整することで、「大 群(thundering herd)」問題をなくします。 ラウンドロビン キューマネージャは配送先で要求をソートします。ラウンドロビン選択 により、一つの送信先への配送が他の送信先を支配することがないよう にします。 指数関数的遅延 最初の試行で配送できなかったメールは遅延されます。配送試行の時間 間隔はそれぞれの試行ごとに倍になります。 配送先状態キャッシュ キューマネージャは配送できない送信先を短期間のメモリ内リストに保 持することで、不必要な配送試行を避けます。 プリエンプティブなメッセージスケジューリング キューマネージャは、洗練されたプリエンプティブなメッセージスケジ ューリングによってメッセージごとの正確な遅延を保存しつつ、受信者 ごとの平均の遅延を最小にしようとします。 トリガー ア イドル状態のシステムでは、キューマネージャはイベントのトリガーの到着 を待つか、タイマーで落ちるのを待ちます。トリガーは1バイトのメッセージで す 。メッセージの到着に依存して、キューマネージャは次のうち一つの行動を 起こします(メッセージの後にソフトウェアの内部で使われるシンボル的な定数 が続きます): D (QMGR_REQ_SCAN_DEFERRED) deferred キューのスキャンをはじめます。すでに deferred キュー の スキャンが行なわれている最中であれば、それが終わり次第再びはじめ ます。 I (QMGR_REQ_SCAN_INCOMING) incoming キューのスキャンをはじめます。すでにスキャンが行なわれ ている最中であれば、それが終わり次第再びはじめます。 A (QMGR_REQ_SCAN_ALL) deferred キューファイルのタイムスタンプを無視します。要求は次 の deferred キュースキャン時に有効です。 F (QMGR_REQ_FLUSH_DEAD) 動いていない配送方法や配送先に関する全ての情報を消します。 W (TRIGGER_REQ_WAKEUP) 目覚し。これはマスターサーバがサーバ群にいなくならないように説得 するために使います。この動作は incoming キューのスキャンをはじめ ます。 qmgr(8)デーモンはトリガーのバッファ全体を読みます。複数の別々のトリガー 要求は一つにまとめられ、A と F が D と I より先になるようにソートされま す。従って、deferred キューを動かすには A F D を要求し、 キュー マ ネー ジャに新しいメールの到着を知らせるには I を指定します。 標準 RFC 3463 (拡張状態コード) RFC 3464 (配送状態通知) セキュリティ qmgr(8) デーモンはセキュリティに注意を払う必要がありません。 1文字 メッ セー ジ を 信 頼 しないローカルユーザから読みこむため、サービス拒否攻撃 (Denial of Service attacks) には弱くなっています。 qmgr(8)デーモンは 外 の世界とは話をしませんし、chroot された環境で低い特権に固定して動かすこ とができます。 診断 問 題や処理は syslog デーモンに記録されます。不正なメッセージファイルは 詳細な調査のために corrupt キューにセーブされます。 notify_classes パラメータの設定によっては、ポストマスターにバウンスやそ の他のトラブルが通知されます。 バグ 単独のキューマネージャプロセスは cleanup(8) のような複数のフロントエ ン ド プロセスとディスクアクセスの競合をします。突然たくさんのメールが入っ てくると、外への配送速度にネガティブな影響を及ぼすことがあります。 設定パラメータ qmgr(8) の処理は永続するものであるため、main.cf への変更は自動的には取 得されません。設定の変更後は "postfix reload" コマンドを使って く だ さ い。 以 下 の 文 章 はパラメータの概要のみを提供します。例を含む詳細は post- conf(5) を参照してください。 以下の文章で、transport は master.cf ファイルの最初のエントリです。 互換性の制御 allow_min_user (no) 最初の文字に `-' を持つ受信者アドレスを許します。 ACTIVE キューの制御 qmgr_clog_warn_time (300s) 特定の配送先が Postfix active キューを詰まらせているという警告の 最小遅延間隔。 qmgr_message_active_limit (20000) active キューのメッセージの最大数。 qmgr_message_recipient_limit (20000) Postfix キューマネージャがメモリ内に保持する受信者の最大数、およ び短期間・メモリ内の "動いていない" 配送先の状態キャッシュサイズ の最大サイズ。 qmgr_message_recipient_minimum (10) あらゆるメッセージに対するメモリ内受信者の最小値。 default_recipient_limit (10000) メモリ内受信者数の transport ごとのデフォルトの上限。 transport_recipient_limit ($default_recipient_limit) 指定された transport を使った配送に対して、上記と同じ。 default_extra_recipient_limit (1000) transport ごとの予備のメモリ内受信者数に課せられる制限のデフォル ト値。 transport_extra_recipient_limit ($default_extra_recipient_limit) 指定されたメッセージtransportを使った配送に対して、上記と同じ。 配送並列度の制御 initial_destination_concurrency (5) 同じ配送先に並列で配送する際の、配送先ごとの並列度の初期値。 default_destination_concurrency_limit (20) 同じ配送先への並列配送の、デフォルトの最大数。 transport_destination_concurrency_limit ($default_destination_concur- rency_limit) 指定されたメッセージ transport 配送に対して、上記と同じ。 受信スケジューリングの制御 default_destination_recipient_limit (50) メッセージ配送ごとの受信者数の、デフォルトの最大数。 transport_destination_recipient_limit ($default_destination_recipi- ent_limit) 指定されたメッセージtransportを使った配送に対して、上記と同じ。 メッセージスケジューリングの制御 default_delivery_slot_cost (5) Postfix キューマネージャのスケジューラがあるメッセージを他のメッ セージの配送に割り込みを許す頻度。 transport_delivery_slot_cost ($default_delivery_slot_cost) 指定されたメッセージtransportを使った配送に対して、上記と同じ。 default_minimum_delivery_slots (3) Postfix キューマネージャのスケジューリングアルゴリズムを呼び出さ なければならなくなる、1メッセージの受信者の数。 transport_minimum_delivery_slots ($default_minimum_delivery_slots) 指定されたメッセージtransportを使った配送に対して、上記と同じ。 default_delivery_slot_discount (50) transport に特有の _delivery_slot_discount 設定のデフォルト値。 transport_delivery_slot_discount ($default_delivery_slot_discount) 指定されたメッセージtransportを使った配送に対して、上記と同じ。 default_delivery_slot_loan (3) transport に特有の _delivery_slot_loan 設定のデフォルト値。 transport_delivery_slot_loan ($default_delivery_slot_loan) 指定されたメッセージ transport 配送に対して、上記と同じ。 その他のリソースおよび速度の制御 minimal_backoff_time (1000s) 遅延メッセージの配送を試行する最小の時間間隔。 maximal_backoff_time (4000s) 遅延メッセージの配送を試行する最大の時間間隔。 maximal_queue_lifetime (5d) 配送できないものとして送り返すまでに、メッセージがキューに入って いる最大の時間。 queue_run_delay (1000s) deferred キューがキューマネージャによってスキャンされる 時 間 間 隔。 transport_retry_time (60s) Postfix キューマネージャが異常なメッセージ配送 transport に接触 しようとする時間間隔。 Postfix バージョン 2.1 以降で使えます: bounce_queue_lifetime (5d) 配送できないと見なすまでに、バウンスメッセージがキューに入ってい る最大の時間。 その他の制御 config_directory ('postconf -d' の出力を参照) Postfix main.cf および master.cf 設定ファイルのデフォルト の 場 所。 daemon_timeout (18000s) ビルトイン監視タイマーによって終了するまでの、Postfix デーモンプ ロセスが要求を扱うことができる時間。 defer_transports (empty) 誰かが "sendmail -q" または等価なものを実行しなければメールを 配 送すべきではないメッセージ配送 transport の名前。 delay_logging_resolution_limit (2) ロ グ に小数点以下の遅延の値を記録する際の、小数点以下の最大の桁 数。 helpful_warnings (yes) 問題のある設定をログで警告し、参考になる忠告を提供します。 ipc_timeout (3600s) 内部通信チャネルを使った情報の送受信の時間制限。 process_id (read-only) Postfix コマンドまたはデーモンプロセスのプロセス ID。 process_name (read-only) Postfix コマンドまたはデーモンプロセスのプロセス名。 queue_directory ('postconf -d' の出力を参照) Postfix トップレベルキューディレクトリの場所。 syslog_facility (mail) Postfix ロギングの syslog facility 名。 syslog_name (postfix) 例えば "smtpd" が "postfix/smtpd" となるようにするために syslog レコードのプロセス名の前に付けられるメールシステムの名前。 ファイル /var/spool/postfix/incoming, incoming キュー /var/spool/postfix/active, active キュー /var/spool/postfix/deferred, deferred キュー /var/spool/postfix/bounce, 非配送状態 /var/spool/postfix/defer, 非配送状態 /var/spool/postfix/trace, 配送状態 関連項目 trivial-rewrite(8), アドレスルーティング bounce(8), 配送状態レポート postconf(5), 設定パラメータ master(5), 一般的なデーモンオプション master(8), プロセスマネージャ syslogd(8), システムロギング README ファイル SCHEDULER_README, スケジューリングアルゴリズム QSHAPE_README, Postfix キューの解析 ライセンス The Secure Mailer license はこのソフトウェアと一緒に配布されなければ い けません。 作者 Wietse Venema IBM T.J. Watson Research P.O. Box 704 Yorktown Heights, NY 10598, USA スケジューラの拡張: Patrik Rak Modra 6 155 00, Prague, Czech Republic QMGR(8)