Postfix と Dovecot の違い:受信メールサーバーの役割と切り分け
レビュー Once Email 技術レビュー
記事ガイド
この記事を読む価値
- 独自分析
- 一通の受信メールを SMTP 受理、キュー、LMTP 配送、保存、IMAP アクセスに分解し、各エラー証拠を実際に責任を持つコンポーネントへ割り当てます。
- トレンドの背景
- Postfix と Dovecot は現在も併用されますが、コンテナや管理パネルが転送、最終配送、メールボックス閲覧の境界を隠し、誤診を招きます。
- 実用的な価値
- 運用者は SMTP 拒否、キュー遅延、書き込み失敗、IMAP 不可視を区別する表と確認順序を得て、機密本文をログへ残さずに調査できます。
このページの内容
Postfix と Dovecot は一緒に導入されることが多いものの、同じ仕事はしません。一般的な受信システムでは、Postfix が SMTP を受理してキューを管理し、Dovecot が LMTP による最終配送や IMAP によるメールボックス閲覧を担当します。一方が稼働中でも、受信全体が正常とは限りません。
これは診断マップであり、本番設定の手順書ではありません。実運用には DNS、TLS、宛先検証、不正利用対策、権限、バックアップ、監視、リレー制限が必要です。Once Email は受信専用で、SMTP 送信、返信、転送、一斉送信を提供しません。
役割の比較
| 判断 | Postfix | Dovecot |
|---|---|---|
| 主なネットワーク役割 | SMTP の受信・送信 | IMAP/POP3 と LMTP 受け入れ |
| メールキュー | 管理する | 管理しない |
| SMTP 宛先の受理 | 通常は Postfix のマップとポリシー | 構成により利用者情報を提供 |
| 最終メールボックスへの格納 | ローカル配送または委譲 | Dovecot LMTP が最終配送可能 |
| クライアントによる閲覧 | 提供しない | 通常 IMAP で提供 |
したがって「Postfix か Dovecot か」ではなく、責任の境界を問うのが正確です。
一通の受信メールを追う
Postfix 公式アーキテクチャでは、ネットワークメールが smtpd と cleanup を経てキューへ入り、キューマネージャーが配送エージェントを選びます。
- SMTP 接続:送信側が Postfix に到達する。
- 宛先受理:Postfix がエンベロープ宛先を規則で受理・拒否する。
- キューと引き渡し:受理済みメールを local、virtual、pipe、LMTP へ渡す。
- 閲覧:配送後、Dovecot が認可済みクライアントへ IMAP で提供する。
SMTP の 250 は受信箱で見えることを意味しません。その後の LMTP、容量、保存エラーで deferred になる場合があります。逆に保存済みでも IMAP 認証、インデックス、名前空間、ファイル権限で見えないことがあります。
LMTP が二つを接続する
Postfix が SMTP とキューを持ち、Dovecot LMTP に最終配送を渡す構成があります。Dovecot の LMTP ガイドは Postfix spool 内の保護された Unix socket を示します。
socket はコピーするだけのパスではありません。所有者、グループ、モード、chroot 内の位置、サービス状態が契約です。到達不能なら通常はキューを遅延させるべきで、空の受信箱として扱ってはいけません。全員書き込み可能にせず、必要なサービスアカウントへ最小権限だけを与えます。認証と通信保護を設計せず LMTP を公開しません。
証拠で切り分ける
| 証拠 | 最初に確認する境界 |
|---|---|
| 25 番ポートへ接続不可 | DNS、Firewall、TLS、Postfix smtpd |
| 本文前に宛先拒否 | Postfix の宛先マップとポリシー |
| SMTP 受理後も deferred | Postfix キューと配送 transport |
| LMTP socket 不在・権限拒否 | Postfix–Dovecot 接続と権限 |
| LMTP の容量・書き込み失敗 | Dovecot 配送と保存領域 |
| ファイルはあるが IMAP に出ない | Dovecot 認証、名前空間、インデックス、権限 |
固有のテスト印と限定時間を使い、キュー ID、SMTP 状態区分、LMTP 結果、伏せ字済みメールボックス結果だけを残します。実アドレス、確認コード、Token、件名、本文、添付名、完全 URL を共有ログや Analytics に送りません。
設定変更前に4項目の追跡カードを作る
許可済みのテストメール1通について、秘匿化した4種類の事実だけを残します。これにより、受信、キュー、最終配送、メールボックス表示が同じトランザクションかを判断できます。
| 確認点 | 残す情報 | 分かること |
|---|---|---|
| SMTP受信 | 時刻、拡張ステータスクラス、短縮したキューID | Postfixが受信したことを示すが、最終配送の証明ではない |
| キュー結果 | 同じ短縮ID、transport名、delivered/deferred状態 | Postfixが配送経路を選び、完了または保留したことを示す |
| LMTP結果 | 宛先や本文を含まない成功またはエラークラス | Dovecot LMTPが最終配送を受理したか、限定的な理由を返した |
| 表示結果 | 前後のメールボックス件数とアプリの読取結果 | 保存状態が変わり、実際の読取経路から見えるかを示す |
最初は読み取り専用で確認します。postqueue -p はキューを一覧しますが、全件を持ち出さず短縮IDでローカルに絞ります。doveadm mailbox status -u TEST_USER "messages unseen" INBOX は、許可済みテストIDだけで件数を確認します。公式の Postfix キューツール と Dovecot mailbox status が各値の意味を定義しています。時刻と秘匿化マーカーも一致しなければ、同じメールの証拠にはなりません。
分類ミスを避ける安全な順序
Dovecot の導入だけでは SMTP listener は生まれず、Postfix だけでは IMAP 受信箱は提供されません。SPF、DKIM、DMARC は認証と alignment の別レイヤーです。認証結果ガイドで確認してください。
空のキューは成功の証明ではなく、bounce、期限切れ、明示的破棄、配送済みの可能性があります。空の受信箱も未着の証明ではなく、問い合わせ失敗、オフライン、別の名前空間があり得ます。「結果なし」「一時失敗」「空を確認」を分けます。
SMTP endpoint を確認し、認可済みの一通を送り、Postfix の受理、キュー、配送、Dovecot の保存、実際の IMAP 読み取りの順に追跡します。試験メールボックスを削除し、伏せ字の証拠だけを保持します。観測前に両サービスを再起動すると時刻とキューの証拠が消え、原因は分かりません。