pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

O365のDKIM設定

まずDKIMポイント

メール送信者認証技術

認証はデジタル署名で実現。

署名範囲は、送信側指定ヘッダと本文
送信時にDKIM-Signatureヘッダに以下情報を付与して送信
・署名範囲(hタグ)
秘密鍵で署名したデータ(bタグ)
・公開鍵取得するためのセレクタ(sタグ)

受信側は受信メールのDKIM-Signatureに記載されたセレクタ情報からDNSクエリし公開鍵を取得。復号できれば認証成功。

SPFと異なり転送メールでも認証が可能。

同一ドメインで複数セレクタを定義できる為、複数システムでも並存可能

例) オンプレでのOpenDKIMでの署名付与とO365の署名付与を並行で動作可能。セレクタを分ければ良い。
公開鍵は変更するときは、別セレクタで新公開会議を定義し、旧公開鍵のDNSレコードも残す。
どこかのMTAのキューに残ってるメールがある可能性もある為。

送信側はFromドメインで署名を付与するとは限らない。受信側もFromドメインから公開鍵を取得するのでなく、あくまでDKIM-Signatureヘッダ内のセレクタ(sタグ)とドメイン(dタグ)で公開鍵を取得する。

例) 以下ケースもあり。
Fromヘッダのドメイン: hoge.com
DKIM-Signatureヘッダ情報: dタグがfuga.com

DKIM-ADSPレコードとは?

ADSPはAuthor Domain Signing Practicesの略
送信側がDNSレコードとして以下を定義
_adsp._domainkey.<ドメイン名> TXT 値
値は以下があり。
all→Fromドメインとdタグが同じであるべきを宣言
discardable→Fromドメインとdタグが同じであるべきを宣言。異なる場合、メール破棄推奨を宣言
unknown→どっちらもいいよ宣言
受信側は、メールのFromドメインの情報から、DKIM ADSPレコードを取得。※dタグでない!!!

O365のDKIM実装方法

DKIMレコードはO365側で生成する。CNAMEレコードだけカスタムドメインDNSゾーンに定義が必要。
例) hoge.comがカスタムドメインで、テナントの初期ドメインhoge.onmicrosoft.comの場合
以下DNSレコードの構成をする。
カスタムドメインDNS
selector1._domainkey.hoge.com. CNAME selector1-hoge-com._domainkey.hoge.onmicrosoft.com.
selector2._domainkey.hoge.com. CNAME selector2-hoge-com._domainkey.hoge.onmicrosoft.com.

MicrosoftDNS
selector1-hoge-com._domainkey.hoge.onmicrosoft.com. TXT "v=DKIM1; k=rsa; p=xxxxx....xxxxx;"
selector2-hoge-com._domainkey.hoge.onmicrosoft.com. TXT "v=DKIM1; k=rsa; p=xxxxx....xxxxx;"

またカスタムドメインDKIM有効化しない状態では、カスタムドメインのアカウントでメール送信すると
初期テナントドメインDKIM署名して送る動作。
これでもDKIM認証自体は成功する。
DKIM-ADSPでall、discardableの場合、Fromドメインと異なる為、不正な送信元とみなされる可能性あり。

★詳細は参考URLを見ること!!!!!★