この記事の位置づけ
Postfix を内部向けメールサーバーとして構成する記事です。relayhost、mynetworks、配送経路を整理し、ローカル MTA より広いメール基盤として扱います。
Ubuntu 22.04 で内部向け Postfix メールサーバーを構築する手順です。ここで扱うのは、外部公開の MX サーバーではなく、内部システムやサーバー群から通知メールを受け取り、必要に応じて relayhost へ配送する SMTP 基盤です。
ローカル MTA が「そのサーバー自身の通知を送る」ための構成だとすれば、内部向け Postfix は「複数の内部サーバーやアプリケーションから SMTP を受ける」構成です。そのため、mynetworks の範囲、待ち受けインターフェース、リレー先、オープンリレー防止を明確にします。
mynetworks を広くしすぎず、外部公開メールサーバーとは別の責務として設計します。この記事で扱う内容は次の通りです。
- ローカル MTA と内部向け Postfix の違い
mynetworksによる内部ネットワークの許可relayhostによる上位 SMTP への中継main.cfの基本設定- 送信テスト、ログ確認、オープンリレー防止の確認
| 対象 OS | Ubuntu 22.04 |
|---|---|
| 用途 | 内部サーバー・内部アプリケーション向け SMTP 中継 |
| サービス | postfix.service |
| 主な設定ファイル | /etc/postfix/main.cf, /etc/aliases |
| 重要項目 | mynetworks, relayhost, smtpd_relay_restrictions |
main.cf で待ち受けと許可ネットワークを設定するrelayhost を設定する次に読む記事
書籍
Postfix 実用ガイド
Postfix の中継、配送、運用を深く確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
内部向け Postfix の位置づけ
内部向け Postfix は、内部ネットワークにあるサーバーやアプリケーションから SMTP を受け、ローカル配送または上位 SMTP サーバーへの中継を行います。メールボックスの閲覧は Dovecot、外部公開のメール受信は MX サーバー側の責務です。
| 要素 | 役割 |
|---|---|
| Postfix | SMTP 受付、配送、リレーを扱う MTA |
mynetworks | リレーを許可する内部ネットワーク |
relayhost | 外部配送や上位メールサーバーへの中継先 |
| Dovecot | IMAP / POP3 とメールボックス閲覧を扱う |
| DNS / MX | 外部公開メールでは重要。内部用途では設計次第 |
Postfix をインストールする
Postfix とテスト送信用の mailutils をインストールします。
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt install -y postfix mailutilsサービス状態を確認します。
systemctl status postfix.service --no-pagermain.cf を設定する
内部ネットワークから SMTP を受ける場合、inet_interfaces と mynetworks を明示します。次の例では、内部ネットワーク 10.0.0.0/24 と fd00:10::/64 からの利用を許可しています。
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.bak.$(date +%Y%m%d%H%M%S)
sudo tee /etc/postfix/main.cf >/dev/null <<'EOF'
myhostname = mail.example.internal
mydomain = example.internal
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost
inet_interfaces = all
inet_protocols = all
mynetworks = 127.0.0.0/8, [::1]/128, 10.0.0.0/24, [fd00:10::]/64
relayhost = [smtp.example.internal]:587
smtpd_relay_restrictions = permit_mynetworks, reject_unauth_destination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mailbox_size_limit = 0
recipient_delimiter = +
EOFsmtpd_relay_restrictions で permit_mynetworks と reject_unauth_destination を組み合わせ、許可した内部ネットワーク以外からの中継を拒否します。
mynetworks を広げすぎない
mynetworks は、Postfix が中継を許可するネットワークです。ここを広げすぎると、想定外のホストからメール中継される可能性があります。
内部向け SMTP であっても、全社ネットワーク全体や VPN 全体を無条件に許可するのではなく、通知を送るサーバーセグメントやアプリケーションセグメントに絞る方が安全です。
relayhost を設定する
relayhost は、外部配送や上位メールサーバーへの中継先です。内部 Postfix から直接インターネットへ配送するより、上位 SMTP に集約する方が運用しやすい場合があります。
sudo postconf -e 'relayhost = [smtp.example.internal]:587'
sudo postconf -e 'smtp_tls_security_level = may'認証が必要な上位 SMTP を使う場合は、SASL 認証、パスワードファイル、TLS 設定も必要になります。内部向け SMTP の記事では、まず relayhost へ渡す設計を中心に扱います。
aliases を設定する
root や postmaster 宛てのメールを管理者に転送します。
sudo cp /etc/aliases /etc/aliases.bak.$(date +%Y%m%d%H%M%S)
sudo tee /etc/aliases >/dev/null <<'EOF'
postmaster: root
root: admin@example.com
EOF
sudo newaliases設定を確認する
Postfix の有効な設定を確認します。
postconf -n構文確認とサービス再起動を行います。
sudo postfix check
sudo systemctl restart postfix.service
systemctl status postfix.service --no-pager送信テストを行う
メールサーバー自身からテストメールを送信します。
printf 'Postfix internal relay test\n' | mail -s 'postfix internal test' admin@example.com内部クライアントから送信する場合は、SMTP サーバーに対して接続できることを確認します。
nc -vz mail.example.internal 25送信後はログを確認します。
sudo journalctl -u postfix -n 100 --no-pager
sudo tail -n 100 /var/log/mail.logオープンリレーではないことを確認する
内部向け Postfix では、許可していないネットワークから第三者宛てにリレーできないことが重要です。実際の確認は、許可外ネットワークのテスト端末から行います。
swaks --to test@example.net --server mail.example.internal --from outside@example.orgswaks がない場合は、別途インストールするか、SMTP テストができる端末から確認します。許可外ネットワークから中継できてしまう場合は、mynetworks と smtpd_relay_restrictions を見直します。
Dovecot との責務分離
Postfix は SMTP の受付、配送、中継を担当します。ユーザーがメールボックスを IMAP で読む場合は Dovecot の役割です。Postfix の設定だけで、IMAP 閲覧やメールボックス管理まで完結するわけではありません。
メールボックスを扱う構成は、Ubuntu 22.04 Dovecot IMAP サーバー 側で分けて考えます。
運用上の注意
mynetworksを必要最小限にする- relayhost の障害時に通知メールが滞留することを想定する
- メールキューを確認できるようにする
- ログから配送失敗を追えるようにする
- 内部 DNS 名とサーバー証明書、送信元ドメインの整合性を確認する
mailq
postqueue -p内部 DNS は SMTP の到達性にも影響します。内部名前解決を扱う場合は、Ubuntu 22.04 BIND 内部 DNS も関連します。
まとめ
Ubuntu 22.04 で内部向け Postfix を構築する場合は、ローカル MTA とは違い、内部ネットワークからの SMTP 受付と中継制御を設計します。中心になるのは mynetworks、relayhost、smtpd_relay_restrictions です。
内部向けであっても、オープンリレーにならないことを確認する必要があります。送信テストだけでなく、許可外ネットワークから中継できないこと、ログで配送状況を追えること、relayhost 障害時の滞留を確認できることまで見ておくと、運用しやすい SMTP 基盤になります。

