Postfixデーモン軍一覧と全体の動き
2025/10/23
PostFixでは、実に多くのデーモンが働いています。細かくわけることで、権限も分離し、悪意の攻撃から守り、また、効率的に働いています。
supported by chatGPT
📘 Postfix プロセス分類(常駐 / オンデマンド / パッシブ)
🟦 1. 常駐プロセス(Resident Daemons)
Postfix 起動時に master が生成し、その後も自律的に動き続ける「純粋な常駐デーモン」。
| デーモン名 | 主な役割 | 通信形態/起動契機 | 主な設定ファイル | 備考 |
|---|---|---|---|---|
| master | 全デーモンの親。サービス生成・監視 | Postfix起動時に常駐 | master.cf | Postfix全体の中枢 |
| pickup | maildrop 監視、ローカル送信メール検出 | 常駐。maildropを自律監視 | pickup(master.cf) | sendmail経由メール入口 |
| qmgr | キュー管理・配送スケジューリング | 常駐。incoming/active監視 | qmgr(master.cf) | Postfix配送の心臓部 |
| anvil | 接続レート制御(DoS対策) | 常駐。smtpdから統計を受信 | anvil設定 | 接続数統計デーモン |
| tlsmgr | TLSセッション管理・証明書キャッシュ | 常駐。TLS利用時に稼働 | tlsmgr(master.cf) | TLS裏方管理 |
🟩 2. オンデマンドプロセス(On-Demand Services)
master が「接続 or 配送開始要求」を契機に、 必要なときだけ spawn する能動型プロセス(終了後に消える)。
外部ネットワークとの能動通信(新規 TCP セッション開始)が特徴。
| デーモン名 | 主な役割 | 通信形態/起動契機 | 主な設定ファイル | 備考 |
|---|---|---|---|---|
| smtpd | SMTP受信(外部/MUA) | master が25をlisten→接続毎 spawn | smtpd(master.cf) | 認証/STARTTLS/SPF入口 |
| submission(smtpd) | 587での送信受付 | master が587をlisten→接続毎 spawn | submission(master.cf) | STARTTLS必須 |
| smtps(smtpd) | 465のSSL SMTP | master が465をlisten→接続毎 spawn | smtps(master.cf) | レガシー互換 |
| smtp | 外部MTAへの配送(送信) | qmgr→master が要求→spawn | smtp(master.cf) | 外部に能動 connect(送信) |
➡ smtp がオンデマンドに分類されるのは、外部MTAに能動的に TCP 接続する唯一の配送デーモンだから。
🟨 3. パッシブプロセス(Passive Components)
外部ネットワークへの能動通信は行わず、他デーモン(主に smtpd / qmgr)からの要求時にだけ動作する補助プロセス。
内部処理専門・オンデマンド性なし(仕事が来た時だけ働く)。
| プロセス名 | 主な役割 | 通信形態/起動契機 | 主な設定ファイル | 備考 |
|---|---|---|---|---|
| cleanup | メール整形・ヘッダ付与・キュー登録 | /private/cleanup ソケット要求時 |
cleanup(master.cf) | Received追加等 |
| local | UNIXローカル配送 | qmgr要求で起動 | local(master.cf) | /etc/aliases参照 |
| virtual | 仮想ドメイン配送 | qmgr要求で起動 | virtual_transport | LMTP環境では非推奨 |
| lmtp | Dovecot等へのLMTP配送 | qmgr要求でspawn | lmtp(master.cf) | mailbox_transport=lmtp |
| bounce | 不達通知(DSN)生成 | 配送デーモンの失敗時に起動 | bounce(master.cf) | エラーメール生成 |
| cleanup-proxy / trivial-rewrite | アドレス書換(canonical/virtual) | cleanup内部から呼び出し | 自動起動 | 書換エンジン |
| scache | SASL認証キャッシュ | smtpd要求時に稼働 | SASL設定 | 認証高速化 |
| verify | アドレス検証 | verify要求時に稼働 | address_verify_* | 通常は無効 |
| policyd-spf(外部) | SPFチェック | smtpd が呼び出し | policyd-spf行(master.cf) | 外部SPFポリシーサービス |
📘 上記の分類の方法
■ 常駐(Resident)
- 自律監視(maildrop / queue / TLS状況)
- 長期稼働
- master 起動後に常駐
- 外界イベントを待つのではなく“自ら仕事を探す”
■ オンデマンド(On-Demand)
- 外界(インターネット / MUA / 外部MTA)と能動通信
- master が「接続 or 配送要求」で毎回 spawn
- セッション終了でプロセス消滅
➡ smtpd と smtp がここに属する決定的理由 → 外部と能動的に通信するプロセス
■ パッシブ(Passive)
- 外界 TCP 接続を自ら開始しない
- qmgr や smtpd など内部プロセスからの依頼に応じて起動
- 内部処理専門、補助的
補足
Postfixはmasterプロセスを中心としたモジュール構造をとる。
- master.cf … 各デーモンの起動方式(inet/unix、chroot、プロセス数など)を定義。
- main.cf … 動作全体のポリシー設定を定義(受信・配送ルールなど)。
- smtpd は受信専用、smtp は送信専用。
*Postfix メール処理の流れ(送信と受信)
送信時(自サーバーから外部へメールを送る場合)
| 処理順 | デーモン | 主な役割 | 備考 |
|---|---|---|---|
| ② | cleanup | メールを正規化し、ヘッダ整形・ポリシー適用後にキュー登録。 | Message-ID付与、ヘッダ追加、フィルタ適用など。 |
| ③ | qmgr | キュー内のメールを監視し、配送順序や宛先別再試行を管理。 | 配送スケジューラの役割。 |
| ④ | smtp(またはlmtp/virtual/local) | 宛先に応じて外部SMTPサーバー等へ配送。 | smtp_tls_security_level等の設定がここで適用。 |
| ⑤ | bounce(失敗時) | 配送失敗時にエラーメール(DSN)を生成して再度pickupへ。 | エラーメール通知を自動生成。 |
Submission経由の送信(クライアント送信用)
| 処理順 | デーモン | 主な役割 |
|---|---|---|
| ② | cleanup | 上記と同様。 |
| ③ | qmgr | 上記と同様。 |
| ④ | smtp | 外部サーバーに転送。 |
【送信フロー(概略)】
(sendmail, submission)
↓
pickup → cleanup → qmgr → smtp → (外部サーバ)
受信時(外部から自サーバー宛にメールを受け取る場合)
| 処理順 | デーモン | 主な役割 | 備考 |
|---|---|---|---|
| ② | cleanup | 受信メールを標準化し、必要ヘッダを追加して内部キューに登録。 | spam対策・ヘッダ挿入・形式統一。 |
| ③ | qmgr | キュー内のメールを監視し、宛先に応じた配送モジュールを選択。 | local/virtual/lmtpのいずれかへ転送。 |
| ④ | lmtp(またはvirtual/local) | Dovecotなどへメールを実際に配信。 | mailbox_transport = lmtp:unix:private/dovecot-lmtp等。 |
| ⑤ | dovecot(Postfix外) | LMTPで受信したメールをMaildir形式で保存。 | IMAP/POP3経由で閲覧可能に。 |
【受信フロー(概略)】
(外部サーバ)
↓
smtpd → cleanup → qmgr → (local | virtual | lmtp) → Dovecot
補足デーモン(補助的に関与するもの)
| デーモン | 関与方向 | 主な機能 |
|---|---|---|
| tlsmgr | 送受信双方 | TLS証明書キャッシュやセッション管理。 |
| scache | 送受信双方 | SASL認証キャッシュで認証負荷軽減。 |
| bounce | 双方 | 配送エラー時に呼び出され、エラーメール生成。 |
まとめ
送信経路の主役:pickup → cleanup → qmgr → smtp
受信経路の主役:smtpd → cleanup → qmgr → lmtp(→ Dovecot)
Postfixは「master」がこれらの各デーモンを監督し、master.cfの定義に従って起動・停止を制御する。