手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Postfix 内部向けメールサーバー – relayhost と配送経路を設計する

この記事の位置づけ

Postfix を内部向けメールサーバーとして構成する記事です。relayhost、mynetworks、配送経路を整理し、ローカル MTA より広いメール基盤として扱います。

Ubuntu 22.04 の関連記事

Ubuntu 22.04 で内部向け Postfix メールサーバーを構築する手順です。ここで扱うのは、外部公開の MX サーバーではなく、内部システムやサーバー群から通知メールを受け取り、必要に応じて relayhost へ配送する SMTP 基盤です。

ローカル MTA が「そのサーバー自身の通知を送る」ための構成だとすれば、内部向け Postfix は「複数の内部サーバーやアプリケーションから SMTP を受ける」構成です。そのため、mynetworks の範囲、待ち受けインターフェース、リレー先、オープンリレー防止を明確にします。

内部向け SMTP サーバーで最も避けたいのは、意図しないオープンリレーです。mynetworks を広くしすぎず、外部公開メールサーバーとは別の責務として設計します。

この記事で扱う内容は次の通りです。

  • ローカル MTA と内部向け Postfix の違い
  • mynetworks による内部ネットワークの許可
  • relayhost による上位 SMTP への中継
  • main.cf の基本設定
  • 送信テスト、ログ確認、オープンリレー防止の確認
対象 OSUbuntu 22.04
用途内部サーバー・内部アプリケーション向け SMTP 中継
サービスpostfix.service
主な設定ファイル/etc/postfix/main.cf, /etc/aliases
重要項目mynetworks, relayhost, smtpd_relay_restrictions
STEP 1内部向け SMTP の責務を決める
STEP 2Postfix をインストールする
STEP 3main.cf で待ち受けと許可ネットワークを設定する
STEP 4relayhost を設定する
STEP 5送信テストとログ確認を行う
参考
書籍
参考書籍

Postfix 実用ガイド

Postfix の中継、配送、運用を深く確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

内部向け Postfix の位置づけ

内部向け Postfix は、内部ネットワークにあるサーバーやアプリケーションから SMTP を受け、ローカル配送または上位 SMTP サーバーへの中継を行います。メールボックスの閲覧は Dovecot、外部公開のメール受信は MX サーバー側の責務です。

要素役割
PostfixSMTP 受付、配送、リレーを扱う MTA
mynetworksリレーを許可する内部ネットワーク
relayhost外部配送や上位メールサーバーへの中継先
DovecotIMAP / POP3 とメールボックス閲覧を扱う
DNS / MX外部公開メールでは重要。内部用途では設計次第

Postfix をインストールする

Postfix とテスト送信用の mailutils をインストールします。

コマンド
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt install -y postfix mailutils

サービス状態を確認します。

コマンド
systemctl status postfix.service --no-pager

main.cf を設定する

内部ネットワークから SMTP を受ける場合、inet_interfacesmynetworks を明示します。次の例では、内部ネットワーク 10.0.0.0/24fd00: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 = +
EOF

smtpd_relay_restrictionspermit_mynetworksreject_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.org

swaks がない場合は、別途インストールするか、SMTP テストができる端末から確認します。許可外ネットワークから中継できてしまう場合は、mynetworkssmtpd_relay_restrictions を見直します。

オープンリレーは、迷惑メール送信に悪用される重大な設定ミスです。内部用途でも、ネットワーク境界と Postfix のリレー制御を両方確認します。

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 受付と中継制御を設計します。中心になるのは mynetworksrelayhostsmtpd_relay_restrictions です。

内部向けであっても、オープンリレーにならないことを確認する必要があります。送信テストだけでなく、許可外ネットワークから中継できないこと、ログで配送状況を追えること、relayhost 障害時の滞留を確認できることまで見ておくと、運用しやすい SMTP 基盤になります。

次に読む記事
Ubuntu 22.04 Postfix 内部向けメールサーバー – relayhost と配送経路を設計する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る