Linuxメール配送をPostfixで動かす最小構成|ローカル配送からテスト送信までの実践手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, サーバー管理 > Linuxメール配送をPostfixで動かす最小構成|ローカル配送からテスト送信までの実践手順
「メールサーバーの設定って難しそう」「Postfixって何から始めればいいの?」
そう感じている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の設定も必ず確認する


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

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

最小構成で設定すべき5つのパラメーターを説明します。

1. myhostname|サーバーのホスト名

# /etc/postfix/main.cf myhostname = mail.example.com

このホスト名はメールヘッダーの Received: フィールドに記載されます。ローカル配送のみであればサーバーのFQDNを記入すれば問題ありません。

2. mydomain|ドメイン名

mydomain = example.com

myhostnameから自動的に推定されますが、明示的に記述しておくことを推奨します。

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

IPv6を使わない環境で 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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。