DMARC 詳細仕様-2

レコード仕様

イラスト/猫先生が勉強を教えている

メール送信者 (ドメイン管理者) は、対象となるドメインに対して DMARC レコードを設定します。その意味で、メール送信側からメール受信者に求める事柄を示した情報の集まりと言えます。DMARC レコードは、DNS 上のテキスト (TXT) 資源レコード (RR) に設定します。例えば、example.jp ドメインがメールに利用するドメインだとすれば、以下の場所に DMARC レコードが設定されます。

_dmarc.example.jp IN TXT "v=DMARC1; p=none; rua=mailto:dmarc-fb@example.jp"

DMARC レコードは、TXT RR に設定しますのでテキスト文字列として表現されます。各パラメータは、タグと呼ばれる文字列 (v, p, rua など) と=のあとに続く値 (DMARC1,none, mailto:. . .) の組み合わせで表現されます。パラーメタの間は;(セミコロン) で区切られます。現在定義されているパラメータの一覧と概要を以下に示します。括弧内は設定できる値で太字は指定しなかった場合のデフォルト値です。

パラメータ 概要
adkim DKIM 認証識別子のアライメントモード (r, s)
aspf SPF 認証識別子のアライメントモード (r, s)
fo 失敗レポートのオプション (0, 1, d, s)
p メール受信者に要望する認証失敗時の動作 (none, quarantine, reject)
pct ポリシーを適用するメールの割合 (0〜100, デフォルトは100)
rf 失敗レポートの形式 (現状 afrf のみ)
ri 集約レポートの送信間隔 (デフォルトは86400秒=24時間)
rua 集約レポートの送り先 (URI で指定)
ruf 失敗レポートの送り先 (URI で指定)
sp サブドメインに対するポリシー (none, quarantine, reject)
v バージョン番号 (現状 DMARC1 のみ)

次に各パラメータについてもう少し詳しく説明します。

adkim、 aspf パラメータは、いずれも relaxed mode を示す r か strict mode を示す s のいずれかの値を設定します。relaxed mode とは、DKIM あるいは SPF で認証したドメイン (認証識別子) と、ヘッダ上の送信者情報 (From:ヘッダ, RFC5322.From) との組織ドメインが同じであれば良い場合を示します。例えば、DKIM で認証したドメイン (DKIM-Signature:ヘッダで d= で示されるドメイン) が example.com である場合、RFC5322.From が alerts@news.example.com であったとすると、組織ドメインが同じ example.com ですので、relaxed mode ではアライメントであることにより認証結果が pass となります。逆に strict mode の場合は、完全にドメインが一致している必要がありますので、DKIM としては DMARC 認証ができないことになります。

fo パラメータは、失敗レポートの送信条件を設定します。設定できる値の意味は以下のとおりです。

意味
0 全ての認証が pass で無かった場合に失敗レポートを生成する
1 いずれかの認証が pass で無かった場合に失敗レポートを生成する
d DKIM の署名検証が失敗した場合に失敗レポートを生成する
s SPF の検証が失敗した場合に失敗レポートを生成する

p パラメータは、DMARC (ポリシー) レコードの中で必須項目となります。これは、メール受信者に対して認証が失敗した場合の処理動作を要求するものです。各値が示す動作は以下のとおりです。

処理
none 特に何もしない
quarantine 認証に失敗した場合不審なメールとして扱う
reject 認証に失敗した場合 (SMTP 上で) メール拒否

pct パラメータは、DMARC ポリシーを適用する割合を百分率の値で示します。但しこの割合は DMARC レポートには適用されませんので、DMARC レポートを送信する場合は全ての受信メールに対する情報を含める必要があります。

rf パラメータは、失敗レポートのフォーマット (形式) を指定します。現在のところ、afrf(Authentication Failure Reporting Format) のみが指定できます。

ri パラメータは、集約レポート (aggregate report) の生成および送信の最大間隔を示した値になります。秒単位の数値で指定します。DMARC の仕様としては、日毎のレポート送信を義務付けており、要望があった場合、時間毎の送信もすべき、と定義されていますが、毎日より短い間隔は努力目標ともされています。

rua、 ruf パラメータは、それぞれ集約レポート、失敗レポートの宛先を示します。指定方法は URI 形式で、メール (mailto:) を必ずサポートする必要がありますが、レポート作成側 (メール受信側) がサポートしていない方法を指定された場合はレポートしないこととなっています。宛先を複数する場合は ',' (カンマ) で区切ります。

rua パラメータを設定したあと、check@naritai.jp に空メールを送信すると、送信ドメイン認証の結果をお知らせするメールとともに、ナリタイから集約レポートが届きます。DMARC の設定確認にご活用ください。*1

DMARC レポートの受信を外部に委託する場合、すなわち DMARC レコードを設定したドメインと関係の無いドメインを rua や ruf に指定する場合には、相互の関連性を示す必要があります。具体的には、レポートの委譲先のドメインに、委譲元のドメインの情報を示す必要があります。例えば、example.jp ドメインの DMARC レコードで、rua (集約レポート) の宛先として example.com を指定する場合、委譲先の example.com ドメイン側で以下の TXT 資源レコードの設定が必要になります。

example.jp._report._dmarc.example.com IN TXT "v=DMARC1"

sp パラメータは、全てのサブドメインに対する DMARC ポリシーを指定します(オプションです)。設定する値は、p パラメータと同じです。

v パラメータは、バージョン番号を示しますが現状では v=DMARC1 という固定文字列になります。DNS の TXT レコードは、DMARC レコード以外の用途にも利用されますので、他のレコード (SPF レコードなど) と区別するために、このバージョン番号を DMARC レコードの先頭に記述する必要があります。

*1

DMARC DKIM CHECK について
https://www.naritai.jp/notice_check_dmarc.html