変更要約: 初版(主題2.10・副主題2.10.1〜2.10.2に対応)
4.1Postfixの設定と管理
Postfix(MTA)の設定体系を学びます。/etc/postfix/main.cf(動作パラメータ)とmaster.cf(サービス起動定義)の役割分担、/etc/aliasesによる宛先の付け替え、/var/spool/postfix/のキュー構造、ログの確認、SMTP認証(SASL)とTLSによる暗号化、SMTPプロトコルの基本、代替MTAとしてのeximの位置づけを押さえます。
電子メールは「送る(MTA)」「受け取って配送する(MDA)」「取り出す(MRA)」という役割分担で成り立っています。PostfixはこのうちMTA(メール転送エージェント)を担い、Linux で最も広く使われるメールサーバーソフトウェアです。設定を丸暗記するのではなく、「どのファイルが何を決めるか」の地図を持つことが実務でも試験でも近道になります。
4.1.1main.cf・master.cf・aliases
- 設定ファイルは/etc/postfix/に集約。main.cf=Postfix本体の動作パラメータ(受信ドメイン・リレー許可・TLS設定など)を1行1パラメータで記述。master.cf=どのサービス(smtp・submission・pickup 等)をどのプロセスで起動するかを定義するテーブル形式。
- 宛先の付け替えは/etc/aliases(例
root: admin@example.comでroot宛メールを転送)。編集後は必ずnewaliases(またはpostalias)を実行してハッシュ形式のデータベースに反映させないと有効にならない。 - メールは即座に配送されるとは限らず、いったん/var/spool/postfix/配下のキュー(incoming・active・deferred・hold・corrupt 等)を経由する。滞留メールの確認・強制配送は
postqueue・postsuperで行う。 - 動作ログは/var/log/配下(多くのディストリで
/var/log/maillogや/var/log/mail.log、systemd系はjournalctl)に出力され、配送失敗・認証失敗の切り分けの一次情報になる。
4.1.2SMTP認証・TLS・プロトコル
- SMTPプロトコルはテキストベースのコマンド応答方式(HELO/EHLO・MAIL FROM・RCPT TO・DATA・QUIT)。25番ポート=サーバー間中継、587番=クライアントからの投稿(submission)に使われることが多い。
- 第三者中継を防ぎつつ正規ユーザーの投稿を許可する仕組みがSMTP認証(SASL)。クライアントはSMTPセッション中にユーザー名・パスワードで認証してから送信を許可される。
- 通信の暗号化はTLSで行う。平文でのパスワード送信を避けるため、認証とTLSは組み合わせて使われるのが通例。
「main.cfはパラメータ・master.cfはサービス定義」「aliases編集後はnewaliasesが必須」「メールはいきなり届くのではなくキューを経由する」 の3点がPostfix設定の急所です。SMTP関連は「認証+TLSの併用で平文パスワードを避ける」という組み合わせで狙われます。
実務のトラブルシュートは「設定を疑う前にキューとログを見る」が鉄則です。メールが届かないという報告を受けたら、まずpostqueue -p(またはmailq)でキューの滞留を確認し、/var/log/のメールログでSMTP応答コードや配送エラーの理由を追います。/etc/aliasesを編集してroot宛の運用通知を管理者アドレスへ転送する設定はよくある作業ですが、newaliasesを忘れると変更が反映されないという定番の落とし穴があります。SMTP認証を有効化する場合、main.cfでSASL関連パラメータ(認証を要求するか・許可する経路など)を設定し、master.cf側でTLS対応のサービスエントリ(例えばsubmissionポート587での起動)を用意する、という2ファイルの役割分担を意識すると設定の見通しが良くなります。なお、LinuxのメールサーバーはPostfix一択ではなく、歴史的にはeximも広く使われてきた代替MTAで、設定思想やファイル配置は異なるものの、同じくMTAとしてSMTPを話す点は共通しています。
| ファイル/コマンド | 役割 | 補足 |
|---|---|---|
| /etc/postfix/main.cf | Postfix本体の動作パラメータ | 受信ドメイン・TLS・SASL設定など |
| /etc/postfix/master.cf | 起動するサービスの定義 | smtp・submission等をテーブル形式で |
| /etc/aliases + newaliases | 宛先の付け替え | 編集後は必ずnewaliasesでDB再生成 |
| /var/spool/postfix/ | メールキュー | incoming/active/deferred等 |
ひっかけ: 「/etc/aliasesを編集すればすぐに転送設定が有効になる」は誤りです。aliasesはテキストファイルにすぎず、Postfixが参照するのはハッシュ化されたデータベースなので、newaliasesを実行するまで反映されません。また「main.cfがサービスの起動定義、master.cfがパラメータ」という取り違えも定番の誤り=main.cf=パラメータ、master.cf=サービス定義が正しい対応です。
4.1.3この節のまとめ
- main.cf=動作パラメータ/master.cf=サービス定義/aliasesはnewaliasesで反映/メールはキュー経由
- SMTP認証(SASL)+TLSで正規利用者の投稿を許可しつつ平文パスワードを避ける。代替MTAにexim
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. root宛のメールを管理者アドレスadmin@example.comへ転送するよう/etc/aliasesを編集した。設定を有効にするために次に行うべき操作は?
Q2. Postfixで「どのサービス(smtp・submissionなど)をどのプロセスとして起動するか」を定義しているファイルはどれ?
Q3. クライアントからのメール投稿で、第三者中継を防ぎつつ正規ユーザーにのみ送信を許可し、かつ認証情報を平文で流したくない。組み合わせるべき仕組みは?

