ガイド
DMARC 確認:DMARC レコードをタグごとに読み解く
DMARC は、あなたのドメインから送られたと称しながら SPF と DKIM の認証に失敗したメールをどう扱うかを、受信側のメールサーバーに伝えます。レコードが間違っていると、なりすましメールが届いたり、自社のメールが迷惑メールに入ったりします。ここではその確認方法を紹介します。
DMARC レコードの場所
DMARC は、ドメインの前に _dmarc. を付けた名前に置く TXT レコードです。example.com なら、_dmarc.example.com の TXT レコードを調べます。
_dmarc.example.com. TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100"
このレコードは必ず 1 つだけにします。DMARC レコードが 2 つあると、受信側は両方とも無視します。
重要なタグ
| タグ | 意味 | 例 |
|---|---|---|
v | バージョン。先頭に置き、値は DMARC1 にします。 | v=DMARC1 |
p | ドメインのポリシー:none(レポートのみ)、quarantine(疑わしいメールとして扱い、通常は迷惑メールフォルダへ)、reject(受信を拒否)。 | p=reject |
sp | サブドメインのポリシー。省略時は p と同じ。 | sp=quarantine |
pct | 認証に失敗したメールのうちポリシーを適用する割合(0〜100)。省略時は 100。 | pct=25 |
rua | 集計レポートの送信先。 | rua=mailto:dmarc@example.com |
ruf | 失敗レポートの送信先。多くのプロバイダーは送信しません。 | ruf=mailto:forensic@example.com |
adkim, aspf | DKIM と SPF のアライメントモード:r は緩和(サブドメインも一致、既定)、s は厳格。 | adkim=s |
p=none、quarantine、reject のどれにするか
- p=none は何も保護しません。受信側はレポートを送るだけです。数週間使って、誰があなたのドメイン名でメールを送っているかを把握します。
- p=quarantine は認証に失敗したメールを迷惑メールに振り分けます。利用中のすべてのサービスが認証に通るようになったら、安全に進められる段階です。
- p=reject はなりすましメールを完全にブロックします。多くのドメインが目指すべき設定です。
p=none で rua もないレコードは、保護もレポートも得られず、まったく意味がありません。
DMARC の判定方法:アライメント
SPF か DKIM のどちらかが成功し、かつチェックしたドメインが From ヘッダーのドメインと一致すると、メールは DMARC に合格します。SPF はエンベロープの送信者(Return-Path)を、DKIM は署名の d= ドメインをチェックします。自社ドメインで署名するメール配信サービスは DKIM には合格しますが、そのサービスであなたのドメインの DKIM を設定するまでは DMARC のアライメントに失敗します。
よくある間違い
- レコードを
_dmarc.ではなくドメイン自体に置いている。 - DMARC レコードが 2 つある、または SPF レコードの中に DMARC を書いている。
- テスト後も
pctが 100 未満のままで、なりすましメールの大半が届いてしまう。 - すべての送信サービス(CRM、ヘルプデスク、メールマガジン)がアライメント付きで SPF か DKIM に合格する前に
p=rejectにしている。 - レポートの送信先が別ドメインのアドレスなのに、そのドメインに許可レコードがない。
SPF と DKIM も確認する
DMARC は他の 2 つに依存しています。SPF レコードは、入れ子の include も含めて DNS ルックアップを 10 回以内に収める必要があり、超えると恒久的なエラー(permerror)になります。DKIM の鍵はセレクター名(たとえば google._domainkey)の下にあり、DNS では一覧を取得できないため、プロバイダーが使うセレクターを知っておく必要があります。