ドメインのDNS設定を確認していると、次のようなTXTレコードが登録されていることがあります。
_dmarc.example.com
TXT v=DMARC1; p=none; rua=mailto:dmarc-report@example.com;
これは、メールのなりすまし対策に関係する「DMARC」という設定です。
DMARCは、自分のドメインを使ったメールが正しく送信されたものかどうかを確認し、認証に失敗したメールをどのように扱うかを受信側のメールサーバーに伝えるための仕組みです。
この記事では、このDMARCレコードの意味をひとつずつ分解して解説します。
DMARCとは?
DMARCとは、Domain-based Message Authentication, Reporting and Conformance の略です。
簡単にいうと、自分のドメインを使ったメールが、正しい送信元から送られているかを確認するための仕組みです。
メールのなりすまし対策では、主に次の3つが使われます。
SPF
SPFは、このドメインからメールを送ってよいサーバーを指定する仕組みです。
たとえば、外部のメールサーバーやWebサーバーからメールを送信する場合、そのサーバーが正規の送信元であることをDNSに登録します。
DKIM
DKIMは、メールに電子署名を付けて、メールが改ざんされていないかを確認する仕組みです。
送信側で署名を付け、受信側でDNSに登録された公開鍵を使って確認します。
DMARC
DMARCは、SPFやDKIMの結果をもとに、認証に失敗したメールをどう扱うかを指定する仕組みです。
つまりDMARCは、SPFとDKIMを活用して、メールの信頼性を高めるための設定です。
今回のDNSレコード
今回のレコードは次の内容です。
_dmarc.example.com
TXT v=DMARC1; p=none; rua=mailto:dmarc-report@example.com;
これは、example.com というドメインに対してDMARC設定を行っているTXTレコードです。
それぞれの意味を分解すると、次のようになります。
_dmarc.example.com の意味
_dmarc.example.com
これは、DMARC専用のDNSホスト名です。
DMARCは、対象ドメインの前に _dmarc を付けた場所にTXTレコードとして設定します。
たとえば、対象ドメインが次の場合、
example.com
DMARCレコードは次の場所に設定します。
_dmarc.example.com
この場所にTXTレコードを登録することで、受信側のメールサーバーは「このドメインにはどのようなDMARCポリシーが設定されているか」を確認できます。
TXT の意味
TXT
これはDNSレコードの種類です。
DMARCは、DNSのTXTレコードとして登録します。
TXTレコードは、ドメインに関するテキスト情報を登録するためのレコードです。
SPF、DKIM、DMARCなどのメール認証設定でもよく使われます。
v=DMARC1 の意味
v=DMARC1
これは、DMARCレコードであることを示すバージョン指定です。
v は version の意味です。
DMARCレコードでは、基本的に最初にこの記述を入れます。
これが入っていることで、受信側のメールサーバーは「これはDMARCの設定だ」と判断できます。
p=none の意味
p=none
これは、DMARCのポリシーを指定する部分です。
p は policy の意味です。
p=none は、認証に失敗したメールがあっても、隔離や拒否はせず、通常通り扱うという設定です。
つまり、まずは監視だけを行う設定です。
DMARCポリシーの種類
DMARCのポリシーには、主に次の3種類があります。
p=none
p=none
認証に失敗しても、メールを拒否しません。
まずは状況確認をするための設定です。
p=quarantine
p=quarantine
認証に失敗したメールを、迷惑メール扱いにするよう受信側に指示します。
p=reject
p=reject
認証に失敗したメールを、拒否するよう受信側に指示します。
今回の設定は p=none なので、なりすましメールを強制的に拒否する設定ではありません。
まずはDMARCの状況を確認するための状態です。
rua=mailto:dmarc-report@example.com の意味
rua=mailto:dmarc-report@example.com
これは、DMARCの集計レポートを受け取るメールアドレスを指定する設定です。
rua は、Aggregate Report を受け取る宛先を意味します。
この設定があると、GoogleやYahooなどのメール受信側サーバーから、DMARCのレポートが送られてくることがあります。
たとえば、次のようなメールです。
Report domain: example.com
Submitter: google.com
これは、Googleが「example.com のDMARC認証結果に関するレポート」を送っている状態です。
つまり、DMARCレポート通知が届く原因は、この部分です。
rua=mailto:dmarc-report@example.com
この設定によって、DMARCレポートの送信先が指定されているため、各メール事業者からレポートメールが届くことがあります。
3600 の意味
3600
これはTTLです。
TTLとは、Time To Live の略で、DNS情報をキャッシュしてよい時間を秒数で表したものです。
3600 は、3600秒という意味です。
つまり、1時間です。
DNSレコードを変更した場合でも、TTLの影響により、すぐに全体へ反映されるわけではありません。
しばらく古い情報が残る場合があります。
0 の意味
0
DNS管理画面では、優先度の列に 0 が表示されることがあります。
MXレコードでは優先度が重要ですが、TXTレコードの場合、この値は基本的に意識しなくて大丈夫です。
今回のDMARCレコードで重要なのは、TXTの内容です。
DMARCレポート通知を止めたい場合
DMARCレポート通知を止めたい場合は、次の部分を削除します。
rua=mailto:dmarc-report@example.com;
修正前はこの状態です。
v=DMARC1; p=none; rua=mailto:dmarc-report@example.com;
修正後は次のようにします。
v=DMARC1; p=none;
これで、DMARCレポートの送信先がなくなるため、GoogleなどからDMARCレポートメールが届かなくなります。
ただし、すでに送信準備済みのレポートが数通届く可能性はあります。
また、DNSの反映には数分から24時間程度かかることがあります。
DMARCレコード自体は削除しない方がよい
DMARC通知を止めたい場合でも、DMARCレコード自体を削除するより、rua だけを削除する方が安全です。
DMARCレコードを完全に削除すると、対象ドメインにDMARCポリシーが存在しない状態になります。
最低限、次のように残しておくことで、DMARCの基本設定は維持できます。
v=DMARC1; p=none;
将来的にメール認証を強化したい場合
最初は p=none で運用し、問題がないことを確認したあと、段階的に強化する方法があります。
まずは監視のみ。
v=DMARC1; p=none;
次に、認証に失敗したメールを迷惑メール扱いにします。
v=DMARC1; p=quarantine;
最後に、認証に失敗したメールを拒否します。
v=DMARC1; p=reject;
ただし、いきなり p=reject にすると、正規のメールまで届かなくなる可能性があります。
メール配信サービス、問い合わせフォーム、WordPress、予約システム、外部SMTPなどを使っている場合は、SPFやDKIMが正しく設定されているか確認してから変更する必要があります。
まとめ
今回のDMARCレコードは、次のような意味です。
_dmarc.example.com
TXT v=DMARC1; p=none; rua=mailto:dmarc-report@example.com;
_dmarc.example.com は、example.com のDMARC設定を置く場所です。
TXT は、DNSのテキストレコードです。
v=DMARC1 は、DMARCレコードであることを示しています。
p=none は、認証に失敗したメールを拒否せず、監視だけ行う設定です。
rua=mailto:dmarc-report@example.com は、DMARCの集計レポートを受け取るメールアドレスです。
DMARCレポート通知が届く原因は、この rua の設定です。
通知を止めたい場合は、DMARCレコードを削除するのではなく、次のように rua だけを削除するのがおすすめです。
v=DMARC1; p=none;
これで、DMARCの基本設定を残したまま、レポート通知だけを止めることができます。
