DMARCとは?

DMARCとは?

この記事は What Is DMARC in Email (Understanding DMARC Records)? の抄訳です。

DMARC(Domain-based Message Authentication, Reporting & Conformance)とは、メールの認証を行うSPF(Sender Policy Framework)とDKIM(DomainKeys identified mail)を利用して、メールの信頼性を判断するプロトコルです。DMARCを利用することで、正規の組織になりすました攻撃者のメール(なりすましメール)をドメイン管理者が捕捉できるようになります。

  • SPF
    送信者が自身のドメインのメール送信サーバ(IPアドレス)を事前に登録しておくことで、なりすましを見破る技術です。受信サーバはSPFレコードをチェックし、許可されたサーバから送られたメールであることを確認します。
  • DKIM
    送信メールにデジタル署名を追加することで、メールの改ざんを検知する技術です。受信側のメールサーバはドメインのDNSレコードに書かれた公開鍵を使って署名を検証し、メールが送信中に改ざんされていないことを確認します。

DMARCの仕組み

DMARCでは、SPFまたはDKIMで認証されなかったメールを迷惑メールフォルダに振り分けるか、まとめてブロックするかを送信元のドメイン所有者自身がコントロールできます。 こうすることで、スパマーの識別がより正確になり、悪意あるメールの侵入を防ぐだけでなく、誤検知を最小限に抑え、認証状況の透明性をより高めることができます。
チェックされたメールの情報をドメイン所有者に報告する仕組みもあり、設定の不備やなりすましの有無を調べることができます。

DMARCに対応していない受信サーバもありますが、主要なISPは対応しており、導入の動きはさらに広がり続けています。

DMARCのメリット

DMARCを設定し、ドメインの利用状況をモニタリングすべき理由は以下の4つです。

  1. レピュテーションを保護できる
    自身のドメインを利用したなりすましメールを防げるのでブランドの信頼性を守ることができます。さらに、DMARCレコードを追加しているということ自体がレピュテーションに良い影響を与える場合もあります。
  2. メールプログラムの可視性を高められる
    自身のドメインを使ってメールを送信している人についての「レポート」を受け取ることができるので、メールプログラムの可視性が向上します。
  3. 将来的なメールの到達性を確保できる
    認証に失敗したメールへの一貫した対処方針を確立することができます。これによりメールのエコシステムはより安全で信頼性の高いものとなり、ブラックリストに掲載されるリスクを減らすことができます。
  4. BIMI(Brand Indicators for Message Identification)を設定できる
    受信トレイのメールにブランドロゴを表示できるようになります。ブランドの認知度を高め、受信者により視覚的なアピールをすることができます。

DMARCレコードはどのように書かれているのか?

DMARCレコードがどのように書かれているのかは、ターミナルに次のように打ち込むと確認できます。

dig txt _dmarc.sendgrid.net

Valimailを使ってDMARCレコードを確認することも可能です。
Twilio SendGridのDMARCレコードは以下のように登録されています(2020年初版執筆当時)。

v=DMARC1;p=none;rua=mailto:dmarc@sendgrid.com;ruf=mailto:dmarc@sendgrid.com;rf=afrf;pct=100

DMARCレコードの読み方

SendGridのDMARCレコードを例に、その内容を読み解いていきましょう。

“v=DMARC1”

受信サーバは、メッセージのヘッダFromのDNSレコードからこのタグを探します。“v=DMARC1”から始まるTXTレコードがないと、受信サーバはDMARCを確認しません。

“p=none”

DMARCの認証に失敗したメッセージを受信サーバがどう扱うべきかを指示しています。”none”が指定されている場合には、DMARCの認証に失敗したメッセージに対して受信サーバは何もしません。設定できるポリシーには次の3種類があります。

  1. p=none:認証に失敗したメールに対して、何もしないよう受信サーバに指示しますが、違反があった場合はDMARCレコードの”mailto:”にレポートを送信します。
  2. p=quarantine:認証に失敗したメールを隔離するよう受信サーバに指示します。
  3. p=reject:認証に失敗したメールはすべて受け取りを拒否するよう受信サーバに指示します。認証に成功したメールだけが受信トレイに届けられます。

“rua=mailto:dmarc@sendgrid.com”

DMARCの集計レポート(RUAレポート)の送信先を指定します。このレポートにはDMARCの失敗に関する大まかな情報が含まれ、ドメイン管理者宛に毎日送信されます。

“ruf=mailto:dmarc@sendgrid.com”

DMARCの認証失敗レポート(RUFレポート)の送信先を指定します。このレポートにはそれぞれの失敗に関する詳細な情報が含まれ、ドメイン管理者宛に即座に送信されます。”rua”と異なり、”mailto:”に指定できるメールアドレスは、DMARCレコードに登録されているドメインのアドレスのみです。

“rf=afrf”

認証失敗レポートの種類を指定します。”afrf”はAuthentication Failure Reporting Using the Abuse Reporting Formatを指します。

“pct=100”

DMARCポリシーを適用するメールの割合を1から100の値で指定します。
”pct=100”で”p=reject”を指定した場合、DMARCの認証に失敗した全てのメールが受信拒否されます。逆に、“pct=1”とすると、失敗したメールの1%だけが受信拒否されるようになります。

DMARCレコードで指定できるタグは他にもありますので、いくつかご紹介します。

“sp=”

DMARCポリシーをサブドメインに適用するかどうかを指定できます。

“adkim=”

DKIMアライメントを設定できます。DKIMアライメントでは、DKIMの認証で利用したドメイン(”d=”で定義されているドメイン)とヘッダFromのドメインの関係性を”s”(strict)または”r”(relaxed)で定義し、その関係性が正しいかどうかを検証します。”s”を指定した場合は、2つのドメインが完全に一致している場合のみDMARCの認証が通過します。”r”を指定した場合は、2つのドメインのルートドメインが一致していれば認証が通過します。

“ri=”

DMARCの集計レポートを受け取る頻度を指定できます。

Twilio SendGridでDMARCに対応するには

過去にフィッシング詐欺の問題があった場合や機密情報を扱う金融系のビジネスを営んでいる場合は、DMARCに対応するのが賢明です。サイバー攻撃による将来的なメール認証の問題を未然に防ぐために、DMARC対応を先延ばしにする理由はありません。

また、DMARCのRUAレポートおよびRUFレポートは機械で読めるよう設計されており、人間が解読するのは困難です。ValimailのようなDMARCレポート監視サービスを利用して情報にアクセスする必要があることを忘れてはいけません。

DMARC対応を決断し、監視サービスを選択したら、次は以下の5つの手順を実施しましょう。

1. 独自ドメイン利用設定(Sender Authentication)でDKIMとSPFを有効化する

SendGridアカウントで独自ドメイン利用設定(Sender Authentication)を行いましょう。これにより、SendGridを介して送信されたメールが、独自ドメインのDKIMとSPFで適切に認証されます。
設定方法がわからない場合は、こちらを参照してください。

2. ドメインのDKIMとSPFが適切に設定されていることを確認する

テストメールを送信して、設定が正しく機能していることを確認しましょう。DKIMおよびSPFの認証に使用されたドメインが、Sender Authenticationで設定したドメインと一致していればOKです。

DKIMとSPFが適切に設定されていることを確認

3. DNSレジストラでDMARCレコードを公開し、結果を監視する

自身のドメインホストのDNSレジストラ(お名前.com など)で、DMARCの設定を記述したTXTレコードを追加します(※追加手順は独自ドメイン利用設定でDNSレコードを追加したときと同様です)。その際、サブドメインではなく親ドメインに追加してください。このレコードは、受信メールサーバが送信元のDMARCの設定を確認するために参照されます。

DMARCレコードを公開

4. 受け取ったフィードバックを分析し、必要に応じてメールの流れを調整する

DMARCに対応した受信サーバが認証に失敗したメールを受け取ると、レポートを生成してDMARCレコードで指定されたmailtoアドレスに送ります。

レポートには、自分のドメインを名乗っているサービスを特定するのに役立つ情報が含まれています。

以下は、2つのメールの結果を示すサンプルレポートです。

<report_metadata>
  <org_name>receiver.com</org_name>
  <email>noreply-dmarc-support@receiver.com</email>
  <extra_contact_info>http://receiver.com/dmarc/support</extra_contact_info>
  <report_id>9391651994964116463</report_id>
  <date_range>
    <begin>1335571200</begin>
    <end>1335657599</end>
  </data_range>
</report_metadata>  
<policy_published>
  <domain>sender.com</domain>
  <adkim>r</adkim>
  <aspf>r</aspf>
  <p>none</p>
  <np>none</np>
  <pct>100</pct>
</policy_published>
<record>
  <row>
    <source_ip>72.150.241.94</source_ip>
    <count>2</count>
    <policy_evaluated>
      <disposition>none</disposition>
      <spf>fail</spf>
      <dkim>pass</dkim>
    </policy_evaluated>
  </row>
  <identifiers>
    <header_from>sender.com</header_from>
  </identifiers>
  <auth_results>
    <spf>
      <domain>sender.com</domain>
      <result>fail</result>
    </spf>
    <dkim>
      <domain>sender.net</domain>
      <result>pass</result>
      <human_result></human_result>
    </dkim>
    <dkim>
      <domain>sender.com</domain>
      <result>pass</result>
      <human_result></human_result>
    </dkim>
  </auth_results>
</record>

リストされているSPFとDKIMのauth_resultsは、アライメントの結果は考慮していないことに注意してください。ファイル名は「受信側ドメイン”!”DMARCを設定したドメイン”!”データ範囲の開始時刻”!”データ範囲の終了時刻”.” 拡張子」の形式です(例: receiver.org!sender.com!1335571200!1335657599.zip)。

集計レポートは.zip形式の添付ファイルで送信されます。レポート受信アドレスがこの形式を受け取れることを確認してください。

5. 分析し、DMARCポリシーを段階的に引き上げる

自分のドメインになりすましている送信者を特定する情報が収集できたので、次はポリシーを引き上げてみましょう。

これまで”p=none”でレポートを受け取ってきて、メールがどこから来るかは大体把握できたと思います。次は、DMARCレコードのポリシーを変更して、なりすましメールを受け取ったときの制御を開始します。

DMARCを導入してメールセキュリティを高めましょう

DMARCは、メール認証におけるすばらしい進化であり、送信者とISPが協力してメールチャネルを保護する優れた例です。

DMARCの詳細はwww.dmarc.orgを、SendGridで送信ドメイン認証を行う方法はこちらをご覧ください。

アーカイブ

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。