Postfixに送信ドメイン認証技術の一つであるDMARCを設定しました。

 Summary

  • 当方のAlmaLinuxで稼働しているメールサーバーPostfixに送信ドメイン認証技術の一つであるDMARC(Domain-based Message Authentication, Reporting and Conformance)を設定しました
  • DMARCはメールに表示される送信元アドレス[ヘッダーfrom]のドメインがなりすまし(Domain spoofing / Email spoofing)であるかどうかを判定し、認証に失敗したメールを処理するポリシーを指定します
    • ヘッダーfromについては、下記参照Dをご覧ください
  • DMARCの導入には、SPF又はDKIM(可能であれば両方を推奨)が導入済であることが前提となります

Reference

  • 何かベアメール様のブログだらけになってしまいましたが、Linux初心者のわたくしにもわかりやすいブログが揃っています
  1. ベアメール | DMARCレコードの書き方は? 設定・確認方法や設定例も解説
    • 設定について詳細な説明があります.今回の設定にあたって上記ページでご説明いただいている手順に倣いました
  2. ベアメール | DMARCポリシー設定ガイド|「none」から「reject」へ強化する理由と進め方
    • DMARCポリシーの変更について詳しく説明がございます
  3. ベアメール | DMARCのアライメントとは? SPF・DKIMアライメントをPassするためのポイント
    • DMARCの仕組みの肝であるDMARCアライメントの詳細な説明がございます
  4. ベアメール | 「エンベロープFrom」と「ヘッダFrom」の違いとは?ベアメール | 「エンベロープFrom」と「ヘッダFrom」の違いとは?
    • 何故SPFとDKIMに加えてDMARCが必要なのか、そのポイントがメールの仕様エンベロープFromとヘッダFromになります

Steps

Term

DMARCレポート
受信側が送信側に送信する受信メールの認証結果のレポートです
RUAレポートとRUFレポートの2種があります
RUAレポート
Reporting URI for Aggregate data (集計レポート)
DMARCレポートの一つで、メールトラフィックの概要を提供します
RUFレポート
Reporting URI for Forensic data (失敗レポート)
DMARCレポートの一つで、失敗した個々のメールの詳細情報を提供します

Summary of steps

  1. SPF又はDKIMのいずれかを事前設定しておきます
    • 当方の環境では既に、SPFとDKIMの双方の設定を済ませております
    • なお、参照Aによれば、SPFとDKIMはいずれか一方のみの設定でDMARCによる認証は動作するとのことですが、一般的にSPFとDKIMの両方の導入が推奨されているようです.ベアメール様の各ブログを勉強すると両方の導入が望ましいことが判ります
  2. DMARCレポートを受信するメールアドレスを準備します
  3. DNSにDMARCレコードを設定します

Create mail accounts

  • 次の2つの受信用メールアドレスが必要です
    • rua(集計レポート)用アドレス: 本稿では仮にhogehogef-labs.jpとします
    • ruf (失敗レポート)用アドレス: 本稿では仮にpiyopiyof-labs.jpとします
# rua用ユーザーhogehogeの追加
$ sudo useradd hogehoge

# rua用ユーザーhogehogeのパスワード設定
$ sudo passwd hogehoge
Changing password for user hogehoge.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

# ruf用ユーザーpiyopiyoの追加
$ sudo useradd piyopiyo

# ruf用ユーザーpiyopiyoのパスワード設定
$ sudo passwd piyopiyo
Changing password for user piyopiyo.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

# rua用ユーザーhogehogeの確認
$ sudo getent passwd hogehoge
hogehoge:x:1004:1004::/home/hogehoge:/bin/bash

# ruf用ユーザーpiyopiyoの追加
$ sudo getent passwd piyopiyo
piyopiyo:x:1005:1005::/home/piyopiyo:/bin/bash

DNS configuration

  • 当方の環境ではXServerのDNSを使用しています
  • XServer VPSのVPSアカウントからDNSの設定をします

DMARC Policy

  • SPFやDKIM認証に失敗したメールをどのように処理するかを受信サーバーに指示するためのルールです
  • これにより、送信側のドメインを偽装したフィッシングやなりすましなどの被害を受信側に与えることの防止ができます
  • 3種のポリシーがあります
    • none: 監視を行うだけで、認証失敗時もそのまま配信します
    • quarantine: 認証失敗時は迷惑メールフォルダなどに隔離します
    • reject: 認証失敗時は強制的に削除します

Verifying DMARC records

  • DMARCレコードとは、上記のDMARCポリシーや、DMARCレポートの送付先などを表明するためのレコードです
  • DMARCレコードの値は次の4つのタグを指定するのが一般的のようです
    • v=DMARC1: DMARCのバージョンを指定します.現時点ではDMARC1とのことです
    • p=none: DMARCポリシーを指定します
      • 参照Aでは、最初設定時は受信を検証するために何もしないnoneを指定することを推奨しています
      • 問題ないことを確認後、厳格なルールであるquarantine又はrejectに変更します
    • rua=hogehogef-labs.jp: 集計レポート)用アドレスを指定します
    • ruf=piyopiyof-labs.jp: 失敗レポート)用アドレスを指定します
    • その他のタグは、参照Aをご覧ください
  • DMARCレコードは以上のタグ=値をセミコロンで区切ります
    v=DMARC1; p=none; sp=reject; rua=mailto:This email address is being protected from spambots. You need JavaScript enabled to view it.; ruf=mailto:This email address is being protected from spambots. You need JavaScript enabled to view it.
  • DNSのTXTレコードは次のとおりです
    _dmarc.f-labs.jp IN TXT "v=DMARC1; p=none; sp=reject; rua=mailto:This email address is being protected from spambots. You need JavaScript enabled to view it.; ruf=mailto:This email address is being protected from spambots. You need JavaScript enabled to view it."

Setting DNS records in the DNS settings of XServer VPS

  • 当方が利用しているXServer VPSのDNSにDNSレコード(DMARCレコード)を設定します
  • ホスト名: _dmarc.f-labs.jp
    • フォーマット: 固定プレフィックス[_dmarc].[ドメイン名]
    • XServer VPSのDNS設定画面では入力欄の右側に[.f-labs.jp]とあるので[_dmarc]と入力します
  • 種類: txt
    • TXTタイプを指定します
  • 内容: v=DMARC1; p=none; sp=reject; rua=mailto:hogehogef-labs.jp; ruf=mailto:piyopiyof-labs.jp
    • DMARCレコードを指定します
  • TTL: 3600
    • TTL(Time To Live)とはDNSレコードがキャッシュに保持される時間で一般的に3600秒が推奨されているそうです
  • 優先度: 空欄

Check using online tools

  • DMARCレコードのオンラインチェックツールを使用して設定に問題ないか確認します
  • MX TOOLBOX |  DMARC Check Tool
    2025 10 09 08 20 13 02
    • 上図はDMARCポリシーをquarantineに変更後のチェック結果です
    • 赤点線枠内で[Find Problems]とアラート表示されていますが、UCEPROTECTL3というブラックリストに掲載されているとの診断でした

Check by sending a test email

  • Gmailアドレス宛にメール送信を試します
    2025 10 09 08 20 13 03

DMARC Report Analysis

  • 集計レポートは、DMARCレコードのriタグで指定しない場合、デフォルトで24時間の送信頻度で受信側から送信されます
  • レポートはxml形式で届くため読解し辛く、オンラインツールで確認します
  • MX TOOLBOX | Dmarc Report Analyzer
    2025 10 09 08 20 13 04
    • xmlファイルを読み込むとリスト化されるため視覚的に確認しやすくなります

Modify DMARC policy

  • 参照Bにありますとおり、DMARCポリシーがnoneのままでは、受信側サーバーのクライアントにフィッシングメールやなりすまし正規のメールに混在して届いてしまうリスクがあります
  • 集計レポートで問題ないことを確認したら、DMARCポリシーをquarantine又はrejectに変更します
  • DMARCレコードのpタグをquarantine又はrejectに変更の上、当方が利用しているXServer VPSのDNSのTXTレコードを変更します

Related Articles