Exchange Online DKIM が反映されない原因
目次
この記事でわかること
- Exchange Online で DKIM が反映されない・署名が付かない 5 つの典型原因
- Defender ポータルでの正しい有効化手順(公開鍵作成 → DNS → 有効化)
- PowerShell
Get-DkimSigningConfigで状態を確認する方法
「DKIM を有効化しようとしたら『CNAME レコードが見つかりません』と出る」「有効化はできたのにヘッダに DKIM-Signature が付かない」——Microsoft 365 / Exchange Online で DKIM(ディーキム、DomainKeys Identified Mail)の設定中につまずくケースは多く、原因はほぼ 5 つに収れんします。Microsoft 365 全体の認証設定の流れを先に俯瞰したい方はMicrosoft 365 のメール認証設定をご覧ください。DKIM をこれから一から設定する手順はExchange Online DKIM 設定の詳細手順にまとめています。本記事は「有効化したつもりが効いていない」状態を解消するための診断ガイドです。
正しい有効化の順序を再確認する
Exchange Online の DKIM は 「公開鍵の作成 → DNS への CNAME 公開 → ポータルで有効化」 の順で進めます。一段でも飛ばすと「公開鍵が見つかりません」「CNAME が一致しません」というエラーで止まります。
具体的には Microsoft Defender ポータルの「Email authentication settings → DKIM」で対象ドメインを選び、提示された 2 本の CNAME 値を DNS に登録してから「Sign messages for this domain with DKIM signatures」を有効化する流れです。
原因 1:CNAME を 1 本しか登録していない
最も多い失敗です。Exchange Online は selector1._domainkey と selector2._domainkey の 2 本 の CNAME を同時に要求します。鍵ローテーションのために 2 セレクタを使い分けているためで、片方が欠けていると有効化トライ時に「CNAME records do not exist」で弾かれます。
DNS 管理画面で次の 2 本があるかを確認してください。
selector1._domainkey.example.com CNAME selector1-example-com._domainkey.contoso.onmicrosoft.com
selector2._domainkey.example.com CNAME selector2-example-com._domainkey.contoso.onmicrosoft.com
1 本だけ登録した状態で有効化を押すとエラーになります。もう 1 本を追加してください。
原因 2:CNAME の値で initialDomain がずれている
CNAME の 値(右辺) は、テナント作成時の 初期ドメイン(<テナント名>.onmicrosoft.com) を含みます。たとえばテナント contoso.onmicrosoft.com で example.com の DKIM を有効化する場合、値は selector1-example-com._domainkey.contoso.onmicrosoft.com です。ここを example.com のまま書くと Defender 側の検証で必ず落ちます。Defender ポータルの「Copy」ボタンから貼り付けるのが最も安全です。
原因 3:公開鍵を作る前に有効化を押している
ドメインを Microsoft 365 に追加した直後は、DKIM 用の公開鍵がまだ生成されていません。この状態で「キーを有効化」を押すと「No DKIM keys saved for this domain」エラーになります。先に「Create DKIM keys」で公開鍵ペアを生成し、表示された 2 本の CNAME 値を DNS に登録してから Enable に切り替えてください。
PowerShell で行う場合は New-DkimSigningConfig -DomainName example.com -KeySize 2048 -Enabled $false を先に実行し、CNAME 反映後に Set-DkimSigningConfig -Identity example.com -Enabled $true を実行します。鍵長は新規なら 2048 bit を選びます。
原因 4:DNS 伝播前に有効化を試みている
CNAME を登録した直後は、DNS のキャッシュが切れるまで Microsoft 側からは新しい値が見えません。キャッシュが切れる前に「有効化」を押すと当然 fail します。
目安として 30 分〜数時間 待ち、dig CNAME selector1._domainkey.example.com +short が selector1-example-com._domainkey.contoso.onmicrosoft.com を返すことを確認してから有効化してください。Windows なら Resolve-DnsName でも可能です。クエリの詳細はDKIM の確認コマンドで扱っています。TTL が長いゾーンでは、前日のうちに CNAME を仕込んでおく運用が安全です。
原因 5:Connector や送信元が署名対象から外れている
DKIM 自体は有効なのに、特定の経路から送ったメールだけ署名が付かないこともあります。代表例は、複合機やマーケティングツール(HubSpot、Marketo 等)から example.com 名義で送っているが SMTP は外部経由、というケースです。
DKIM 署名が付くのは Exchange Online を出口として通るメールだけです。外部 SaaS から直接送る場合は、その SaaS 側で DKIM を別セレクタとして設定する必要があります。ヘッダに DKIM-Signature: ... d=example.com; s=selector1; が乗っているか、テスト送信して Authentication-Results を確認するのが最終チェックです。
確認用 PowerShell コマンド
設定が反映されているかは Exchange Online PowerShell から一発で確認できます。
Connect-ExchangeOnline
Get-DkimSigningConfig -Identity example.com | Format-List
注目すべきプロパティは次の 3 つです。
Enabled:TrueになっていることStatus:Validであること(CnameMissingの場合は CNAME 不備)Selector1CNAME/Selector2CNAME: ポータルが要求している値と一致していること
Status: CnameMissing のままなら原因 1〜2 のいずれか、Enabled: False のままなら原因 3 です。
DKIM のセレクタという概念そのものから整理したい場合はDKIM セレクタとは何かもあわせてご覧ください。Microsoft 公式の手順は Microsoft Learn: Use DKIM to validate outbound email で確認できます。
自社の状況を確認してみませんか
設定状況がわからない方は、無料のドメイン診断で現状をチェックできます。 DMARC・SPF・DKIM・SSL の状態が数十秒でレポートされます。 判断に迷う場合はお問い合わせからご相談ください。専門家がわかりやすくサポートいたします。