誰もが一度は泥沼にハマるPostfix設定を完全攻略!Ubuntu×Brevoで「自宅サーバー全体のメール配管」をガチ構築する方法

この記事は約27分で読めます。
  1. 25番ポートの絶望を、OSレベルの骨太な構築で捩じ伏せる
    1. 🛑 原因1:プロバイダの鉄槌「OP25B(Outbound Port 25 Blocking)」
    2. 🔒 原因2:年々厳しくなる「送信ドメイン認証」の壁
    3. 💡 解決策:信頼できる外部へ丸投げする「SMTPリレー」
    4. 🔄 メールが届くまでの配管イメージ(リレーの仕組み)
  2. リレー環境を構築するための前提条件と事前設定
    1. 📋 ベース環境の確認
    2. 🛠️ お名前.comで「メール専用のサブドメイン」を新しく用意してBrevoに登録する
      1. 💻 Brevoにサブドメインを追加する
      2. 🛠️ お名前.comのDNSレコードを設定する
    3. 🔍 コンソールでDNS設定の反映を確認する
      1. 💻 1. Brevo code(TXTレコード)の確認
      2. 💻 2. DKIMレコード(CNAME)の確認
      3. 💻 3. DMARCレコード(TXTレコード)の確認
    4. 💻 Brevo側でドメインの認証(Authentication)を完了させる
    5. 🔑 Brevoから「SMTP鍵(パスワード)」を発行・取得する
    6. 📦 本丸降臨:UbuntuにPostfixをインストールする
    7. 📄 PostfixのSMTPリレー設定および認証設定
      1. 🔑 1. 認証用パスワードファイルの作成と暗号化
      2. 📄 2. Postfixメイン設定ファイル(main.cf)の編集
      3. 🔍 念のための最終生存確認(プロセス確認)
    8. ✉️ 4. テスト送信とメールログのリアルタイム監視
      1. 📋 (1) メールログのリアルタイム監視を開始する
      2. ✉️ (2) テストメールを送信する
      3. 🔍 (3) メールログの出力結果を検証する
      4. 💡 チェックポイント
    9. 📥 5. 受信メールのヘッダー解析と最終確認
    10. 💡 おまけ:Cronの自動実行メールで /var/mail/root を汚さないテクニック
  3. 🏁 まとめ:信頼性の高いメール送信基盤の完成

25番ポートの絶望を、OSレベルの骨太な構築で捩じ伏せる

「自宅サーバーからWordPressのお問い合わせメールが届かない」
「WordOpsの自動アプデ完了通知や、OSのシステムアラートがいつまで経っても手元に降ってこない」

自宅サーバーを構築した人が、ほぼ100%の確率でブチ当たる巨大な壁。それが「OP25B(25番ポートブロック)」と、年々厳格化される「送信ドメイン認証(SPF/DKIM/DMARC)」のセキュリティ包囲網です。
プロバイダやクラウド事業者が迷惑メール対策として敷いているこの強固な規制の前に、自宅サーバーが必死に吐き出した生メールは、宛先サーバーに届くどころか世界のゴミ箱へと葬り去られます。

この問題を解決するために、WordPressのプラグイン(WP Mail SMTPなど)を入れてお茶を濁す人は少なくありません。しかし、それでは「WordPressが発したメール」しか救えず、OS自体やWordOpsのシステムが発する「本当に命に関わる重要アラート」は置き去りのままです。

片手間のプラグイン依存からは、今日で卒業しましょう。

今回は、エンジニアが一度は必ず設定の泥沼にハマって頭を抱える最難関ミドルウェア「Postfix」をUbuntuにガチで構築し、すでに実績のあるドメインメール環境である「Brevo」へすべてのメール配信を直結(SMTPリレー)させるインフラ構築手順を徹底解説します。
設定のタイポひとつで動かなくなるPostfixの挙動を完全に手懐け、サーバー全体のメール配管を100%開通させる「泥沼回避ルート」をここにお届けします。

🛑 原因1:プロバイダの鉄槌「OP25B(Outbound Port 25 Blocking)」

多くのインターネットプロバイダ(ISP)や一般的なクラウド環境では、スパムメールの大量送信を防ぐために、25番ポート(メール送信用の標準ポート)を使った外部への直接通信を例外なく遮断しています。これが「OP25B」です。
自宅サーバー内にどれだけ完璧なメールサーバーを立てても、この規制のせいで外の世界へメールを送り出すことすらできません。

🔒 原因2:年々厳しくなる「送信ドメイン認証」の壁

仮に25番ポートが開いていたとしても、現代のメールセキュリティ(GmailやYahoo!メールなど)は非常にシビアです。 送信元IPアドレスが固定されたデータセンターのものではなく、「一般の家庭用回線(動的IPやプロバイダのプールIP)」であると判明した時点で、中身を見るまでもなく迷惑メールとして即座に弾かれるか、完全にドロップ(消滅)させられます。

💡 解決策:信頼できる外部へ丸投げする「SMTPリレー」

これらの高すぎる壁を、自宅サーバーの力だけで突破するのは不可能です。そこで登場するのが「SMTPリレー」という手法です。
自前のサーバーで直接相手にメールを送るのを諦め、「すでに世の中から100%信頼されている外部の配信サーバー(今回はBrevo)」に、すべてのメールを一度転送(リレー)して代わりに届けてもらうという仕組みをとります。

🔄 メールが届くまでの配管イメージ(リレーの仕組み)

メールが届くまでの配管イメージ
  • STEP1
    💻 自宅サーバー(Postfix)

    OS、WordOps、WordPressからのメール通知をPostfixで一括集約。プロバイダの規制(OP25B)を避けるため、587番ポート等のセキュアなルートで外へ送り出します。

  • STEP 2
    🚀 外部リレーサーバー(Brevo)

    お名前.comのDNS設定(SPF/DKIM)を使い、「本物のドメインであること」を証明。Brevoの高い信頼性を担保にして、宛先へメールを代理送信します。

  • GOAL
    📬 相手のメールボックス(Gmail等)

    迷惑メールに落とされることなく、100%確実にメッセージが到達します!

中でも「Brevo」は、お名前.comなどのDNS設定(SPF/DKIMレコード)を紐付けることで、「このメールはなりすましではなく、正当なドメインから送られた本物です」というお墨付きを相手のメールサーバーに証明してくれます。
この強力な中継地点(Brevo)への「配管」を、OSの根幹であるPostfixを使ってガチガチに構築していくのが、今回のメインミッションです。

リレー環境を構築するための前提条件と事前設定

メールを確実に届けるための環境を整え、必要な認証情報を手元に揃えましょう。ここで情報が欠けていたり、設定が中途半端だと、この後の構築で確実に泥沼にハマります。
まずは、ベースとなるUbuntuの環境を確認した上で、お名前.comとBrevoの設定を一本の配管として繋いでいきます。

📋 ベース環境の確認

Ubuntuサーバー環境が稼働しており、sudo 権限を持つ一般ユーザーでログインできる状態にしておいてください。

🛠️ お名前.comで「メール専用のサブドメイン」を新しく用意してBrevoに登録する

自宅サーバー全体のメール配管を作る上で、最も重要な鉄則があります。それは、普段ブログなどで使っているメインドメイン(test-site.online)をそのまま使い回すのではなく、通知専用のサブドメイン(例: mail.test-site.online)を新しく用意して使うことです。
メインドメインのまま設定をいじると、設定ミスひとつで普段のメールまで巻き添えで届かなくなったり、DNS設定がバッティングして身動きが取れなくなったりして大泥沼化します。

💻 Brevoにサブドメインを追加する

💡 ここからの流れ:画面の指示に従ってボタンを押し、サブドメインの名前を入力していくだけです。

  • Step 1:設定画面を開く
    1. Brevoにログイン後、右上のアカウント名(またはアイコン)をクリックします。
    2. メニューから 「⚙️ Settings」 を選択します。
    3. 左メニューの「Organization settings」内にある 「Senders, domains, IPs」 をクリックします。
  • Step 2:ドメイン追加を始める
    1. 画面上部にある 「Domains」 タブに切り替えます。
    2. 右上の黒い 「Add a domain」 ボタンをクリックします。
  • Step 3:サブドメイン名を入力する
    1. Add Domain というポップアップが表示されたことを確認します。
    2. Domain name * の入力欄に、メール専用のサブドメイン(例:mail.test-site.online)を入力します。
      ⚠️ ここが進路の分かれ道!
      薄いグレーの例(Example: mydomain.com)につられて、普段使っているメインドメインをそのまま入れてしまわないよう注意してください。ここで必ず mail. などを頭につけたサブドメインを入力するのが、後のトラブルを防ぐ鉄則です。
  • Step 4:自分で設定するモードを選択する
    1. 入力できたら、ポップアップ右下の 「Add a domain」 ボタンをクリックします。
    2. 続いて Authenticate [あなたのサブドメイン] という選択画面が表示されます。
    3. 一番上の 「Authenticate the domain yourself」 (自分でドメインを認証する)にチェックが入っていることを確認します。
    4. 右下の黒い 「Continue」 ボタンをクリックします。

▶︎ 次のステージへ これで画面が、お名前.comにコピペするための「4つのDNSレコード」が表示される画面(Authenticate mail.〜)に切り替わります。

この画面を開いたまま、別タブでお名前.comを開いて次の手順に進みましょう。uthenticate mail.〜)に切り替わります。この画面を開いたまま、別タブでお名前.comを開きます。

🛠️ お名前.comのDNSレコードを設定する

💡 ここからの流れ:Brevoの画面を開いたまま、別タブでお名前.comを開き、表示されている4つのレコードを1つずつ登録していきます。お名前.comの仕様による「重複の罠」にだけ注意すれば一瞬で終わります。

  • Step 1:お名前.comのレコード入力画面を開く
    1. 別タブでお名前.comの「お名前ナビ」にログインします。
    2. 左メニューにある赤い 「ネームサーバー/DNS」 にマウスを乗せます。
    3. 表示されたポップアップメニューから 「ドメインDNS設定」 をクリックします。
    4. ドメイン一覧から、対象ドメインの右側にある青い 「ドメインDNS」 ボタンをクリックします。
    5. 「DNS設定/転送設定 – 機能一覧」という画面が開くので、無料機能の中にある 「DNSレコード設定」 をクリックします。
  • Step 2:【1つ目】Brevo code を入力する(Type: TXT)
    1. 画面を少しスクロールすると出てくる 「入力」エリア を見つけます。
    2. ホスト名mail と入力します。
    3. TYPE:ドロップダウンから TXT を選択します。
    4. TTL3600 のままでOKです(画面によってはデフォルトのままで構いません)。
    5. VALUE(データ):Brevoの画面の「Copy Brevo code value」でコピーした文字列(brevo-code:...)をそのまま貼り付けます。
    6. 右側にある 「追加」 ボタンをクリックします。
  • Step 3:【2つ目】DKIM 1 を入力する(Type: CNAME)
    1. 再び「入力」エリアに戻ります。
    2. ホスト名brevo1._domainkey.mail と入力します。
      ⚠️ 超重要泥沼回避ポイント!
      Brevoの画面(Name欄)には末尾まで長く書かれていますが、お名前.comは末尾のメインドメイン(.test-site.online)を自動補完します。入力欄には必ず末尾をカットした brevo1._domainkey.mail だけを入れてください。
    3. TYPECNAME を選択します。
    4. VALUE(データ):Brevoの「Copy DKIM 1 record value」でコピーした文字列(b1.mail...)をそのまま貼り付けます。
    5. 右側にある 「追加」 ボタンをクリックします。
  • Step 4:【3つ目】DKIM 2 を入力する(Type: CNAME)
    1. ホスト名brevo2._domainkey.mail と入力します。(※ここも末尾のメインドメイン部分はカットします)
    2. TYPECNAME を選択します。
    3. VALUE(データ):Brevoの「Copy DKIM 2 record value」でコピーした文字列をそのまま貼り付けます。
    4. 右側にある 「追加」 ボタンをクリックします。
  • Step 5:【4つ目】DMARC を入力する(Type: TXT)
    1. ホスト名_dmarc.mail と入力します。
      ⚠️ ここもサブドメイン専用の罠!
      画面ですでに見えている _dmarc(ホスト名が _dmarc だけのもの)はメインドメイン用です。今回はサブドメイン用なので、新しくホスト名に _dmarc.mail と入力して、完全に独立したDMARCレコードとして追加します。
    2. TYPETXT を選択します。
    3. VALUE(データ):Brevoの「Copy DMARC record value」でコピーした文字列をそのまま貼り付けます。
    4. 右側にある 「追加」 ボタンをクリックします。

🔍 コンソールでDNS設定の反映を確認する

お名前.com側で「設定する」をクリックしたら、世界中のDNSサーバーに設定が浸透するまで数分〜数十分ほどかかります。(Brevoの画面には「最大48時間」と書かれていますが、お名前.comなら大抵は数分で反映されます)。

本当に反映されたかどうか、Ubuntuのコンソール(ターミナル)を開いて、「dig」コマンドで確認してみましょう!

💻 1. Brevo code(TXTレコード)の確認

まずは、Brevoがドメインの所有権を確かめるためのコードが引けるかテストします。

Bash
dig mail.test-site.online txt

確認ポイント:
出力された結果の ;; ANSWER SECTION: の下に、お名前.comに貼り付けた brevo-code:xxxxxxxx という文字列が表示されていれば完璧です!

💻 2. DKIMレコード(CNAME)の確認

続いて、メールの改ざんを防ぐための鍵(DKIM 1)が正しく紐付いているか確認します。

Bash
dig brevo1._domainkey.mail.test-site.online cname

確認ポイント:
;; ANSWER SECTION: の下に、Brevo側が指定した b1.mail-...dkim.brevo.com が表示されていれば、お名前.comの「自動補完の罠」を無事にクリアして正しく登録できている証拠です

💻 3. DMARCレコード(TXTレコード)の確認

最後に、なりすまし防止のDMARCが引けるか確認します。

Bash
dig _dmarc.mail.test-site.online txt

確認ポイント:
;; ANSWER SECTION: の下に、v=DMARC1; p=none;... が表示されれば大成功です。

💻 Brevo側でドメインの認証(Authentication)を完了させる

保留にしていたBrevoの管理画面に戻り、ドメインの認証を確定させます。

▶︎ Action: 認証を実行する

  1. Brevoのドメイン追加画面(4つのレコードが表示されている画面)を開きます。
  2. 画面の最下部にある黒い 「Authenticate this email domain」 ボタンをクリックします。

▶︎ Validation: ステータスの確認 ボタンを押すとドメインの一覧画面に移動します。追加したサブドメイン(例:mail.test-site.online)のステータスが、緑色の 「● Authenticated(認証済み)」 に変わっていることを確認します。これでドメイン側の認証手続きはすべて完了です。完了です。

🔑 Brevoから「SMTP鍵(パスワード)」を発行・取得する

ドメインの認証が完了したら、次にUbuntu(Postfix)からBrevoのサーバーへメールを中継(リレー)する際に必要となる、認証用の「SMTP鍵(パスワード)」を発行します。

▶︎ Action: SMTP鍵の生成

  1. Brevoの左側メインメニューから、「SMTP & API」 を選択します。
  2. 画面上部のタブが 「SMTP」 になっていることを確認します。
  3. 画面右上にある黒い + Generate SMTP key ボタンをクリックします。
  4. 「Generate new SMTP Key」 のポップアップが表示されるので、以下のように設定を入力・選択します。
    • Name *: 管理しやすい任意の名称(例:postfix-relay)を入力します。
    • Variant: 初期状態の Standard(長さ64文字)のまま変更しないでください。
      • (※PostfixのSASL認証には十分な長さを持つStandardが必要になります)
    • Expiry: 有効期限を設定します(必要に応じて最長期間などを選択してください)。
      • (※ポップアップ下部の注意書きにある通り、設定した期限に関わらず「90日間アクティビティ(送信実績)がない場合」も失効するため注意が必要です)
  5. 入力を終えたら、右下の黒い 「Generate」 ボタンをクリックします。

▶︎ Validation: パスワードのコピーとログイン情報の控え

  1. 画面に長い文字列(SMTP鍵)がポップアップで一度だけ表示されます。

⚠️ 重要
このパスワードは画面を閉じると二度と再表示できません。必ず右側の「Copy」ボタンを押し、テキストエディタ等に一時的にペーストして厳重に保管してください。

  1. 合わせて、画面中央の「Your SMTP Settings」に表示されている Login の値(例:b092a6001@smtp-brevo.com も、後ほどPostfixの設定で「ユーザー名」として使用するため、メモ帳などにコピーして控えておきます。

📦 本丸降臨:UbuntuにPostfixをインストールする

外部へメールを安全に配送するための認証情報が揃ったので、ここからはUbuntuサーバーのコンソール(黒い画面)に戻り、メール転送エージェント(MTA)である「Postfix」のセットアップに入ります。

先ほどお名前.comで登録したメール専用サブドメイン(例:mail.test-site.online)の情報を、ここでサーバーに組み込みます。

▶︎ Action: パッケージのインストール

  1. サーバーのパッケージリストを最新に更新し、Postfix本体と、Brevoへのリレー認証(SASL認証)を行うために必須となるモジュールをまとめてインストールします。
Bash
sudo apt update
sudo apt install postfix libsasl2-modules -y
  1. インストールが進むと、画面全体がテキストベースの設定ウィザード(TUI画面)に切り替わります。以下の通りに選択・入力を進めてください。
    • General type of mail configuration: 矢印キーで Internet Site を選択し、Tabキーで OK にフォーカスを合わせて Enter を押します。 (※外部のSMTPサーバーを経由して、インターネット上にメールを配送するための標準的な設定モードです)
    • System mail name: 初期状態で入力されているホスト名などの文字列をすべてバックスペースで消去し、お名前.comで認証を完了させたメール専用サブドメイン(例: mail.test-site.online)を一字一句正確に入力します。入力後、Tabキーで OK に合わせて Enter を押します。

これでPostfixのインストールと、サーバー自身のアイデンティティ(サブドメイン名)の紐付けが完了しました。

📄 PostfixのSMTPリレー設定および認証設定

インストール直後のPostfixは、自宅サーバーから直接宛先サーバーへメールを配送しようとします。これを、認証を完了させたBrevoのSMTPサーバー(リレーホスト)を経由して安全に配送するように設定を変更します。

🔑 1. 認証用パスワードファイルの作成と暗号化

PostfixがBrevoのSMTPサーバーに接続する際に提示する、認証資格情報(Login名とSMTP鍵)を記述したファイルを作成します。

▶︎ Action: 設定ファイルの作成と反映

  1. テキストエディタで /etc/postfix/sasl_passwd を新規作成(または編集)します。
Bash
sudo nano /etc/postfix/sasl_passwd
  1. ファイル内に以下の形式で1行記述します。[Loginの文字列] には画面中央からコピーしたLogin名(例:b092a6001@smtp-brevo.com)を、[SMTP鍵の文字列] には発行した長いパスワードをそれぞれ当てはめてください。
Bash
[smtp-relay.brevo.com]:587 [Loginの文字列]:[SMTP鍵の文字列]

(※ホスト名を囲む [ ] 記号は、DNSのMXレコードを引かずに指定したホストへ直接接続するためのPostfixの構文ですので、消さずにそのまま記述してください)

  1. 第三者に認証情報を読み取られないよう、ファイルの所有権とアクセス権限を厳格に制限します。
Bash
sudo chmod 600 /etc/postfix/sasl_passwd
sudo chown root:root /etc/postfix/sasl_passwd
  1. Postfixが読み込めるように、上記ファイルをデータベース化(ルックアップテーブル化)します。
Bash
sudo postmap /etc/postfix/sasl_passwd

▶︎ Validation: 生成の確認
/etc/postfix/sasl_passwd.db というバイナリファイルが正しく生成されていることを確認します。

Bash
ls -l /etc/postfix/sasl_passwd.db

出力結果の左端のパーミッションが -rw------- となっており、所有者が root root になっていれば正常です。

📄 2. Postfixメイン設定ファイル(main.cf)の編集

次に、Postfixの全体設定を管理する /etc/postfix/main.cf を編集し、Brevoへのリレー設定およびTLS暗号化、SASL認証の有効化を追記します。

▶︎ Action: 設定の追記と反映

  1. 設定ファイルをエディタで開きます。
Bash
sudo nano /etc/postfix/main.cf
  1. ファイルの最下行までスクロールし、以下のリレー設定および認証用の設定ブロックをそのまま追記します。
Bash
# SMTP Relay Settings (Brevo)
relayhost = [smtp-relay.brevo.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_sasl_tls_security_options = noanonymous

# 💡 サーバー肥大化・未配送キュー溜まり防止設定(運用の罠回避)
maximal_queue_lifetime = 0d
bounce_queue_lifetime = 0d

🛡️ 運用トラブルを防ぐワンポイント解説(ここが泥沼回避の裏技!)
最下部に追記した maximal_queue_lifetime = 0dbounce_queue_lifetime = 0d は、宛先不明や通信エラー等で送信失敗したメールが、サーバーの送信キュー(/var/spool/postfix/)に何日も溜まり続けてディスクを圧迫するのを防ぐ設定です。 保持期間を 0d(即時破棄)に設定しておくことで、配送不能なメールが死骸のようにサーバー内に溜まるのを防ぎ、いつでもクリーンな状態を保つことができます。

  1. 追記した設定をシステムに反映させるため、Postfixサービスを再起動します。
Bash
sudo systemctl restart postfix

▶︎ Validation: サービスの稼働確認
Postfixがエラーなく正常に再起動し、バックグラウンドで起動しているかを確認します。

Bash
sudo systemctl status postfix

出力結果の Active: 項目が active (running) になっていれば設定ファイルの記述およびサービスの起動は正常です。

💡 active (exited) について
項目が active (running) ではなく active (exited) になっているため、一見するとプロセスが落ちているように見えますが、Ubuntu環境におけるPostfixとしてはこれで完全に正常な状態です。
Postfixは複数の子プロセスを管理する構造(マルチプロセス構成)になっているため、システムを統括する本体サービス(postfix.service)自体は、実プロセスをバックグラウンドで起動させたあとに正常終了(exited)する仕様になっています。

🔍 念のための最終生存確認(プロセス確認)

裏で本当にメール配送の心臓部(masterプロセス)が動いているかを確認するコマンドも合わせて実施します。

Bash
ps aux | grep postfix

出力例:

Plaintext
root     30498  0.0  0.0  42868  4936 ?        Ss   06:20   0:00 /usr/lib/postfix/sbin/master -w
postfix  30499  0.0  0.0  43376  7988 ?        S    06:20   0:00 pickup -l -t unix -u -c
postfix  30500  0.0  0.0  43416  8040 ?        S    06:20   0:00 qmgr -l -t unix -u
root     30844  0.0  0.0  17820  2352 pts/0    S+   06:26   0:00 grep --color=auto postfix

最左列が root で、右端に /usr/lib/postfix/sbin/master(または master)と表示されている行が1行でも存在していれば、Postfixは正常にバックグラウンドで常駐しています。

✉️ 4. テスト送信とメールログのリアルタイム監視

すべての設定が完了したため、実際にシステムからテストメールを送信し、Brevoを経由して正常に外部へ配送されるかを検証します。
Postfixの挙動を確認するために、「ログを監視するターミナル」「メールを送信するターミナル」の2つを用意するか、またはバックグラウンドでログを確認しながら進めます。

📋 (1) メールログのリアルタイム監視を開始する

Ubuntuでは、メールに関する詳細なシステムログが /var/log/mail.log に記録されます。メールを送信した瞬間の動きをリアルタイムで追うため、tail -f コマンドでログを流しっぱなしにします。

▶︎ Action: ログ監視の開始
コンソールで以下のコマンドを実行します。

Bash
sudo tail -f /var/log/mail.log

(※このコマンドを実行すると画面がログ待ち状態になるため、別のターミナルを立ち上げるか、確認用に画面をキープしておきます)

✉️ (2) テストメールを送信する

Postfixに標準で備わっている sendmail コマンドを利用して、外部の受け取れるメールアドレス(Gmailなど)宛てにテストメールを送信します。

▶︎ Action: テストメールの送信
新しいターミナル(またはログ画面を一度 Ctrl + C で抜けて)で、以下のコマンドを実行します。

⚠️ 注意
お使いの受信可能なメールアドレス の部分(宛先)を、実際にあなたがスマホやPCで確認できる本物のメールアドレスに書き換えて実行してください。

Bash
echo "This is a test mail via Brevo relay." | sendmail -v お使いの受信可能なメールアドレス

(※ -v オプションを付与することで、Postfixがどのようにメールを処理したかの簡易的な進捗がコンソールにも表示されます)

🔍 (3) メールログの出力結果を検証する

メールを送信した瞬間、先ほど流しっぱなしにしていた /var/log/mail.log(または送信直後に sudo tail -n 20 /var/log/mail.log で確認)に、以下のようなログが出力されているかを確認します。

成功時のログ出力例:

Plaintext
Jul 19 06:25:00 test-system postfix/pickup[30517]: 4Yxxxxxx: uid=1000 from=<user>
Jul 19 06:25:00 test-system postfix/cleanup[30550]: 4Yxxxxxx: message-id=<20260719062500.4Yxxxxxx@mail.test-site.online>
Jul 19 06:25:00 test-system postfix/qmgr[30518]: 4Yxxxxxx: from=<root@mail.test-site.online>, size=345, nrcpt=1 (queue active)
Jul 19 06:25:01 test-system postfix/smtp[30552]: Trusted TLS connection established to smtp-relay.brevo.com[1.2.3.4]:587: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
Jul 19 06:25:02 test-system postfix/smtp[30552]: 4Yxxxxxx: to=<あなたのメールアドレス>, relay=smtp-relay.brevo.com[1.2.3.4]:587, delay=1.5, delays=0.02/0.03/0.85/0.6, dsn=2.0.0, status=sent (250 2.0.0 OK id=xxxxxxxxx-xxxxx)
Jul 19 06:25:02 test-system postfix/qmgr[30518]: 4Yxxxxxx: removed

💡 チェックポイント

ログの中に以下の2つのキーワードが存在していれば、リレー設定は完全に大成功です。

  1. Trusted TLS connection established to smtp-relay.brevo.com → Brevoのサーバーとの間で、改ざんや盗聴を防ぐ「TLS暗号化コネクション」が安全に確立されたことを意味します。
  2. status=sent (250 2.0.0 OK ...) → PostfixからBrevoへのメールの引き渡しが拒否されることなく、正常に「受理(送信完了)」され、キューから削除(removed)されたことを意味します。

あとは、宛先に指定したメールアドレスのインボックス(または迷惑メールフォルダ)を開き、無事に「This is a test mail via Brevo relay.」というメールが着信していることを目視できれば、すべてのロードマップが完了となります。

📥 5. 受信メールのヘッダー解析と最終確認

送信したテストメールが届いたら、メーラー(Thunderbirdなど)でその中身を確認します。ただ届いたことだけでなく、技術的に「正しくリレーされているか」を裏付ける重要なチェックポイントが3つあります。

  1. 差出人(From)と送信ドメインの一致
    • 差出人が user <user@mail.test-site.online> のように、Postfixのインストール時(System mail name)に指定したメール専用サブドメインが正しく適用されているか確認します。
  2. Message-ID の検証
    • メールの詳細ヘッダー(ソース)を表示し、Message-ID の末尾が @smtp-relay.sendinblue.com(※SendinblueはBrevoの旧サービス名・基盤システム名)になっているか確認します。
    • これにより、自サーバーから直接送信されたものではなく、Postfixが設定通り「Brevoのインフラを経由(SMTPリレー)して配信した」という絶対的な証拠になります。
  3. List-Unsubscribe ヘッダーの自動付与
    • メール上部に配信停止用のリンク(List-Unsubscribe)が自動的に挿入されているか確認します。これはBrevoを経由した際、プロバイダ側での到達率(迷惑メール判定の回避)を上げるために自動付加される、健全な配信スタンドを経由した証拠です。

💡 おまけ:Cronの自動実行メールで /var/mail/root を汚さないテクニック

Postfixでメール配管を通したあと、`crontab` で自動化スクリプト等を運用すると、実行のたびに `root` 宛てに実行結果メールが飛び、`/var/mail/root` が一瞬でログだらけになります。
不要なCronメールの生成を抑止したい場合は、sudo crontab -e の一番上の行に以下を追加しておきましょう。

Plaintext
MAILTO=""

🏁 まとめ:信頼性の高いメール送信基盤の完成

お疲れ様でした!これで「お名前.com」のDNS設定、クラウド配信サービス「Brevo」のドメイン認証、そしてUbuntuサーバー上での「Postfix」による暗号化SMTPリレー設定にいたるまで、すべてのパズルが1つの美しい送信パイプラインとして繋がりました。

今回構築した環境には、現代のメール配信において必須となる以下の強力なメリットが備わっています。

  • 信頼性の担保(SPF / DKIM / DMARC):
    お名前.comに登録した各種レコードにより、受信側のサーバーから「なりすましではない正当なメール」としてホワイトに扱われます。
  • 25番ポートブロック(OP25B)の回避:
    自サーバーから直接外へ送るのではなく、Brevoの587番ポートへリレーさせることで、プロバイダやホスティングによる送信制限をスマートに回避しています。
  • TLSによる通信の暗号化:
    自サーバーからBrevoまでの経路はTLSでガッチリ暗号化されているため、認証情報やメール本文が盗聴される心配はありません。

これでシステムからの通知メールや、アプリケーションからの自動送信メールを、迷子にさせることなく安全・確実に世界中のインボックスへ届けられるようになりました。

ぜひ、これからのサーバー運用やシステム開発にこの強力なメール基盤を役立ててください!

コメント

タイトルとURLをコピーしました