そう感じているLinuxエンジニアは多いです。
Postfixは設定ファイルの構成がシンプルで、最小構成であれば30分かからずに動かせます。ポイントを押さえれば、初めてでも迷わずに進めることができます。
この記事では、Rocky Linux 9(RHEL 9互換)を使ったPostfixの最小構成を解説します。「ローカル配送でメールを受け取る」「mailコマンドでテスト送信する」という2ステップを動かしながら、main.cfの重要パラメーターと動作確認方法を順を追って説明します。
この記事のポイント
・Postfixの最小構成はmain.cfの5パラメーターを設定するだけで動く
・ローカル配送は外部ネットワーク不要。サーバー内でメールを完結できる
・mailコマンド+/var/log/maillogの確認でエラーをすぐ特定できる
・本番化する前にfirewalld(25/tcp)とSELinuxの設定も必ず確認する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Postfixとは|Linux標準のMTA(メール転送エージェント)
MTA(Mail Transfer Agent)とは、メールを送受信する役割を持つソフトウェアです。Sendmail、Postfix、Exim などが代表的ですが、RHEL/CentOS/Rocky Linux では Postfix が事実上の標準 MTA として採用されています。Postfixの特徴は以下の3点です。
・設定ファイルがシンプル:Sendmailに比べてmain.cfのパラメーターが分かりやすい
・モジュール構造:ローカル配送・リレー・バウンス処理が別プロセスに分離されており、障害の影響範囲が限定される
・RHEL系での実績:Red Hat公式パッケージとして長期間メンテナンスされている
この記事では「外部SMTPリレーなし」「ローカル配送のみ」の最小構成を扱います。cronのメール通知や社内用ログ配送など、外部に出さないメールがターゲットです。
動作環境と前提条件
この記事の手順はRocky Linux 9.4(RHEL 9互換)で動作確認しています。CentOS 8 Stream、AlmaLinux 9でも同様の手順で動作します。・OS:Rocky Linux 9.4(kernel 5.14.0-503.el9.x86_64)
・Postfix:3.5.9(dnfでインストール)
・SELinux:enforcing(変更なし)
・作業ユーザー:rootまたはsudo実行権のあるユーザー
なお、外部へのSMTP送信(25番ポートでの接続)はVPSやクラウドでは多くの場合ブロックされています。この記事のローカル配送はそのポートを使わないため、VPS上でも問題なく動作します。
Postfixのインストールと起動確認
1. パッケージをインストールする
Rocky Linux 9の最小インストール環境にはPostfixが含まれていない場合があります。まずインストール状態を確認します。# インストール確認 rpm -q postfix # 未インストールの場合 dnf install -y postfix
# バージョン確認 postconf mail_version # 出力例 mail_version = 3.5.9
2. Postfixを起動してサービスを有効化する
# 起動 systemctl start postfix # 自動起動を有効にする systemctl enable postfix # ステータス確認 systemctl status postfix
* postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; preset: disabled) Active: active (running) since Mon 2026-06-16 09:12:34 JST; 5s ago Process: 12345 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS) Main PID: 12400 (master) Tasks: 3 (limit: 4672) Memory: 4.2M CPU: 124ms CGroup: /system.slice/postfix.service ├─12400 /usr/libexec/postfix/master -w ├─12401 pickup -l -t unix -u └─12402 qmgr -l -t unix -u
main.cfの最小設定|5つのパラメーターを押さえる
Postfixのメイン設定ファイルは/etc/postfix/main.cf です。デフォルト状態でも動作しますが、自分のサーバー環境に合わせた最低限の設定を確認・変更します。# 現在の設定値を確認(デフォルト値も含めて表示) postconf -n
1. myhostname|サーバーのホスト名
# /etc/postfix/main.cf myhostname = mail.example.com
Received: フィールドに記載されます。ローカル配送のみであればサーバーのFQDNを記入すれば問題ありません。2. mydomain|ドメイン名
mydomain = example.com
3. inet_interfaces|待ち受けインターフェース
# ローカルのみ(外部からのSMTP接続を受け付けない) inet_interfaces = loopback-only # 全インターフェースで受け付ける場合(外部公開時) # inet_interfaces = all
loopback-only に設定することで外部からのSMTP接続を遮断できます。これがセキュリティ上の基本です。4. mynetworks|中継を許可するネットワーク
# ループバックのみ許可(最小構成) mynetworks = 127.0.0.0/8 [::1]/128
mynetworksの詳細な書き方については、postfix mynetworks の書き方はこちらで解説しています。
5. inet_protocols|使用するプロトコル
# IPv4のみ(推奨。IPv6環境がない場合) inet_protocols = ipv4 # IPv4とIPv6の両方 # inet_protocols = all
all に設定すると起動時に警告が出ることがあります。明示的に ipv4 を指定しておくのが安全です。設定変更後のリロード
main.cfを変更したら、必ずリロードして反映させます。# 設定をリロード(接続を切断せずに反映) postfix reload # または systemctl を使う systemctl reload postfix # 設定に構文エラーがないか事前確認 postfix check
ローカル配送のテスト送信|mailコマンドで動作確認
1. mailコマンドをインストールする
mailコマンドはmailx パッケージに含まれています。# インストール確認 rpm -q mailx # 未インストールの場合 dnf install -y mailx
2. テストメールを送信する
# 基本形:カレントユーザーへ送信 echo "テスト本文" | mail -s "テスト件名" $(whoami) # rootユーザーへ送信 echo "Postfix動作テスト" | mail -s "local delivery test" root # 特定ユーザーへ echo "動作確認" | mail -s "test" testuser@localhost
3. 受信メールを確認する
ローカル配送されたメールは/var/spool/mail/ 配下のユーザー名のファイルに蓄積されます。# rootに届いたメールを確認 cat /var/spool/mail/root # mailコマンドで確認(インタラクティブ) mail # 実際の出力例 From root@mail.example.com Mon Jun 16 09:15:22 2026 Return-Path:
X-Original-To: root Delivered-To: root@mail.example.com Received: by mail.example.com (Postfix, from userid 0) id A1B2C3D4; Mon, 16 Jun 2026 09:15:22 +0900 (JST) Date: Mon, 16 Jun 2026 09:15:22 +0900 To: root@mail.example.com Subject: local delivery test Message-Id: <20260616001522.A1B2C3D4@mail.example.com> Postfix動作テスト
Delivered-To: と Received: by が表示されていれば、ローカル配送が正常に機能しています。メールログの確認|/var/log/maillogを読む
Postfixは/var/log/maillog にすべての配送ログを記録します。問題が発生した場合の最初の確認先はここです。# 最新のログを表示 tail -f /var/log/maillog # テスト送信後の確認(直近20行) tail -n 20 /var/log/maillog
Jun 16 09:15:20 svr01 postfix/pickup[12401]: A1B2C3D4: uid=0 from=
Jun 16 09:15:20 svr01 postfix/cleanup[12450]: A1B2C3D4: message-id=<20260616001520.A1B2C3D4@mail.example.com> Jun 16 09:15:20 svr01 postfix/qmgr[12402]: A1B2C3D4: from= , size=512, nrcpt=1 (queue active) Jun 16 09:15:22 svr01 postfix/local[12460]: A1B2C3D4: to= , relay=local, delay=2.1, delays=2.0/0.05/0/0.05, dsn=2.0.0, status=sent (delivered to mailbox) Jun 16 09:15:22 svr01 postfix/qmgr[12402]: A1B2C3D4: removed
status=sent (delivered to mailbox) が正常配送の証です。Postfixのメールログの詳しい見方については、Postfix の基本設定の解説にまとめています。
firewalldとSELinuxの確認
firewalldの設定
ローカル配送(loopback-only設定)であれば、firewalldの設定変更は不要です。外部からのSMTP接続を受け付ける場合(inet_interfaces = all)は25番ポートを開放します。# SMTPポートを開放(外部公開時のみ) firewall-cmd --permanent --add-service=smtp firewall-cmd --reload # 設定確認 firewall-cmd --list-services
SELinuxの確認
Rocky Linux 9ではSELinuxがデフォルトでenforcing(強制モード)です。Postfixはデフォルトでpostfix_tドメインで動作しており、通常の設定では問題が発生しません。ただし、非標準ポートやディレクトリを使用する場合はSELinuxの許可設定が必要になります。まずはdenialが出ていないか確認します。
# SELinux関連のdenialを確認 ausearch -m avc -ts recent | grep postfix # denialがない場合は何も表示されない(正常)
トラブルシュート|よくあるエラーと対処法
【エラー】「postfix: fatal: open /etc/postfix/main.cf: No such file or directory」
Postfixがインストールされていないか、設定ファイルが壊れています。# パッケージを再インストール dnf reinstall postfix
【エラー】「Connection refused」(SMTPポートに接続できない)
inet_interfaces = loopback-only に設定している場合、外部からの接続は拒否されます。これは意図した動作です。ローカルからのみ接続できます。# ループバックに対してtelnetで接続確認 telnet 127.0.0.1 25 # 正常な場合の出力 Connected to 127.0.0.1. Escape character is '^]'. 220 mail.example.com ESMTP Postfix
【エラー】メールが届かない・キューに溜まる
キューの状態を確認します。# メールキューの確認 mailq # または postqueue -p # キューが溜まっている場合は即時再試行 postqueue -f
username@localhost または username@hostname に設定してください。Postfixのメールキュー操作の詳細については、Postfix の基本設定の解説を参照してください。
【エラー】「Relay access denied」(外部ドメインへのリレー拒否)
mynetworks に送信元IPアドレスが含まれていない場合に発生します。# 現在のmynetworks設定を確認 postconf mynetworks # ループバックのみの設定例 mynetworks = 127.0.0.0/8 [::1]/128
リレー設定への拡張|次のステップ
この記事で解説したローカル配送ができたら、次は実際の運用で必要になる設定に進めます。・メールリレー設定:Postfix リレー設定の詳細でrelayhost設定を解説しています
・SMTP認証(SASL):Postfix SMTP-AUTH 設定でユーザー認証付き送信を解説しています
・TLS暗号化:Postfix TLS 設定の手順でSTARTTLSとSSL/TLSを解説しています
本記事のまとめ
Postfixの最小構成で必要な作業とコマンドを整理します。| やりたいこと | コマンド・設定 |
|---|---|
| Postfixをインストールする | dnf install -y postfix |
| Postfixを起動する | systemctl start postfix |
| 設定ファイルを確認する | postconf -n |
| 設定をリロードする | postfix reload |
| 設定の構文チェック | postfix check |
| テストメールを送る | echo "本文" | mail -s "件名" root |
| 受信メールを確認する | cat /var/spool/mail/root |
| メールログを確認する | tail -f /var/log/maillog |
| メールキューを確認する | mailq |
| キューを即時再試行する | postqueue -f |
Postfixの「動く最小構成」を作れると、その先の設定(リレー・認証・TLS)がどこに何を追加すれば動くかが見えてきます。まずはローカル配送でPostfixの挙動を手元で確認してみてください。
Postfixの「動く最小構成」から始めて、実務レベルのサーバー管理スキルへ
ローカル配送でメールを動かす感覚が掴めると、リレー・認証・TLSの仕組みも自然につながってきます。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Linuxサーバーの初期セキュリティ設定チェックリスト|公開直後にやるべき10項目を実機で解説
- 前のページへ:Linuxサーバーのシステム情報をまとめて把握する方法|hostnamectl・lscpu・uname -aを一画面で確認
- この記事の属するカテゴリ:Linuxtips・サーバー管理へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます