BLOG ベアメールブログ
2024.01.23 (火)
HowToガイドDMARCレコードの書き方は? 設定・確認方法や設定例も解説
Last Updated on 2024.08.1
DMARCとは、メールソフト上で表示される送信元ドメイン(ヘッダFrom)を偽装するなりすまし行為を防ぐための送信ドメイン認証技術です。DMARCを導入することで、なりすましを防ぎ、自社と顧客を守ることができます。
DMARCを導入するには、DMARCレコードの設定が必要です。本記事ではDMARCレコードの書き方や設定内容、設定時の注意事項について詳しく解説します。
目次
DMARCの設定方法
まずDMARCを設定する手順について説明します。DMARCの設定自体はDMARCレコードをDNSサーバーに登録するだけなので簡単ですが、事前に必要な準備もあります。
準備
DMARCはSPF(Sender Policy Framework)やDKIM(DomainKeys Identified Mail)の認証結果を利用するため、事前にSPFまたはDKIMのいずれかを設定する必要があります。
「DMARCの導入には、事前にSPFとDKIM両方の設定が必要である」という説明がされている場合もありますが、DMARCの認証にはSPF・DKIM両方が必須というわけではありません。DKIMの導入が難しい場合は、SPFのみでDMARC認証を行うことも可能です。DMARCの認証について詳しくは後述します。
1.SPFの設定
SPFレコードを作成し、送信ドメインのDNSに追加します。
SPFレコードの詳しい解説・設定方法については、こちらの記事をご覧ください。
SPFレコードの書き方とは?記述例を総まとめ | ベアメールブログ
2.DKIMの設定
DKIMを有効にするには、送信メールサーバーでDKIM署名をする仕組みを実装する必要があります。メールサーバーにOpenDKIMなどのDKIMパッケージをインストールし、公開鍵と秘密鍵のペアを生成し、署名の設定を行います。公開鍵はDKIMレコードとして送信ドメインのDNSに追加します。
DKIMについて詳しくはこちらの記事をご覧ください。
DKIMとは? 仕組み・メリット・設定の方法まで解説 | ベアメールブログ
3.DMARCレポートを受け取るメールアドレスを用意する
DMARCを導入すると、受信側メールサービスプロバイダからDMARCレポートを受け取れるようになります。DMARC集計レポートは各プロバイダから毎日送られてくるため、大規模な組織では毎日数百以上のレポートが届くこともあります。そのため、レポート受信専用のメールアドレスを用意しておくことがお勧めです。
DMARCの設定
上記の準備が完了したら、次の手順でDMARCを設定します。
1.DMARCレコードの確認(省略可)
DMARCを設定する前に、すでにDMARCが設定されていないか確認を行います。オンラインのチェックツールなどで確認が可能です。
2.DMARCレコードの設定
DMARCレコードを作成し、送信ドメインのDNSサーバーに追加します。
DMARCレコードの書き方
DMARCレコードとは、ドメインのDMARCポリシーや、DMARCレポートの送付先などを表明するためのレコードです。
DMARCポリシーとはドメイン所有者が設定するルールのことで、送信したメールがDMARCの認証に合格しなかった場合に、どのように扱うべきかを受信サーバーに対し指定できます。
DMARCのポリシーは以下の3種類です。
none 監視を行うだけで、認証失敗時もそのまま配信する quarantine 認証失敗時は不審なメールとして迷惑メールフォルダなどに隔離する reject 認証失敗時は不審なメールとして強制的に削除する
DMARCレコードの書式
DMARCレコードを設定するには、自社ドメインを管理しているDNSサーバー/DNSサービスの管理画面からTXTレコードとして追加します。
1.TXTレコード名
ホスト名を指定する項目には以下のように記載します。
_dmarc.example.com
※“example.com”の位置には実際のドメイン名を記載します。
2.TXTレコードの値
レコードの値を指定する項目には次のようにDMARCレコードの内容を記載します。
v=DMARC1; p=none; sp=reject; rua=mailto:report@example.com
DMARCレコードの内容については次の章で詳しく解説します。
DMARCレコードの内容(タグ)
DMARCレコードの内容は1行のテキストで表され、タグ( v / p / ruaなど)と値を = で指定し、各項目を定義します。各項目の間はセミコロン( ; )で区切ります。
タグには必須のものと、任意のものがあります。
タグ 指定する値 内容 v
※必須DMARC DMARC のバージョンを示します。現在は “DMARC1” を記載します。 p
※必須none / quarantine / reject 認証に失敗したメールの処理方法を左の3つのオプションから指定します。 sp none / quarantine / reject サブドメインにDMARCポリシーを適用するかどうかを指定します。 このタグを使用しない場合、サブドメインは親ドメインに設定されているDMARCポリシーが継承されます。 pct 1〜100までの任意の値(デフォルトでは100) DMARCポリシーを適用するメールの割合を指定します。 rua mailto:任意のメールアドレス 一定期間内のメール認証結果をまとめた「集計レポート」の送信先を指定します。 ri 86400(=24時間・デフォルト)、604800(=1週間)など 集計レポートの送信頻度を秒単位で指定します。 ruf mailto:任意のメールアドレス DMARC認証に失敗した個々のメールについて通知する「失敗レポート」の送信先を指定します。 fo 0 / 1 / d / s 失敗レポートの送信条件を指定します。
0:全ての認証がpassでなかった場合
1:いずれかの認証がpassでなかった場合
d:DKIMに失敗した場合
s:SPFに失敗した場合adkim r / s DKIMのアライメントチェックをどの程度厳密に行うか左の2つのオプションから指定します。 r=リラックスモード:サブドメインでの一致でも可 s=ストリクトモード:ドメインが完全に一致する必要がある aspf r / s SPFのアライメントチェックをどの程度厳密に行うか左の2つのオプションから指定します。 r=リラックスモード:サブドメインでの一致でも可 s=ストリクトモード:ドメインが完全に一致する必要がある
DMARCレコードの確認方法
DMARCレコードを確認するには、次のような方法があります。
- DMARCレコードチェックツール(MXToolboxなど)を使用する
- コマンドラインを使用する
例1)nslookup -type=txt _dmarc.”ドメイン名”
例2)dig _dmarc.”ドメイン名” TXT
DMARCレコードの設定例
DMARCレコードの設定例としては次のようになります。
ホスト名 TTL class type data(値) _dmarc.example.com 3600 IN TXT v=DMARC1; p=none; sp=quarantine; rua=mailto:report@example.com; ruf=mailto:forensic@example.com; ri=86400; adkim=r; aspf=r;
上記のレコードは次のことを指定しています。
- ドメインに対するポリシーはnone(監視のみでそのまま受信する)
- サブドメインに対するポリシーはquarantine(隔離)
- ruaレポートの送信先は report@example.com
- rufレポートの送信先は forensic@example.com
- レポートは86400秒(24時間)ごとに送信される
- DKIM、SPFのアライメントチェックはリラックスモード
DMARC設定の注意点
DMARCレコードの作成時、そしてDMARCの設定後に注意すべきポイントは次のとおりです。
ポリシーはnoneから導入する
DMARC導入によって予期せぬメール配信のトラブルを防ぐため、DMARCの導入時は必ずポリシーを「none」から開始するようにしましょう。
DMARCポリシーはそのドメインを使用して配信しているメールすべてに影響します。メールソフトを使用してやり取りするビジネスメールから、Webサイトからの自動返信メール、メルマガ配信システムから送るメールマガジン、顧客管理システムから配信されるメールなど、外部のメールサービスを使用して配信しているメールもすべて対象となります。
自社の配信状況と認証状況を把握しないでポリシーをいきなり「quarantine」や「reject」にしてしまうと、予期せず認証に失敗してしまった自社の正当なメールまでブロックされてしまい、メールが届かなくなる恐れがあります。
特にSaaSなどを利用している場合、SPFやDKIMの認証をそのサービス提供事業者のドメインで行なっているケースも多く、カスタマイズを行わないとDMARCの認証に失敗してしまう場合も多いため注意が必要です。
SPF・DKIMのアライメントに合格する
DMARCの認証では、SPFやDKIMの認証に合格しているかどうかに加えて、メールのヘッダFromに表示されるドメインと、SPFやDKIMで認証したドメインと一致するか照合を行います。このドメインの一致の確認を「アライメント」と呼びます。
メールにはメールソフト上で通常確認できる差出人であるヘッダFromと別に、エンベロープFromというものが存在しており、これら2つが異なっていても送信できます。この仕様を悪用したものが「なりすましメール」ですが、SPFとDKIMではヘッダfromとエンベロープfromの一致を検証しないため、完全にはなりすましを回避できません。
これをカバーするために、ヘッダFromのドメインを中心に検証を行うのがアライメントです。DMARC認証を成功させるには、SPF・DKIMの認証に合格するだけでなく、アライメントにも合格する必要があります。DMARC認証に合格できないと、いつまでもポリシーを”none”から変更できないためDMARCのなりすまし防止の効力を発揮できません。DMARCを”none”で設定して終わりではなく、きちんと認証に合格できるようにしましょう。
アライメントについて詳しくはこちらの記事をご覧ください。
DMARCのアライメントとは? DMARC認証をクリアするためのポイント | ベアメールブログ
DMARCレポートで認証状況を把握し、ポリシーを強化する
自社の配信と認証の状況を把握するにはDMARCレポートの分析が有効です。ただし、DMARCレポートは各メールプロバイダから毎日XML形式のファイルが送られてくるため、人の手ですべてを集計するのは困難です。自社でXMLファイルを集計・可視化できる環境を用意するか、DMARCの分析サービスを利用するのが良いでしょう。
「政府機関等の対策基準策定のためのガイドライン」(令和5年度版)※ にもDMARCの導入が基本対策として記載されていますが、さらに1年以内にDMARCポリシーをquarantineまたはrejectにすることを推奨しています。自社の正規の送信メールがSPF・DKIM・DMARCすべての認証に合格できるように対応を行い、できるだけ早く「quarantine」や「reject」に切り替えるようにしましょう。
DMARCレポートについて詳しくはこちらの記事をご覧ください。
DMARCレポートとは? 設定方法や集計レポートの読み方、解析ツールを解説 | ベアメールブログ
>※「政府機関等の対策基準策定のためのガイドライン」
https://www.nisc.go.jp/policy/group/general/kijun.html
https://www.nisc.go.jp/pdf/policy/general/guider5.pdf
まとめ
DMARCレコードとは、DMARCを実装するために必要なDMARCポリシーをTXTレコードとして記載したものです。DMARCレコードによって、ポリシーの内容や適用割合、レポートの送信先などを指定できます。ドメインの信頼性を高めるためにDMARCは非常に効果的ですが、正しく設定しないと思わぬメール配信トラブルが生じることもあります。ぜひこの記事を参考に、DMARCが効果的に機能するように設定してみてください。