DNSのDMARCレコードとは?

DMARCは、メールセキュリティの重要な要素です。DMARCポリシーは、DNSのTXTレコードに登録されています。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • DMARCが使われる理由の説明
  • DMARCポリシーの説明
  • DMARCにおけるDNS TXTレコードの使用方法を理解する

記事のリンクをコピーする

DMARCとは?

DMARC(Domain-based Message Authentication Reporting and Conformance)は、電子メールメッセージの認証方式の一つです。DMARCポリシーは、受信側のメールサーバーに、ドメインの Sender Policy Framework(SPF) および DomainKeys Identified Mail(DKIM) レコードをチェックした後の動作を指定する、追加の電子メール認証方法です。

DMARCやその他の電子メール認証方法は、電子メールのなりすましを防止するために必要です。すべての電子メールアドレスには、アドレスの「@」記号の後の部分であるドメインがあります。悪意のある人物やスパマーは、使用が許可されていないドメインからメールを送信しようとすることがあります — 誰かが誤った返信先を設定するような行為。このような行為は、ユーザーを騙すため(たとえばフィッシング攻撃)などの理由で行われることがあります。

DMARC、DKIM、SPFの組み合わせは、メール送信者のバックグラウンドチェックのような役割を果たし、送信者が本当に本人であるかどうかをチェックします。

例えば、スパムメール送信者が、「example.com」ドメインからメールを送信する権限がないにもかかわらず、「trustworthy@example.com」というアドレスからメールを送信したとします。スパマーは、メールの「From」ヘッダを「trustworthy@example.com」に置き換えることでこれを行います — 実際のexample.comメールサーバーからは電子メールを送信しません。このメールを受信したメールサーバーは、DMARC、SPF、DKIMを使用して、これが不正なメールであることを発見し、メールメッセージをスパムとしてマークしたり、配信を拒否したりすることができます。

DMARCポリシーとは?

DMARCポリシーは、SPFおよびDKIMレコードと照合された後の電子メールの処理を決めるものです。電子メールは、SPFとDKIMで許可または不許可になります。DMARCポリシーは、不許可になった場合にメールをスパムとしてマークするか、ブロックするか、あるいは意図した受信者に配信するかを決定します。(DMARCレコードがない場合でも、メールサーバーは電子メールをスパムとしてマークすることがありますが、DMARCはどのような場合にそうするかについて明確な指示を提供しています。)

Example.comのドメインポリシーは次のようなものです。

「DKIMとSPFの検証に失敗したメールは、スパムとしてマークする。」

これらのポリシーは、人間が読むための文章としてではなく、機械で処理するコマンドとして記録され、メールサービスが自動的に解釈できるようになっています。そのDMARCポリシーは、実際には次のようになります。

v=DMARC1; p=quarantine; adkim=s; aspf=s;

これは何を意味するのか?

  • v=DMARC1 は、このTXTレコードにDMARCポリシーが含まれており、メールサーバーがそのように解釈すべきであることを示しています。
  • p=quarantine は、DKIMとSPFに失敗した電子メールはメールサーバーが「隔離」を行うことを示します — スパムの可能性があるとみなします。その他の設定には、p=none (認証に失敗したメールでも通過できるようにする)、p=reject(認証に失敗したメールをブロックするようにメールサーバーに指示する)があります。
  • adkim=s は、DKIMの検証が「strict」であることを意味します。これは、 adkim=r のように sr に変更することで、「relaxed」に設定することもできます。
  • aspf=sadkim=sと同じですが、SPFで使用します。
  • なお、 aspfadkim の設定はオプションです。p=属性は、SPFとDKIMに失敗したメールに対して、メールサーバーが何をすべきかを示すものです。

もし、example.comの管理者が、このポリシーをさらに厳しくして、不正なメッセージをスパムと見なすようにメールサーバーにもっと強く伝えたい場合は、「p=」属性を次のように調整します。

v=DMARC1; p=reject; adkim=s; aspf=s;

本質的にこれは「メールがDKIMとSPFの検証に失敗した場合は配信しない」と指示しています。

DMARCレポートとは?

DMARCポリシーには、DKIMまたはSPFによって、許可または不許可となった電子メールに関するレポートの送信指示が含まれています。通常、管理者は、レポートをより理解しやすい形に加工するサードパーティサービスに送信するように設定し、管理者が情報に圧倒されないようにします。DMARCレポートは、管理者がDMARCポリシーをどのように調整するかを決定するのに必要な情報を提供するため、非常に重要です — 例えば、正当なメールがSPFやDKIMに失敗している場合や、スパマーが不正なメールを送ろうとしている場合など。

example.comの管理者は、このポリシーの rua の部分を追加して、DMARCレポートをサードパーティサービス(メールアドレスは「example@third-party-example.com」)に送信します。

v=DMARC1; p=reject; adkim=s; aspf=s; rua=mailto:example@third-party-example.com;

DMARCレコードとは?

DMARCレコードは、ドメインのDMARCポリシーを登録するものです。DMARCレコードは、Domain Name System(DNS)に、DNS TXTレコードとして登録されます。DNS TXTレコードには、ドメイン管理者が自分のドメインと関連づけたいと考えるほぼすべてのテキストを含めることができます。DNS TXTレコードの使用方法のひとつに、DMARCポリシーの登録があります。

(DMARCレコードは、DMARCポリシーを含むDNS TXTレコードであり、特殊なタイプのDNSレコードではないことに注意してください)。

Example.comのDMARCポリシーは次のようになります。

名称 種類 本文 TTL
example.com TXT v=DMARC1; p=quarantine; adkim=r; aspf=r; rua=mailto:example@third-party-example.com; 32600

DMARCポリシーは、このTXTレコードの中の「Content」フィールドに含まれます。

メールを送信しないドメインについてはどうなるか?

電子メールを送信しないドメインについても、スパマーによるそのドメインの使用を防止するためにDMARCレコードを持つべきです。DMARCレコードには、SPFとDKIMに失敗したすべての電子メールを拒否するDMARCポリシーが必要です — そのドメインから送信されるすべての電子メールである必要があります。

つまり、example.comがメールを送信するように設定されていない場合、すべてのメールはSPFとDKIMに失敗し、拒否されてしまいます。

Cloudflare EmailセキュリティのDNSウィザードを使用すると、スパマーによるドメイン使用をブロックための正しいDNSのTXTレコードを簡単に設定することができます。それについてはこちらをお読みください

メール用DNSレコードの詳細はこちら:

DMARCについては、RFC 7489で詳しく説明されています。