Exchange Online DKIM 設定の詳細手順
目次
Exchange Online(Microsoft 365)で独自ドメインからメールを送っているなら、DKIM 署名を有効にしておくことが、なりすまし対策と到達率の両面で欠かせません。ところが Exchange Online の DKIM は「DNS にレコードを 1 本足すだけ」では完結せず、2 本の CNAME を公開したうえで管理画面側のスイッチを入れる、という二段構えになっています。
この記事は、これから初めて Exchange Online の DKIM を設定する Web 担当者に向けた手順書です。すでに有効化の操作でつまずいている場合は、別記事のDKIM が適用されないときの対処を先に読んでください。
Exchange Online の DKIM 設定の全体像
まず流れをつかんでおきましょう。Exchange Online の DKIM 有効化は、大きく次の 3 ステップで進みます。
- CNAME を 2 本 DNS に公開する:
selector1._domainkeyとselector2._domainkeyの 2 本を、テナント固有の参照先に向けて公開します。 - 管理側で DKIM 署名を有効化する:Microsoft Defender ポータルのトグル、または PowerShell の
Set-DkimSigningConfigで署名をオンにします。 - 署名されているか確認する:実際に送信したメールのヘッダーで
DKIM-Signatureを確認します。
ポイントは、CNAME を公開しただけでは署名は始まらないこと、そして CNAME の参照先がテナントごとに異なることです。他社の例をそのまま貼っても動きません。なお SPF・DKIM・DMARC の全体像から整理したい場合は、Microsoft 365 のメール認証設定もあわせて参照してください。
ステップ 1:2 本の CNAME を DNS に公開する
Exchange Online の DKIM は、独自ドメインに 2 本の CNAME レコードを要求します。ホスト名は全テナント共通で次の 2 つです。
selector1._domainkeyselector2._domainkey
2 本必要なのは、後述する鍵のローテーションのためです。常にどちらか一方の selector が有効で、もう一方は次回のローテーションで切り替わるまで待機しています。片方しか公開しないと、有効化はできてもローテーションができなくなります。selector の仕組みをもっと知りたい場合はDKIM セレクタの仕組みを参照してください。
参照先(Points to)の値はテナント固有
CNAME の参照先は、お使いのテナントによって変わります。Microsoft の公式ドキュメントでも、記載されている値は「例示専用」と明記されています。たとえば初期ドメインが contoso.onmicrosoft.com の場合、参照先は次のような形になります(あくまで一例)。
ホスト名: selector1._domainkey
参照先 : selector1-contoso-com._domainkey.contoso.onmicrosoft.com
ホスト名: selector2._domainkey
参照先 : selector2-contoso-com._domainkey.contoso.onmicrosoft.com
近年は ...-v1.dkim.mail.microsoft で終わる新しい形式の参照先が割り当てられるテナントもあります。どちらの形式になるかはテナント次第なので、推測で値を作らず、必ず自分のテナントの正しい値を取得して、そのまま貼り付けてください。
正しい参照先は、次のいずれかで取得できます。
- Defender ポータル:
https://security.microsoft.com/authenticationの DKIM タブで対象ドメインを開くと、公開すべき CNAME の値が表示されます。 - PowerShell:Exchange Online PowerShell に接続して次のコマンドを実行します。
Get-DkimSigningConfig -Identity contoso.com | Format-List Name,Enabled,Status,Selector1CNAME,Selector2CNAME
出力された Selector1CNAME / Selector2CNAME の値を、そのまま 2 本の CNAME の参照先に設定します。
DNS 登録時の注意
ホスト名の欄には selector1._domainkey のように サブドメイン部分だけを入力します。多くの DNS 事業者は自動でドメインゾーンを補完するため、selector1._domainkey.contoso.com のようにフルで入れると ...contoso.com.contoso.com と二重になり、検出されません。
DNS の反映には、事業者や TTL の設定によって数分から最大 48 時間ほどかかります。すぐに認識されなくても、しばらく待ってから次のステップに進んでください。
ステップ 2:DKIM 署名を有効化する
CNAME を公開したら、署名そのものをオンにします。Defender ポータルと PowerShell のどちらでも構いません。
Defender ポータルで有効化する場合
- Defender ポータル(
https://security.microsoft.com)で メールとコラボレーション > ポリシーとルール > 脅威ポリシー > メール認証設定 を開きます。https://security.microsoft.com/authenticationから直接アクセスもできます。 - DKIM タブで対象ドメインの行を開き、トグルを「無効」から「有効」へ動かします。
- CNAME がまだ反映されていない段階では、ステータスが
CnameMissingのままトグルが戻ることがあります。その場合は CNAME の反映を待ってから、ドメインの詳細パネルで「このドメインのメッセージを DKIM 署名で署名する」トグルを有効にします。 - 有効化に成功すると、ステータスが
Valid、トグルが「有効」になります。
PowerShell で有効化する場合
Exchange Online PowerShell に接続し、次のコマンドを実行します。
Set-DkimSigningConfig -Identity contoso.com -Enabled $true
ステータスを一括で確認したいときは、次のコマンドで全ドメインの状態を見られます。
Get-DkimSigningConfig | Format-List Name,Enabled,Status,Selector1CNAME,Selector2CNAME
ステータスが Valid になっていれば有効化は完了です。NoDKIMKeys や CnameMissing のままなら、CNAME の値か反映状況を見直してください。
ステップ 3:署名されているか確認する/鍵のローテーション
設定変更の直後は反映に少し時間がかかるため、数分待ってから確認します。確認は、自分宛て(または DKIM を検証する外部の受信側)にテストメールを送り、受信したメールのヘッダーで DKIM-Signature 行を探すのが確実です。d= に自分のドメイン、s= に selector1-... のような selector が入っていれば、そのドメインで署名されています。
鍵のローテーションは Microsoft 側が管理
CNAME を公開する方式は、鍵の管理を Microsoft 365 側に委任する仕組みです。このため、独自ドメインの DKIM 鍵は Microsoft 側でローテーションできます。手動でローテーションしたい場合は、ポータルの「DKIM キーのローテーション」、または PowerShell の Rotate-DkimSigningConfig を使います。
Rotate-DkimSigningConfig -Identity contoso.com -KeySize 2048
ローテーションは即時には反映されず、新しい鍵で署名が始まるまで 4 日(96 時間)かかります。この間は既存の鍵で署名が続き、進行中は次のローテーションを実行できません。鍵長は 1024 ビットまたは 2048 ビットを選べます。なお、初期の *.onmicrosoft.com ドメインには自動ローテーションがない点も覚えておくとよいでしょう。
よくあるエラーと、つまずいたときの相談先
これから設定する段階でつまずきやすいのは、次の 3 点です。
- ステータスが
CnameMissingのまま:ホスト名にドメイン名まで含めてしまい、二重ゾーンになっているケースが多いです。ホスト名はselector1._domainkeyだけを入力します。 - CNAME ではなく TXT で登録してしまった:Microsoft 365 の DKIM は CNAME 委任が前提です。TXT で登録すると検出されません。TXT を削除して CNAME を作り直してください。
- 片方の selector しか公開していない:有効化はできても、鍵のローテーションができなくなります。
selector1とselector2の両方を必ず公開します。
上記でも解決しない、あるいは「有効化したのに署名されない」といった深いトラブルは、DKIM が適用されないときの対処に詳しくまとめています。
よくある質問
Exchange Online の DKIM は CNAME を何本公開しますか?
selector1._domainkey と selector2._domainkey の 2 本を公開します。2 本必要なのは鍵のローテーションのためで、片方しか公開しないと有効化はできてもローテーションができなくなります。
CNAME を公開すれば DKIM 署名は始まりますか?
始まりません。CNAME を公開したうえで、Microsoft Defender ポータルのトグルか PowerShell の Set-DkimSigningConfig で署名を有効化する必要があります。
CNAME の参照先の値はどこで取得しますか?
参照先はテナント固有で、推測で作ってはいけません。Defender ポータルの DKIM タブ、または PowerShell の Get-DkimSigningConfig が出力する Selector1CNAME / Selector2CNAME の値をそのまま使います。
まとめ:設定が正しいかを客観的にチェックする
Exchange Online の DKIM は「2 本の CNAME 公開 → 管理側で有効化 → ヘッダーで確認」の 3 ステップです。値はテナント固有なので、必ず自分のテナントの値を取得して使うのが、Web 担当者が踏むべき最大のポイントになります。
設定したつもりでも、CNAME の反映漏れや SPF・DMARC との組み合わせで、思わぬ抜けが残ることは珍しくありません。ドメイン番人の無料診断なら、SPF・DKIM・DMARC の設定状況をまとめて自動チェックし、どこに穴があるかを可視化します。設定後の最終確認として、ぜひご活用ください。