お名前ドットコムのMicrosoft365プランで独自ドメインのメールを送受信する。（その４：DKIM、DMARC設定）

# はじめに
前回までの手順で独自ドメインでのメール送受信ができるようになったので、`SPF`、`DKIM`、`DMARC`のメール認証に対応させてみようと思います。

- 【前】[お名前ドットコムのMicrosoft365プランで独自ドメインのメールを送受信する。（その３：Microsoft365のセットアップ）](https://qiita.com/sakai00kou/items/1813ae6eca8a7b329676)

# 各認証方法の違い
メール認証で使われる`SPF`、`DKIM`、`DMARC`の違いについて、簡単ですが、以下にまとめます。

## SPFとは
`Sender Policy Framework`の略で、送信元のIPアドレスが詐称されていないかを確認することで、正常なドメインから送信されているメールであることを確認する技術となります。

やり方としては、DNSサーバに予めSPF用のTXTレコードを追加しておくことで、送信元のドメインが意図した送信元IPアドレスから送信されたメールであると判断します。

今回は「[お名前ドットコムのMicrosoft365プランで独自ドメインのメールを送受信する。（その２：独自ドメイン追加）](https://qiita.com/sakai00kou/items/70859fec34a799f0b09d)」の「**DNSレコードの追加**」でSPF用のTXTレコード（`v=spf1 include:spf.protection.outlook.com -all`）を追加しているため、設定は不要です。

## DKIMとは
`Domain Keys Identified Mail`の略で、SSL通信等でも使われる電子署名の技術を使って送信元が詐称されていないかを確認する技術となります。

電子署名を検証するための公開鍵はDNSサーバで公開され、受信者はメールの情報からDNSサーバに問い合わせて検証を行うことで詐称されていないことを判断します。

今回の場合、公開鍵は**お名前ドットコムのDNSサーバ**ではなく、**Microsoft Exchange**で発行されるため少しややこしいですが、仕組みは同様です。

## DMARCとは
`Domain-based Message Authentication, Reporting, and Conformance`の略で、`SPF`と`DKIM`を利用して、詐称メールに対して、どのようなアクションを行うかをポリシー設定して、ポリシーに応じて詐称メールに対して隔離したり、破棄したりする技術となります。

`SPF`、`DKIM`両方を利用するため、どちらも有効にしておく必要がありますが、`DMARC`の設定自体は、`SPF`と同じようにDMARC用のTXTレコードを追加するだけです。

# DKIMの設定
`DKIM`の設定はMicrosoft365側でのDKIMキー作成＆有効化と、お名前ドットコムのDNSサーバへのレコード追加が必要となるため、それぞれ説明していきます。

## Microsoft365 DefenderでのDKIMの設定
基本的には以下のドキュメント通りに設定していきます。

- [DKIM を使用して、カスタム ドメインから送信される送信電子メールを検証する](https://docs.microsoft.com/ja-jp/microsoft-365/security/office-365-security/use-dkim-to-validate-outbound-email?view=o365-worldwide)

`DKIM`は今まで操作していた「**Microsoft365 管理センター**」ではなく、「**Microsoft365 Defender**」から設定を行っていきます。

「**Microsoft365 Defender**」は「**Microsoft365 管理センター**」の左ペインから「**管理センター**」の「**セキュリティ**」を選択することで表示されます。

「**Microsoft365 Defender**」の「**ポリシーとルール**」→「**脅威ポリシー**」→「**DKIM**」から独自ドメインの名前を選択すると、**DKIMキー**が作成されているかを確認できます。

![001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/aaea31a9-9c14-9a01-ad39-408bf83de535.jpeg)

現状は`DKIM`を有効にしていないので「**DKIMキーの作成**」を選択し、DNSサーバに登録するCNAMEレコードをコピーしておきます。

![002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/2a20a528-f855-f724-e798-f6b1ede9b98d.jpeg)

## お名前ドットコムでのDKIMの設定
先ほどコピーしたCNAMEレコードを「**お名前.com Navi**」から追加します。

以下画像では後ろの部分が見切れてしまっていますが、先ほどコピーした**Value**値を入力してください。

![003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/89ba6b8d-b856-5c7f-342c-3c4d6743fcef.jpeg)

## Microsoft365 DefenderでのDKIMの有効化
再度「**Microsoft365 Defender**」画面に戻り、`DKIM`を有効化します。

有効化後、以下のように表示されれば完了です。

![004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/83691d35-9ff8-1fe6-843f-454e7ce34edb.jpeg)

レコード反映まで少し時間がかかるため、もしエラーが表示された場合は少し待ってから再度有効化してみてください。

## DKIM有効化の検証
上記で設定は完了しましたが、実際に`DKIM`が使われているのかを確認していきます。

上記で紹介したドキュメントの「[次の手順: Microsoft 365 に SPF をセットアップした後](https://docs.microsoft.com/ja-jp/microsoft-365/security/office-365-security/use-dkim-to-validate-outbound-email?view=o365-worldwide#next-steps-after-you-set-up-dkim-for-microsoft-365)」にある「**テストを実行する:DKIM**」を選択すると、「**Microsoft365 管理センター**」のヘルプ項目に飛び、そこからDKIMのチェックが行えます。

![005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/19230fd6-779e-a9d8-ee64-db5af825e84d.jpeg)

診断結果が以下のように表示されれば`DKIM`が有効になっています。

![006.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/21e525f8-7477-b16e-ddb3-aeb7477a82ac.jpeg)

# DMARCの設定
`DMARC`の設定は`SPF`と`DKIM`の設定が完了していれば、お名前ドットコムのDNSサーバにDMARC用のTXTレコードを追加するだけになります。

以下で設定方法を説明していきます。

## お名前ドットコムでのDMARCの設定
`DMARC`の設定はレコード追加だけとなりますが、追加するTXTレコード内に利用するポリシーや、集計レポート、認証失敗レポートの送信先等、それぞれの環境によって設定する必要があり、一筋縄ではいきません。

`DMARC`も**Microsoft**の以下ドキュメントに方法が記載されているため、そちらも参考にしてください。

- [DMARC を使用してメールを検証する](https://docs.microsoft.com/ja-jp/microsoft-365/security/office-365-security/use-dmarc-to-validate-email?view=o365-worldwide#best-practices-for-implementing-dmarc-in-microsoft-365)

TXTレコードに追加するパラメータは以下サイトのようなパラメータがあるとのこと。

- [DMARC 詳細仕様-2](https://www.naritai.jp/guidance_record.html)

色々なサイトを参考にしつつ、今回は以下のように設定してみました。

|ホスト名|TYPE|TTL|VALUE|優先|状態|
|:--|:--|:--|:--|:--|:--|
|_dmarc|TXT|3600|v=DMARC1; p=none; pct=100; rua=mailto:*[集計レポート送信先]*; ruf=mailto:*[認証失敗レポート送信先]*|-|有効|

ポリシーはいきなり強くしすぎても、どれだけのメールが失われるか明確に分からないとのことなので、`none`に。

集計レポート、認証失敗レポートはどのようなレポートが送られてくるのか気になるので追加しました。

どのように設定するかは要件によって異なるかと思うので、各自調整してみてください。

## DMARCの検証
以下のサイトで`DMARC`に対応しているか調べられるようです。

- [DMARC Record Checker](https://dmarcian.com/dmarc-inspector/)

ドメイン名を入力して「**Inspect the domain**」を実行後、以下のような画面が出れば`DMARC`に対応できています。

![007.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569912/1b00b02f-f9c5-1147-3327-27c30a1c695d.jpeg)

# おわりに
今回`DKIM`、`DMARC`の設定を行ってみましたが、手探り状態で設定したためこれであっているのか不安というのが正直なところです。（特に`DMARC`）

そのうちしっかり勉強しよう・・・