ビジネスサポートポータルアカウントでログイン
DMARC (Domain-based Message Authentication, Reporting and Conformance) の検証  

DMARC (Domain-based Message Authentication, Reporting and Conformance) の検証

    • 更新日:
    • 17 Jun 2020
    • 製品/バージョン:
    • InterScan Messaging Security Virtual Appliance 9.1
    • OS:
    • Virtual Appliance すべて
概要
InterScan Messaging Security Virtual Appliance (IMSVA) は DMARC (Domain-based Message Authentication, Reporting and Conformance) に対応していますか。
詳細
Public

IMSVA 9.1 には Patch 2 (b1830) 以降、DMARC の検証機能が実装されています。

従来からの送信ドメイン認証技術である SPF (Sender Policy Framework)DKIM (DomainKeys Identified Mail) では認証に失敗した場合、メッセージに対する処理は受信側 (検証側) が決定しています。また、送信側では通常、認証に失敗したメッセージについて情報を持ち合わせていません。

それに対して DMARC (Domain-based Message Authentication, Reporting and Conformance) では、SPF と DKIM の検証結果を基に検証側は送信者のドメインの DNS (DMARC レコード) に設定されたポリシー (DMARC ポリシー) にしたがってメッセージを処理したり、ドメイン管理者に集計フィードバックレポート (集計レポート) を送信します。一方、送信側はこのレポートを参考に DMARC ポリシーを改定することで、スパムメールを始め、認証されていないメッセージを制御できます。

DMARC の仕様は RFC 7489 に規定されています。詳しくはWeb等のリソースを参照してください。

DMARC (Domain-based Message Authentication, Reporting and Conformance) の仕組み

DMARC (Domain-based Message Authentication, Reporting and Conformance) の仕組みについて簡単に説明します。

検証するドメイン

DMARC の検証対象となるドメインは From ヘッダに指定されている送信者のメールアドレスのドメインです。

From ヘッダのドメインがサブドメイン (例: sales.example.com) の場合、そのサブドメインに DMARC レコードが存在しなければドメイン (example.com) を検証します。

SPF の仕様上、SPF の検証ではエンベロープの送信者のドメインが対象となります。

DMARC レコード

ドメインが DMARC に対応している場合、DNS に _dmarc のサブドメインで次のような DMARC レコードが TXT レコードで登録されており、DMARC の検証に失敗したメッセージへの処理方法 (ポリシー) やレポートの送信先が指定されています。

_dmarc.example.com.	300	IN	TXT	"v=DMARC1\; p=none\; rua=mailto:postmaster@example.com\;"

例えば DMARC に対応している trendmicro.com であれば、次のように _dmarc.trendmicro.com の TXT レコードに DMARC レコードが登録されています。

_dmarc.trendmicro.com.	1800	IN	TXT	"v=DMARC1\; p=none\; rua=mailto:dmarc@trendmicro.com,mailto:dmarc@dmarc.ers.trendmicro.com\; ruf=mailto:dmarcruf@dmarc.ers.trendmicro.com\;"

また、gmail.com であれば _dmarc.gmail.com に DMARC レコードが以下のように登録されています。

_dmarc.gmail.com.	600	IN	TXT	"v=DMARC1\; p=none\; sp=quarantine\; rua=mailto:mailauth-reports@google.com"

検証側は DNS にこの _dmarc のサブドメインのレコードをクエリして、p タグからメッセージへの処理を決定したり、rua タグからレポートの送信先を見つけます。

主なタグ初期設定 (タグが存在しない場合)説明
adkimrDKIM 識別子アラインメントが "s" (strict モード) か "r" (relaxed モード) かを指定します。
aspfrSPF 識別子アラインメントが "s" (strict モード) か "r" (relaxed モード) かを指定します。
p必須検証失敗時のポリシーとして none, quarantine, reject のいずれかを必ず指定します。"none" の場合、ドメインの所有者は検証に失敗したとしても何もしないよう求めています。"quarantine" の場合、ドメインの所有者は検証に失敗した場合、メッセージを隔離するなど、疑わしいメッセージとして処理するよう求めています。"reject" の場合、ドメインの所有者は検証に失敗した場合、SMTP 接続時にメッセージの受信を拒否するよう求めています。
pct100サンプリングモードとして DMARC ポリシーが適用される、検証に失敗したメッセージの割合を % (パーセント) で指定します。初期設定では (pct タグが存在しなければ) 100 であるため、DMARC の検証に失敗すれば常に DMARC ポリシーが適用されます。例えば p=20 であれば 5通に1通の割合でポリシーが適用されます。
ruan/a集計フィードバックレポートの送信先を指定します。rua タグが存在しなければフィードバックレポートは送信されません。
rufn/a失敗レポートの送信先を指定します。ruf タグが存在しなければ失敗レポートは送信されません。
spn/aすべてのサブドメインに対して適用されるポリシーを指定します。sp タグが存在しなければサブドメインに対しても p タグのポリシーが適用されます。

アラインメント (アライメント)

DMARC では SPF, DKIM の各検証ステージで通常の検証とは別にアラインメント (識別子アラインメント) のチェックが行われます。

SPF アラインメント

From ヘッダのドメインとエンベロープのドメイン (バウンスメールなど、送信者が null の場合には HELO/EHLO に指定したドメイン) を比較します。

DMARC レコードの aspf タグが "s" (strict モード) の場合、同一のドメインでなければ違反します。"r" (relaxed モード) の場合、サブドメインまでは許容されます。

例えば relaxed モードでは、From ヘッダのドメインが example.com、エンベロープのドメインが sales.example.com であれば違反ではありません。From ヘッダのドメインが example.com、エンベロープのドメインが trendmicro.com であれば strict モード、relaxed モードに関係なく違反となります。

DKIM アラインメント

From ヘッダのドメインと DKIM 署名の SDID ("d=" タグ) を比較します。

DMARC レコードの adkim タグが "s" (strict モード) の場合、同一のドメインでなければ違反します。"r" (relaxed モード) の場合、サブドメインまでは許容されます。

例えば relaxed モードでは From ヘッダのドメインが example.com、SDID が sales.example.com であれば違反ではありません。From ヘッダのドメインが example.com、SDID が trendmicro.com であれば strict モード、relaxed モードに関係なく違反となります。

DKIM 署名における正規化タグ ("c=") の simple モード、relaxed モードとは関係ありません。

設定方法

  • IMSVA は直接インターネットからメッセージを受信する場所 (メールゲートウェイ) に配置されている必要があります。IMSVA が内部メールサーバ間に配置されている場合には SPF について正しく検証できません。SPF について詳しくは こちら を参照してください。

  • 内部ドメインに対して判定する場合、そのドメインの DNS に適切な SPF, DKIM, DMARC のレコードを用意してください。

  • 「DMARCを有効にする」の設定で DMARC 検証を有効化または無効化した場合、SMTP サービス検索サービスが再起動します。また、「メールメッセージにX-Headerを挿入」の設定を変更した場合、検索サービスが再起動します。

管理コンソールの 送信者フィルタ > DMARC の画面を開き、「DMARCを有効にする」にチェックを入れた上で各項目を設定して [保存] ボタンをクリックします。

DMARC設定

メールメッセージにX-Headerを挿入

この項目はオプションです。チェックを入れた場合、X-IMSS-DMARC-Authentication-Results ヘッダをメッセージに挿入します。

送信者に認証失敗の日次レポートを配信する

この項目はオプションです。チェックを入れた場合、毎日2時に各ドメイン宛に集計レポートが送信されます。

DMARC検証リスト

DMARC の検証を行うドメイン (From ヘッダのドメイン) を入力して [追加 >>] ボタンをクリックし、検証リストに登録します。

なんらかのドメインを必ず登録する必要があります。"*" (アスタリスク) を登録した場合、すべてのドメインに対して検証します。

DMARC除外リスト

内部から送信されるメッセージなど、DMARC の検証を行わない送信元 (接続元) のIPアドレスを登録します。127.0.0.1 や 192.168.10.0/24 など、内部ネットワークを入力して [追加 >>] ボタンをクリックし、IPアドレスを除外リストに登録します。

処理

DMARC の検証に失敗したメッセージを DMARC レコードにしたがってどのように処理するか、設定します。

設定初期設定の処理方法説明
なしメッセージをインターセプトしない検証に失敗したドメインの DMARC レコードのポリシーが "none" になっている場合 (p=none)、メッセージをどのように処理するか、設定します。
隔離隔離検証に失敗したドメインの DMARC レコードのポリシーが "quarantine" になっている場合 (p=quarantine)、メッセージをどのように処理するか、設定します。
拒否拒否検証に失敗したドメインの DMARC レコードのポリシーが "reject" になっている場合 (p=reject)、メッセージをどのように処理するか、設定します。
DMARCレコードなしメッセージをインターセプトしない検証に失敗したドメインに DMARC レコード自体が存在しない場合、メッセージをどのように処理するか、設定します。

各処理の動作は次のとおりです。

処理説明
メッセージをインターセプトしない何もしません。メッセージは検索サービスに渡され、ポリシールールの検索を行います。
隔離「DMARC検証ルール」によりメッセージを隔離します。隔離されたメッセージは管理コンソールの メール領域とキュー > 隔離 の画面で検索することで配信したり、削除できます。
拒否SMTP クライアント (送信元メールサーバ) に 550 の応答を返し、SMTP 接続を恒久的に拒否します。送信元メールサーバは配信不能通知 (バウンスメール) を生成して送信者に送信します。

検証動作と結果

DMARC 検証を有効にした場合、IMSVA はポリシールールの検索前に以下をそれぞれチェックし、DMARC の検証を行います。

  • SPF のチェック
  • SPF アラインメントのチェック
  • DKIM 署名のチェック
  • DKIM アラインメントのチェック

SPF と SPF アラインメント のチェックのいずれかに失敗すれば、SPF の検証に失敗したと判定します。

一方、DKIM 署名 と DKIM アラインメント のチェックのいずれかに失敗すれば、DKIM の検証に失敗したと判定します。

SPF の検証および DKIM の検証結果を受け、SPF と DKIM 検証のいずれにも失敗した場合、最終的に DMARC の検証に失敗したと判定します。

DMARC の検証に失敗した場合、ドメインのポリシータグ (p=none や p=quarantine など) と DMARC の処理設定に応じてメッセージを処理します。

例えばドメインのポリシーに p=none が設定されており、DMARC の隔離の設定に「メッセージをインターセプトしない」が設定されていれば、DMARC の検証に失敗したとしても DMARC の検証ではブロックせず、メッセージを検索サービスに渡してポリシールールの検索を行います。

DMARC 検証に失敗したメッセージの確認方法

管理コンソールの ログ > ログクエリ 画面を開き、種類に「送信者フィルタ」「DMARC」を選択して検索します。DMARC 検証に失敗したメッセージが以下のようにリストに表示されます。

ログクエリ (送信者フィルタ)

「処理」の項目には、処理設定の「メッセージをインターセプトしない」が実行された場合には「放置」、「隔離」が実行された場合には「隔離」、「拒否」が実行された場合には「拒否」と表示されます。

隔離されたメッセージは「ポリシーイベント」でも検索できます。種類に「ポリシーイベント」を選択した上でルールに「DMARC検証ルール」または「DMARC*」を入力して検索してください。

ログクエリ (ポリシーイベント)

拒否されたメッセージはメッセージ追跡やポリシーイベントでは検索されませんが、拒否したログは以下のようにメールログ (/var/log/maillog) に出力されます。

May  2 10:43:58 imsva91 postfix/cleanup[23587]: A4BFAC8049: milter-reject: END-OF-MESSAGE from unknown[127.0.0.1]: 5.7.1 rejected by DMARC policy for trendmicro.com; from= to= proto=ESMTP helo=
May  2 10:43:58 imsva91 postfix/smtpd[23582]: proxy-reject: END-OF-MESSAGE: 550 5.7.1 rejected by DMARC policy for trendmicro.com; from= to= proto=ESMTP helo=

X-IMSS-DMARC-Authentication-Results ヘッダ

「メールメッセージにX-Headerを挿入」にチェックを入れた場合、X-IMSS-DMARC-Authentication-Results ヘッダがメッセージに挿入されます。

パラメータ説明
spfSPF 検証の結果が表示されます。
smtp.mailfromエンベロープの送信者のドメインが表示されます。
dkimDKIM 検証の結果が表示されます。
header.dDKIM の SDID ("d=" タグのドメイン) が表示されます。
dmarcDMARC 検証の結果が表示されます。
policyDMARC レコードのポリシータグに指定された処理方法 (none, quarantine, reject) が表示されます。
action処理設定にしたがって実行された処理 (none または quarantine) が表示されます。
header.fromFrom ヘッダのメールアドレスのドメインが表示されます。

以下にヘッダのサンプルを一部、紹介します。

SPF および DKIM の検証に成功した場合 (DMARC 検証: 成功)
X-IMSS-DMARC-Authentication-Results: spf=pass (sender IP address:) smtp.mailfrom=trendmicro.com; dkim=pass() header.d=trendmicro.com; dmarc=pass policy=none action=none header.from=trendmicro.com
SPF アラインメントには失敗したが、それ以外には成功した場合 (DMARC 検証: 成功)
X-IMSS-DMARC-Authentication-Results: spf=fail (sender IP address:) smtp.mailfrom=sales.trendmicro.com; dkim=pass() header.d=trendmicro.com; dmarc=pass policy=none action=none header.from=trendmicro.com
DKIM アラインメントには失敗したが、それ以外には成功した場合 (DMARC 検証: 成功)
X-IMSS-DMARC-Authentication-Results: spf=pass (sender IP address:) smtp.mailfrom=sales.trendmicro.com; dkim=fail() header.d=trendmicro.com; dmarc=pass policy=quarantine action=none header.from=sales.trendmicro.com
SPF、DKIM 署名の検証 (DKIM ヘッダ自体が存在しない) に失敗した場合 (DMARC 検証: 失敗)
X-IMSS-DMARC-Authentication-Results: spf=fail (sender IP address:) smtp.mailfrom=trendmicro.com; dkim=fail(no signature error) header.d=trendmicro.com; dmarc=fail policy=none action=none header.from=trendmicro.com

集計フィードバックレポート (集計レポート)

「送信者に認証失敗の日次レポートを配信する」にチェックを入れた場合、IMSVA では DMARC の検証に失敗したドメインについてのみ、毎日 2時 に DMARC レコードの rua タグに指定されたメールアドレス宛に以下のようなフィードバックレポートを送信します。

送信者: noreply-dmarc@imsva.trendmicro.com
件名: [DMARC Report] imsva.trendmicro.com!example.com!1557154800!1557241199
本文: The DMARC report for 2019-05-07 is attached for your reference.
添付ファイル: imsva.trendmicro.com!example.com!1557154800!1557241199.zip

件名の "example.com" はレポートの送信先ドメインを示します。また、"1557154800" と "1557241199" は日次レポートの集計範囲 (上記例では 2019/5/7 00:00:00 から 23:59:59 まで) を UNIX 時間で表示しています。

また、送信者と件名、添付ファイル名には "imsva.trendmicro.com" というホスト名が初期設定で使用されます。本来 IMSVA サーバのホスト名が表示されるものであるため、日次レポートの配信を有効にした場合、ユーザ環境に合わせて以下の手順で imsva.trendmicro.com のホスト名を変更してください。

  1. IMSVA サーバに root でログインして PostgreSQL の psql コマンドを実行し、データベースにログインします。

    # /opt/trend/imss/PostgreSQL/bin/psql imss sa
    
  2. 次に以下の SQL コマンドを順に実行してテーブルの値を変更します。

    imss=# UPDATE tb_dmarc_report_configuration SET value = 'noreply-dmarc@mail.example.com' WHERE section = 'dmarcreport' AND param = 'sender';
    UPDATE 1
    imss=# UPDATE tb_dmarc_report_configuration SET value = 'mail.example.com' WHERE section = 'dmarcreport' AND param = 'orgname';
    UPDATE 1
    

    mail.example.com の部分を IMSVA のホスト名 (FQDN) などに変更してください。

  3. 下記コマンドを実行して psql のセッションを終了します。

    imss=# \q
    
Premium
Internal
Partner
評価:
カテゴリ:
機能/仕様; 操作方法/設定
Solution Id:
1122464
ご提案/ご意見
このソリューションはお役に立ちましたか?

フィードバックありがとうございました!


*こちらに技術的なご質問などをいただきましてもご返答する事ができません.

何卒ご了承いただきますようお願いいたします.


To help us improve the quality of this article, please leave your email here so we can clarify further your feedback, if neccessary:
We will not send you spam or share your email address.

*This form is automated system. General questions, technical, sales, and product-related issues submitted through this form will not be answered.


ユーザーガイド