Microsoft 365 のSPF・DKIM設定手順
目次
この記事でわかること
- Microsoft 365 でも、SPFとDKIMの設定はDNS側で自社が責任を持つ必要があること
- SPFレコード追加と、DKIMの2本のCNAME登録・有効化までの具体的な手順
- 設定後に
spf=pass/dkim=passを確認する方法と、つまずきやすい3つのポイント
「Microsoft 365 を使っていれば、メールの認証はマイクロソフトに任せていれば大丈夫」と思って導入したまま、実は自社のDNSにSPFもDKIMも何も置かれていなかった、という相談を月に何件かいただきます。Microsoft 365(旧 Office 365)の場合、Exchange Online のサーバーはマイクロソフトが用意してくれますが、SPFとDKIMの公開情報を載せるDNSは自社の管理範囲です。ここを通さないと、Gmail や他社の受信側で「認証されていない送信者」と判定され、迷惑メール扱いや配信拒否になります。
本記事では、SPFレコードの追加、DKIM の2つのCNAME登録、Defender管理ポータルでの有効化、そして動作確認までを順に整理します。SPF・DKIM・DMARCの違いから押さえたい方は、先にSPF・DKIM・DMARCの違いをわかりやすく解説をご一読ください。
なぜ Microsoft 365 にも自前のSPF・DKIM設定が必要なのか
Microsoft 365 を使うと、メールの送受信そのものは Exchange Online が処理します。受信者から見た送信元IPはマイクロソフトのサーバーです。それでも、認証のための情報は次の2点を自社のDNSに公開する必要があります。
- SPF: 「
spf.protection.outlook.comから届くメールは正規」と自社ドメインのTXTレコードで宣言する - DKIM: マイクロソフトが署名する公開鍵情報を、
selector1._domainkeyとselector2._domainkeyのCNAMEレコードとして自社のDNSに置く
DKIMだけCNAMEで参照する形になっているのは、マイクロソフトが鍵のローテーション(差し替え)を自動で行うためです。CNAMEを置いておけば、参照先の公開鍵が更新されてもDNSの設定変更は不要になります。Google Workspace のようにTXTレコードで公開鍵そのものを置く方式(Google WorkspaceのDKIM設定手順を解説 参照)とは少し設計思想が違うので、ここで混乱する管理者の方が多い印象です。
なお、SPFとDKIMが揃っていないと、Gmail の送信者ガイドライン(2024年2月から強化された送信者要件)を満たせず、5.7.26 系のエラーで配信拒否になることがあります。詳しくはGmailエラー5.7.26の対処法で解説しています。
設定手順|SPFとDKIMをDNSで揃える
ここから具体的な手順に入ります。SPFはTXTを1本追加、DKIMはCNAMEを2本追加した上で管理ポータルで有効化、という順序で進めます。
SPFレコードを追加する
Microsoft 365 のSPFは、レジストラ(または DNS ホスティングサービス)の管理画面でTXTレコードを1本追加するだけで終わります。Exchange Online だけを送信メール経路として使う場合、追加するレコードは次の1行です。
タイプ: TXT
ホスト名: @ (ルートドメイン。書き方は管理画面に合わせて)
値: v=spf1 include:spf.protection.outlook.com -all
include:spf.protection.outlook.com の部分が「Exchange Online のサーバーは正規」を意味し、末尾の -all(ハードフェイル)で「ここに書かれていない送信元はすべて拒否」を宣言します。マイクロソフトの公式ドキュメントも -all を推奨しています(DKIM・DMARCを併用することが前提)。
レンタルサーバーや別のメール配信サービスを併用している場合、SPFレコードは1つのドメインにつき1本までというRFC 7208 の制約があるため、既存のレコードに include: を追記する形で1本にまとめます。
v=spf1 include:spf.protection.outlook.com include:_spf.example-mail-service.com -all
include: の数は最終的に10個までという DNS lookup 上限があり、超えるとSPF評価がPermerrorになります。詳しくはSPFレコードの設定方法と書き方で扱っています。
DKIMはCNAMEを2本DNSに置いて有効化する
DKIMは「CNAMEを2本DNSに置く」「Defender管理ポータルで有効化を押す」の2段階で完了します。Google Workspace と違って、自社で公開鍵を生成・コピーする必要はありません。
CNAMEの値を取得する
正確なCNAMEターゲットの文字列はテナントごとに異なります。必ず管理ポータルかPowerShellから取得した値をそのまま使ってください。Webの解説記事の例をコピーすると、テナントIDや初期ドメインが一致せず動かないことがほとんどです。
Defender管理ポータルから取得する場合:
- ブラウザで
https://security.microsoft.com/authenticationにアクセス - 左メニューが見当たらない場合は「メール&コラボレーション → ポリシー&ルール → 脅威ポリシー → メール認証設定」と進む
- 「DKIM」タブで対象のカスタムドメインを選択
- 表示されたフライアウトに「次のCNAMEレコードを発行する」と2本のホスト名・ターゲットが表示されるので控える
PowerShell(Exchange Online Management)から取得する場合:
Connect-ExchangeOnline
Get-DkimSigningConfig -Identity example.co.jp | Format-List Name,Enabled,Status,Selector1CNAME,Selector2CNAME
Selector1CNAME と Selector2CNAME のフィールドに、登録すべきターゲットがそのまま表示されます。
DNS にCNAMEを2本登録する
レジストラの DNS 管理画面で次の2本を追加します。値はテナントごとに異なるため、ここでは形式の例を示します。
| 項目 | レコード1 | レコード2 |
|---|---|---|
| タイプ | CNAME | CNAME |
| ホスト名 | selector1._domainkey |
selector2._domainkey |
| 値(ターゲット) | selector1-example-co-jp._domainkey.<initial>.onmicrosoft.com 形式、または新方式の ...n-v1.dkim.mail.microsoft 形式 |
selector2-example-co-jp._domainkey.<initial>.onmicrosoft.com 形式、または新方式の ...n-v1.dkim.mail.microsoft 形式 |
| TTL | 既定値(3600 など) | 既定値 |
ホスト名のうち example-co-jp の部分は、自社ドメインのドット (.) をハイフン (-) に置き換えた形に自動で変換された値が入ります。マイクロソフトはテナント新設のタイミングで2025年5月以降に新しいCNAME形式(dkim.mail.microsoft を末尾に持つ形式)に切り替えており、古いテナントは onmicrosoft.com を末尾に持つ形式が引き続き有効です。いずれの形式でも、管理ポータルが指示してきた値をそのまま貼るのが安全です。
セレクタが2本ある理由は、マイクロソフトがDKIM鍵のローテーションを自動化するためです。鍵を入れ替えるとき、新しい鍵を片方のセレクタで先行公開し、署名の参照先を切り替える、という動作をします。CNAMEで参照しておけば、自社のDNSに手を加えなくても鍵の差し替えに追従できます。
「DKIM署名を有効化」する
CNAMEがDNSに反映されたら、もう一度Defender管理ポータルのDKIM画面に戻ります。対象ドメインを選び、「このドメインに対してメッセージにDKIM署名を行う」のトグルを「有効」に切り替えます。マイクロソフト公式ドキュメントは、CNAMEを検出するまで数分以上かかることがあるとしており、有効化ボタンを押してすぐにエラーが出ても、しばらく待ってから再試行すれば通る場合がほとんどです。
PowerShellで有効化する場合は次のコマンドです。
Set-DkimSigningConfig -Identity example.co.jp -Enabled $true
ここで「CNAMEレコードが見つかりません」と出る場合は、DNSの反映が間に合っていないか、ホスト名の指定(特に末尾にドメイン名を二重に書いていないか)を疑ってください。
動作確認とよくあるつまずき
設定が反映されているかは、必ず複数の経路で確認します。
経路1|dig でレコードが返るか
ターミナルから次のコマンドを実行します。
dig TXT example.co.jp +short
dig CNAME selector1._domainkey.example.co.jp +short
dig CNAME selector2._domainkey.example.co.jp +short
SPFのTXT値と、DKIMの2つのCNAMEターゲットが返ってくれば、DNS側は正しく公開できています。何も返ってこない、または別のレコードしか返ってこない場合は、ホスト名の指定ミスかDNS反映待ちが疑われます。
経路2|Gmail の Authentication-Results ヘッダー
自社ドメインからGmail宛にテストメールを送り、受信メールの「メッセージのソースを表示」から Authentication-Results 行を確認します。次のように両方が pass になっていれば成功です。
Authentication-Results: mx.google.com;
spf=pass smtp.mailfrom=example.co.jp;
dkim=pass header.d=example.co.jp header.s=selector1
header.s=selector1 または selector2 の値が、DKIMの2つのセレクタのどちらかと一致していることを確認してください。詳しい読み解き方はDKIM設定の確認方法に整理しています。
経路3|PowerShell でステータスを確認
Get-DkimSigningConfig -Identity example.co.jp | Format-List Name,Enabled,Status
Enabled : True と Status : Valid が並んでいれば、Microsoft 365 側はDKIM署名を実際に付け始めている状態です。Status : CnameMissing などのエラーが出た場合は、DNS側のCNAMEを dig で再確認します。
つまずきポイント1|CNAMEの末尾にドメイン名が二重になる
レジストラによっては、ホスト名にFQDNを書く画面と、サブドメイン部分だけを書く画面があります。後者の画面で selector1._domainkey.example.co.jp のようにフルで書くと、結果として selector1._domainkey.example.co.jp.example.co.jp になり、dig で何も返らなくなります。既存のSPFレコードと同じ書式に揃えるのが確実です。
つまずきポイント2|DKIM有効化を押し忘れる
CNAMEをDNSに置いただけでは、Microsoft 365 側はまだDKIM署名を行いません。Defender管理ポータルの有効化トグル、またはPowerShellの Set-DkimSigningConfig -Enabled $true を必ず実行してください。これを忘れると、DNS上は完璧でもメールに署名が付かず、dkim=none のままになります。
つまずきポイント3|複数ドメインを送信元にしている
Microsoft 365 に複数ドメインを登録して送信元として使っている場合、DKIMはドメインごとに個別の有効化が必要です。プライマリドメインだけ設定しても、子会社・別ブランド用のドメインから送ったメールには署名が付きません。送信に使っているすべてのドメインで Get-DkimSigningConfig の Enabled : True を確認してください。
DMARC追加で完成形にする
SPFとDKIMが揃ったら、最後にDMARCを必ず追加します。Microsoft 365 にはDMARCを管理する管理ポータルもPowerShellコマンドもありません。レジストラのDNS管理画面で、_dmarc.<ドメイン> の TXTレコードを直接追加します。
タイプ: TXT
ホスト名: _dmarc
値: v=DMARC1; p=none; rua=mailto:postmaster@example.co.jp; ruf=mailto:postmaster@example.co.jp
最初は必ず p=none(観察モード)から始め、レポートで自社の送信状況を確認してから quarantine → reject と段階的に強化します。DMARCの段階強化の進め方はDMARC設定方法を徹底解説に詳しくまとめています。レポートの読み方はDMARCレポートの見方と集計で解説しています。
DMARCを追加することで、SPFとDKIMの「アラインメント(送信ドメインとの一致)」が初めて受信側に評価されるようになり、なりすましメールを実効的に止められる状態になります。
まずは自社のメール認証状況を確認しましょう
要点を整理します。
- Microsoft 365 のSPFは
v=spf1 include:spf.protection.outlook.com -allを1本、自社のDNSにTXTで追加する - DKIMはCNAMEを2本(
selector1._domainkey/selector2._domainkey)DNSに置き、Defender管理ポータルかPowerShellで有効化する - CNAMEターゲットの正確な文字列はテナントごとに違うため、必ず管理ポータルかPowerShellの出力をそのまま使う
- 設定後は
dig/ GmailのAuthentication-Resultsヘッダー / PowerShell の3経路で確認し、SPFとDKIMの両方がpassになることを見届ける - SPF・DKIMが揃ったら DMARC を
p=noneから段階的に強化する
無料のドメイン診断ツールに自社ドメインを入力すると、SPF・DKIM・DMARCの各レコードがDNSから見えているか、設定が抜けていないかをまとめて確認できます。「PowerShellの実行環境がない」「DNSの管理画面が手元にない」といった場合は、お問い合わせフォームから状況をお知らせください。設定内容を整理し、必要な手順を専門家がわかりやすくご案内します。