この記事の位置づけ
Postfix をローカル MTA として使い、サーバー通知メールを送るための記事です。外部向けメールサーバーではなく、運用通知の配送経路として整理します。
Ubuntu 22.04 でローカル MTA として Postfix を使う手順です。ここでの目的は、サーバー自身から管理者宛ての通知メールを送れるようにすることであり、外部からメールを受ける本格的なメールサーバーを作ることではありません。
cron、監視、ログ監視、各種アプリケーションの通知を扱う場合、サーバー上に最小限の MTA があると運用しやすくなります。この記事では、ローカル配送と relayhost を使う通知用途に絞ります。
この記事で扱う内容は次の通りです。
- ローカル MTA の位置づけ
- Postfix と
mailutilsの導入 main.cfの最小設定relayhostを使う場合の考え方- root 宛てメールの転送
- テスト送信とログ確認
| 対象 OS | Ubuntu 22.04 |
|---|---|
| 用途 | サーバー通知メールの送信 |
| サービス | postfix.service |
| 主な設定ファイル | /etc/postfix/main.cf, /etc/aliases |
| 待ち受け方針 | 原則として loopback-only |
main.cf を通知用途に設定する次に読む記事
書籍
Postfix 実用ガイド
Postfix の設定や運用をもう少し深く確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
ローカル MTA の位置づけ
ローカル MTA は、サーバー自身が生成するメールを処理するための最小構成です。外部から SMTP 接続を受けるのではなく、サーバー内部から発生した通知を配送することを目的にします。
| 構成 | 役割 |
|---|---|
| ローカル MTA | サーバー自身から通知メールを送る |
| 内部向け Postfix | 内部ネットワークの SMTP 中継や配送を扱う |
| Dovecot | IMAP / POP3 によるメール閲覧を扱う |
| 外部公開メールサーバー | MX、SPF、DKIM、DMARC、迷惑メール対策まで含む |
今回の構成では、Postfix を「通知メールを外へ出すための出口」として使います。受信用メールサーバーやメールボックス基盤は扱いません。
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 = loopback-only を基本にします。外部への配送が必要な場合は、メール基盤やプロバイダ側の SMTP サーバーを relayhost として指定します。
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 = server.example.com
myorigin = /etc/mailname
mydestination = $myhostname, localhost.$mydomain, localhost
inet_interfaces = loopback-only
inet_protocols = all
relayhost =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mailbox_size_limit = 0
recipient_delimiter = +
EOFrelayhost を空にすると、Postfix は宛先ドメインへ直接配送しようとします。ただし、サーバーから直接外部へ SMTP 送信できない環境や、送信元評価を管理したい環境では、スマートホストを指定する方が現実的です。
スマートホストを使う場合
内部の SMTP リレーや外部の送信サーバーを使う場合は、relayhost を指定します。
sudo postconf -e 'relayhost = [smtp.example.internal]:587'
sudo postconf -e 'smtp_tls_security_level = may'認証が必要な SMTP サーバーへ中継する場合は、SASL 認証設定も必要になります。ローカル MTA の記事では最小構成に留めますが、本番環境ではパスワード管理、TLS、送信元ドメインの整合性も確認します。
送信元名を設定する
/etc/mailname は、ローカルから送信するメールの送信元ドメインに関係します。環境に合わせて設定します。
sudo tee /etc/mailname >/dev/null <<'EOF'
example.com
EOFroot 宛てメールを転送する
cron や一部のシステム通知は root 宛てに送られることがあります。管理者へ届くように /etc/aliases を設定します。
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 newaliasesnewaliases を実行しないと、Postfix が参照する alias database に反映されません。
設定を確認する
Postfix の設定値を確認します。
postconf -n構文確認とサービス再起動を行います。
sudo postfix check
sudo systemctl restart postfix.service
systemctl status postfix.service --no-pagerテストメールを送信する
mail コマンドでテストメールを送信します。
printf 'Postfix local MTA test\n' | mail -s 'postfix test' admin@example.com送信後、メールログを確認します。
sudo journalctl -u postfix -n 80 --no-pager
sudo tail -n 80 /var/log/mail.logUbuntu の構成やログ設定によっては、/var/log/mail.log が存在しない場合があります。その場合は journalctl 側で確認します。
待ち受け状態を確認する
ローカル通知用途では、Postfix が外部インターフェースで待ち受けていないことを確認します。
sudo ss -ltnp | grep master || true
postconf inet_interfacesinet_interfaces = loopback-only であれば、外部から SMTP 接続を受ける構成ではありません。
運用上の注意
ローカル MTA は便利ですが、通知メールが届くことを前提にしすぎると危険です。メール配送は DNS、ネットワーク、送信元評価、リレー先の制限に影響されます。
- 通知先アドレスが正しいか
- root 宛てメールが管理者へ転送されるか
- relayhost が必要な環境か
- 外部から SMTP を受ける設定になっていないか
- メールログで配送失敗を確認できるか
内部向けの SMTP リレーとして Postfix を使う場合は、Ubuntu 22.04 Postfix 内部向けメールサーバー構築 のように、ローカル MTA とは別の構成として考えます。IMAP でメールボックスを閲覧する場合は Ubuntu 22.04 Dovecot MRA メールサーバー構築 が別の責務になります。
まとめ
Ubuntu 22.04 で Postfix をローカル MTA として使うと、cron、監視、アプリケーションからの通知メールを扱いやすくなります。外部公開メールサーバーを作るのではなく、サーバー自身からの通知を配送する最小構成として使います。
基本は inet_interfaces = loopback-only で外部からの受信を避け、必要に応じて relayhost へ中継します。設定後は postfix check、postconf -n、テスト送信、ログ確認まで行うと、通知経路として使える状態か判断しやすくなります。

