手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Postfix ローカル MTA – サーバー通知メールを送る

この記事の位置づけ

Postfix をローカル MTA として使い、サーバー通知メールを送るための記事です。外部向けメールサーバーではなく、運用通知の配送経路として整理します。

Ubuntu 22.04 の関連記事

Ubuntu 22.04 でローカル MTA として Postfix を使う手順です。ここでの目的は、サーバー自身から管理者宛ての通知メールを送れるようにすることであり、外部からメールを受ける本格的なメールサーバーを作ることではありません。

cron、監視、ログ監視、各種アプリケーションの通知を扱う場合、サーバー上に最小限の MTA があると運用しやすくなります。この記事では、ローカル配送と relayhost を使う通知用途に絞ります。

この記事の構成は、外部公開メールサーバーではありません。MX、DKIM、DMARC、SPF、IMAP、迷惑メール対策まで含めたメール基盤とは別の話として扱います。

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

  • ローカル MTA の位置づけ
  • Postfix と mailutils の導入
  • main.cf の最小設定
  • relayhost を使う場合の考え方
  • root 宛てメールの転送
  • テスト送信とログ確認
対象 OSUbuntu 22.04
用途サーバー通知メールの送信
サービスpostfix.service
主な設定ファイル/etc/postfix/main.cf, /etc/aliases
待ち受け方針原則として loopback-only
STEP 1ローカル MTA の役割を確認する
STEP 2Postfix と送信確認用コマンドを導入する
STEP 3main.cf を通知用途に設定する
STEP 4root 宛てメールの転送先を設定する
STEP 5テスト送信とログ確認を行う
参考
書籍
参考書籍

Postfix 実用ガイド

Postfix の設定や運用をもう少し深く確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

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

ローカル MTA の位置づけ

ローカル MTA は、サーバー自身が生成するメールを処理するための最小構成です。外部から SMTP 接続を受けるのではなく、サーバー内部から発生した通知を配送することを目的にします。

構成役割
ローカル MTAサーバー自身から通知メールを送る
内部向け Postfix内部ネットワークの SMTP 中継や配送を扱う
DovecotIMAP / 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-pager

main.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 = +
EOF

relayhost を空にすると、Postfix は宛先ドメインへ直接配送しようとします。ただし、サーバーから直接外部へ SMTP 送信できない環境や、送信元評価を管理したい環境では、スマートホストを指定する方が現実的です。

スマートホストを使う場合

内部の SMTP リレーや外部の送信サーバーを使う場合は、relayhost を指定します。

設定ファイル例
sudo postconf -e 'relayhost = [smtp.example.internal]:587'
sudo postconf -e 'smtp_tls_security_level = may'

認証が必要な SMTP サーバーへ中継する場合は、SASL 認証設定も必要になります。ローカル MTA の記事では最小構成に留めますが、本番環境ではパスワード管理、TLS、送信元ドメインの整合性も確認します。

自宅サーバーやクラウド VM から直接インターネットへ SMTP 送信すると、到達性や迷惑メール判定で問題になることがあります。通知用途でも、可能であれば信頼できる SMTP リレーへ渡す構成の方が扱いやすくなります。

送信元名を設定する

/etc/mailname は、ローカルから送信するメールの送信元ドメインに関係します。環境に合わせて設定します。

設定ファイル例
sudo tee /etc/mailname >/dev/null <<'EOF'
example.com
EOF

root 宛てメールを転送する

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 newaliases

newaliases を実行しないと、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.log

Ubuntu の構成やログ設定によっては、/var/log/mail.log が存在しない場合があります。その場合は journalctl 側で確認します。

待ち受け状態を確認する

ローカル通知用途では、Postfix が外部インターフェースで待ち受けていないことを確認します。

コマンド
sudo ss -ltnp | grep master || true
postconf inet_interfaces

inet_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 checkpostconf -n、テスト送信、ログ確認まで行うと、通知経路として使える状態か判断しやすくなります。

次に読む記事
Ubuntu 22.04 Postfix ローカル MTA – サーバー通知メールを送る

コメントを残す

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

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

トップへ戻る