kazuakix の日記

Windows Phone とか好きです

Office 365 で DMARC を有効にする

DMARC とは

 DMARC は SPF や DKIM と組み合わせてメールを保護する仕組みです。

DMARCとは「Domain-based Message Authentication,Reporting and Conformance」の略で、SPF、DKIMといった既存の認証技術を利用して、詐称されたメールを受信側がどう扱うべきかの方針をドメインの管理者側が宣言するための仕組みです。

 
 SPF は Office 365 に標準で設定されています。DKIM も標準ですが、カスタムドメインを使っている場合は、操作が必要なこともありました。

 同じように DMARC も受信については特に設定する必要はありません。送信についても設定してなくても送信に困ることはないです。
 
 ただ、Office 365 から Outlook.com に送信したメールを確認すると、Authentication-Results ヘッダには "dmarc=bestguesspass action=none" と記載されていました。

Authentication-Results: spf=pass (sender IP is 104.47.93.64)
 smtp.mailfrom=*****.***; live.jp; dkim=pass (signature was verified)
 header.d=*****.***;live.jp; dmarc=bestguesspass action=none
 header.from=*****.***;

 ヘルプによると、bestguesspass は「メインの DMARC TXT レコードが存在しないことを示します。ただし、レコードが存在していた場合、メッセージの DMARC チェックはパスしていたことになります。」という意味だそうです。

DMARC の設定方法

 DMARC の動作は DNS で "_dmarc.ドメイン名" に対する TXT レコードを登録することで設定できます。

 最低限で登録するとしたら、こんな感じのようです。

v=DMARC1; p=none

"v=DMARC1" が決まり文句で、"p"(ポリシー) は「なし (none)」「検疫 (quarantine)」「拒否 (reject)」を選ぶのですが、最初は「なし」で様子を見るのがいいそうです。

 パラメーターはこれ以外にもあります。例えば、マイクロソフトの DMARC の指定はこんな感じになっていました。

PS C:\> Resolve-DnsName -Type txt _dmarc.microsoft.com
Name                                     Type   TTL   Section    Strings
----                                     ----   ---   -------    -------
_dmarc.microsoft.com                     TXT    3599  Answer     {v=DMARC1; p=reject; pct=100; rua=mailto:
                                                                 d@rua.agari.com; ruf=mailto:d@ruf.agari.c
                                                                 om; fo=1}

Outlook.com や gmail だとこんな感じ

PS C:\> Resolve-DnsName -Type txt _dmarc.outlook.com
Name                                     Type   TTL   Section    Strings
----                                     ----   ---   -------    -------
_dmarc.outlook.com                       TXT    3599  Answer     {v=DMARC1; p=none; pct=100; rua=mailto:d@
                                                                 rua.agari.com; ruf=mailto:d@ruf.agari.com
                                                                 ; fo=1}

PS C:\> Resolve-DnsName -Type txt _dmarc.gmail.com
Name                                     Type   TTL   Section    Strings
----                                     ----   ---   -------    -------
_dmarc.gmail.com                         TXT    354   Answer     {v=DMARC1; p=none; rua=mailto:mailauth-re
                                                                 ports@google.com}

 
 個々のパラメーターについては以下のページがわかりやすかったです。

 
 とりあえず、他のドメインを参考にして、ポリシー適用の割合 (pct)、集計レポートの送信先 (rua)、認証失敗レポートの送信先 (ruf) あたりを指定してみることにします。

 テンプレートはこんな感じになるでしょうか。

v=DMARC1; p=none; pct=100; rua=mailto:集計レポート送信先; ruf=mailto:認証失敗レポート送信先

 

Office 365 で DMARC を設定する

レポート受け取りアドレスの作成

 まずは、レポートを受け取るアドレスを作ります。今回はお手軽に自分のアカウントに dmarc@~ というエイリアスを追加しました。

f:id:kazuakix:20170729174608p:plain
 

DNS の登録

 続いて、DNS の管理でカスタムレコードを追加します。

f:id:kazuakix:20170729174949p:plain

DNS の種類 TXT (テキスト)
TXT 名 _dmarc
TXT 値 v=DMARC1; p=none; pct=100; rua=dmarc@*****.***; ruf=dmarc@*****.***

 

動作テスト

 カスタムレコードを追加してから、冒頭と同じように Outlook.com にメールを送って Authentication-Results ヘッダを確認してみます。

Authentication-Results: spf=pass (sender IP is 104.47.92.42)
 smtp.mailfrom=*****.***; live.jp; dkim=pass (signature was verified)
 header.d=*****.***;live.jp; dmarc=pass action=none header.from=*****.***;

 無事に "dmarc=pass" と表示されるようになりましたね。

 あとは集計レポートを確認しながら、ポリシーを調整していこうと思います。