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)