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の定義に従って起動・停止を制御する。