DMARCがもっとよくわかる!概要とレコードの読み方

送信レピュテーションを確認する5つの方法

この記事は What is DMARC? の抄訳です。

DMARC(Domain-based Message Authentication, Reporting & Conformance)とは、メールの認証を行うSPFDKIMを利用するプロトコルです。DMARCはSPFとDKIMの認証が両方とも失敗した場合に動作します。

※DMARCの基本的な内容を知りたい方は、『なりすまし』を防ぐDMARCとは?をお読みください。

DMARCレコードは、他のDNSレコード(SPF、Aレコード、CNAME、DKIMなど)と一緒に登録してください。メールの認証を行うSPFやDKIMとは異なり、DMARCポリシーは特定の送信者からメールを受けとったときに受信サーバがどうすべきかを指示することができます。
DMARCに対応していない受信サーバもありますが、主要なISPは対応しており、実装する動きが広まってきています。

DMARCのメリット

  • なりすましメールを防げるのでブランドの信頼性を守ることができます。さらに、DMARCレコードを追加しているということ自体がレピューテーションに良い影響を与える場合もあります。
  • あなたのドメインを使ってメールを送信している人についての「レポート」を受け取ることができるので、メールプログラムの可視性が向上します。
  • メールコミュニティが、認証に失敗したメッセージの取り扱いに関するポリシーを作成するのに役立ちます。メールエコシステムをより安全で信頼できるものとするために、DMARCは重要です。

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

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

dig txt _dmarc.sendgrid.net

また、登録されている全てのDMARCレコードはDMARC Inspectorで確認できます。SendGridのDMARCレコードはこのように登録されています。

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の認証に失敗したメッセージに対して受信サーバは何もしません。しかし、この場合でも、エラーレポートは指定したメールアドレス(下記、”rua”と”ruf”を参照)に送信されるので貴重な情報を得ることができます。
通常は「認証されなかったメールは破棄する」というポリシーを適用する前に、まずは”none”を指定して様子を見ます。たいていは、あなたのドメインを使って送信されるなりすましメール(設定ミスなどによるものも含みます)の多さに驚くでしょう。
”p=”では他に、“quarantine”と”reject”を指定できます。”quarantine”が指定されている場合、認証に失敗したメールは隔離され、たいていは迷惑メールフォルダに入ります。”reject”が指定されている場合は、無条件に拒否され受信されません。
DMARCポリシーは様子をみながら段階的に引き上げましょう。

“rua=mailto:dmarc@sendgrid.com”

DMARCの「集計レポート」の送信先を指定しています。この例では、 ”dmarc@sendgrid.com”宛に送信するよう指定されています。
このレポートでは、DMARCの認証に失敗したおおまかな情報はわかりますが、それぞれの失敗についての詳細情報までは提供されません。レポートの送信先は自由に指定できます。

“ruf=mailto:dmarc@sendgrid.com”

DMARCの「認証失敗レポート」の送信先を指定しています。このレポートは、指定したメールアドレス(この例では”dmarc@sendgrid.com”)に即座に送信されます。
認証失敗レポートではそれぞれの失敗に関する詳細な情報が提供されます。指定できるメールアドレスはDMARCレコードに登録されているドメインのアドレスのみです。

“rf=afrf”

認証失敗レポートの種類を指定しています。”rf”はreporting formatを表しており、”afrf”を指定した場合はAuthentication Failure Reporting Using the Abuse Reporting Formatになります。

“pct=100”

DMARCポリシーを適用するメールの割合を指定しています。 ”pct=100”で”p=reject”を指定した場合、DMARCの認証に失敗した全てのメールは受信を拒否されます。

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

“sp=”

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

“adkim=”

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

“ri=”

DMARCの集計レポートを、どれくらいの頻度で受け取るかを指定できます。

DMARCを理解していないと…

DMARCを理解していないと、どんなことが起きるのでしょうか。
例えば、アプリケーションやWebサイトでエンドユーザがメールを送信できる機能があったとします。もし、SendGridなどを利用して送信し、差出人がエンドユーザのアドレス(user@yahoo.com)となっていた場合は、Yahoo!のDMARCポリシーによって受信サーバのDMARCの認証を通過できずメッセージは拒否されてしまいます。同様の問題が、DMARCレコードを登録している他のドメインでも起こります。メールを送っているつもりが全て拒否されていた、なんてことにならないように注意しましょう。

DMARCの実装は今後より一般的になり、また、DMARCの認証に失敗することも増えていくでしょう。DMARCレコードやポリシーの意味をきちんと理解することは重要ですので、下記の参考記事も読んでみてくださいね。

参考記事