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" に保存されたメッセージは誰かが開放するまでそこに留められ
ます。 sets them free.
配送状態レポート
qmgr デーモンは次のディレクトリのメッセージごとの配送状態レポートに注目
し つづけます。それぞれの状態レポートファイルは対応するメッセージファイ
ルと同じ名前です:
bounce メールがバウンスされた理由に関する受信者ごとの状態の情報。これら
のファイルは bounce(8) デーモンにより保守されます。
defer メールが遅延された理由に関する受信者ごとの状態の情報。これらのフ
ァイルは defer(8) デーモンにより保守されます。
trace Postfix "sendmail -v" または "sendmail -bv" コマンドで要求される
受信者ごとの状態の情報。これらのファイルは trace(8) デーモンによ
り保守されます。
qmgr デーモンは bounce(8)、defer(8) または trace(8) デーモンに不達レ ポ
ートを送るように依頼する責任を負います。
方法
キューマネージャにはキューファイルを開いたり(入力)メッセージ配送 (出力)
するための様々な方法が組み込まれています。
穴あきバケツ
この方法は active キュー内のメッセージの数を制限し、負荷が重い時
にキューマネージャがメモリを使い果たすのを防ぎます。
公 平 性 active キューの場所が空いている時、キューマネージャは incoming
キューと deferred キューから1メッセージずつ持ってきます。これ は
配送されずに残っているメールが新しいメールの配送を妨げることを防
ぎます。
スロースタート
この方法は同じ目的地への並列配送数をゆっくり調整することで、「大
群(thundering herd)」問題をなくします。
ラウンドロビン
キューマネージャは配送先で要求をソートします。ラウンドロビン選択
により、一つの送信先への配送が他の送信先を支配することがないよう
にします。
指数関数的遅延
最初の試行で配送できなかったメールは遅延されます。配送試行の時間
間隔はそれぞれの試行ごとに倍になります。
配送先状態キャッシュ
キューマネージャは配送できない送信先を短期間のメモリ内リストに保
持することで、不必要な配送試行を避けます。
プリエンプティブなメッセージスケジューリング
キューマネージャは、洗練されたプリエンプティブなメッセージスケジ
ューリングによってメッセージごとの正確な遅延を保存しつつ、受信者
ごとの平均の遅延を最小にしようとします。
トリガー
ア イドル状態のシステムでは、キューマネージャはイベントのトリガーの到着
を待つか、タイマーで落ちるのを待ちます。トリガーは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 のような複数のフロントエンドプロ
セスとディスクアクセスの競合をします。突然たくさんのメールが入ってく る
と、外への配送速度にネガティブな影響を及ぼすことがあります。
設定パラメータ
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)
遅延されたキューがキューマネージャによってスキャンされる時間間隔
。
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 の名前。
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(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)