こんにちは、管理人です。
DKIM(DomainKeys Identified Mail)については前回簡単に説明しましたが、今回は Microsoft365 の独自ドメイン(カスタムドメイン)のDKIM設定について書いてみます。
設定については実施する流れを理解してしまえばそれほど複雑な作業ではないのですが、ここってどうなってるの?という気づきというか感じて調べてみた結果などを書いてみようと思います。
まず、Microsoft 365 環境での設定ですが、通常は以下のような流れとなるようです。(2024年5月時点での情報となります)
1.管理画面で独自ドメイン(カスタムドメイン)を選択しDKIMキーを作成する
2.CNAMEレコードがDNSに設定されていない旨のメッセージと設定値が表示される
3.DNSにCNAME(Selector1、Selector2)を設定する
4.管理画面に戻りDKIMを有効化し完了
ですが、環境によってはちょっと違った流れとなるようなので、そのあたりを確認しつつ進めていきます。
【設定前の状態確認】
まずは設定前の状態を確認します。
Microsoft 365 管理センター → セキュリティ → メールとコラボレーション → ポリシーとルール → 脅威ポリシー → メールの認証の設定 → DKIMタブを選択します。
独自ドメイン(カスタムドメイン)を選択すると画像のように「無効」となっており「キーの作成」ではなく「キーのローテーション」となっておりました。

Microsoft365の導入時期や環境によってい違ってくるのでしょうか???
管理画面から得られる情報が少ないので、PowerShellで Exchange Online に接続し状況を確認してみます。
PowerShellの接続方法は下記ご参照ください。
https://learn.microsoft.com/ja-jp/powershell/exchange/connect-to-exchange-online-powershell?view=exchange-ps
DKIM設定状況は以下のコマンドで確認できます。あわせて、Selector1、Selector2の設定値も確認できます。
Get-DkimSigningConfig | Format-List Name,Enabled,Status,Selector1CNAME,Selector2CNAME
実行したところ無効化された状態で、DNSも未設定であることが確認できます。

【DNS設定】
ということで、DNSにCNAMEレコードを追加します。
Microsoft 365では、ホスト名「selector1._domainkey」「selector2._domainkey」となります。
例としてそれぞれのドメイン名が下記の場合
初期ドメイン:abcd.onmicrosoft.com
独自ドメイン:abcd.com
設定値は以下のようになります。
ホスト名:selector1._domainkey
値:selector1-abcd-com._domainkey.abcd.onmicrosoft.com
ホスト名:selector2._domainkey
値:selector2-abcd-com._domainkey.abcd.onmicrosoft.com
DNS設定後、伝播に時間がかかるので少し待ちます。
状況については下記コマンドで確認できます。
nslookup -type=txt selector1._domainkey.ドメイン名 8.8.8.8

以下のようなサイトで確認するのもありだと思います。
https://mxtoolbox.com/supertool
ここで気になった点その1です。
selector1は正しく表示されるのですが、selector2はエラーとなってしまいます。
なぜだろう?と思いMicrosoftのページを確認するとキーのローテーションをするまでは非アクティブとあります。
サイトより抜粋
2 番目のセレクターは非アクティブです。 これは、今後 DKIM キーをローテーションした後にのみアクティブ化され、元のセレクターが非アクティブ化された後にのみ使用されます。
https://learn.microsoft.com/ja-jp/defender-office-365/email-authentication-dkim-configure?view=o365-worldwide
初期状態では無効なのでエラーとなるようです。一度DKIMキーをローテーションすると有効化されるということのようです。
ひとまずこのまま進めて後ほどローテーションしてみます。
【DKIM有効化し動作確認】
Selector1の有効化は確認できたので、管理画面に戻りDKIMを有効化します。

少し時間をおいてGmailアカウントにメールを送信して確認してみます。
Gmailでは受信したメールの「メッセージのソースを表示」を選択することでヘッダー情報を確認できます。
SPF、DKIM、DMARKなどの状況も以下のように簡単に確認することができます。
設定前

設定後

設定前は初期ドメインのonmicrosoft.com(第三者署名)となっていますが、設定後は独自ドメインのco.jp(作成者署名)となっており署名が変更されたことが確認できます。
PowerShellで設定後の状態を確認します。
Get-DkimSigningConfig | Format-List Name,Enabled,Status,Selector1CNAME,Selector2CNAME

以上で独自ドメインのDKIMの設定は完了となります。
が、ここで気になった点その2です。
独自ドメインのDKIMを有効化するとそちらの署名が使用され、ヘッダー情報でも切り替わったことが確認できましたが、管理画面では「onmicrosoft.com(既定の署名ドメイン)」と表示されています。
ヘッダー情報

既定の署名ドメイン

動作には問題ないのですが、既定の署名ドメインを「変更できるのか? 変更する必要があるのか?」が気になります。管理画面からは変更できそうな感じはありません。
調べてみたのですが、そのような情報も見当たらないためサポートへ問い合わせてみました。
回答は「既定の署名ドメインは初期ドメイン (***.onmicrosoft.com) から変更することはできません。」とのことでした。そのままでOKということですね。
【DKIMキーのローテーション】
先のSelector2についてローテーションすることで動作するのか?を確認してみます。
上記ヘッダー情報で確認できるとおりデフォルトではSelector1が使用されています。
キーのローテーションは管理画面から設定可能ですが、今回はビット長を2048ビットに変更してみますのでPowerShellで変更します。
キーローテーションとサイズ変更は下記コマンドを実行します。-KeySize コマンドは省略可能で、指定しなければデフォルトの1024ビットとなります。
Rotate-DkimSigningConfig -Identity ドメイン名 -KeySize 2048
ローテーションは即時反映されず、4日(96時間)後に反映されます。それまでは既存のキーが使用されます。
以下のコマンドで状態を確認することができます。
Get-DkimSigningConfig | Format-List Name,Enabled,Status,Selector1CNAME,Selector1KeySize,Selector2CNAME,Selector2KeySize,KeyCreationTime,RotateOnDate,SelectorBeforeRotateOnDate,SelectorAfterRotateOnDate
以下の画像は4日(96時間)経過後のローテーション完了後のものです。

ローテーション完了後にGmailアカウントに送信しヘッダーを確認するとSelector2が使用されていることが確認できました。

再度ローテーションするとSelector1に戻るということですね。
DKIMキーは定期的にローテーションすることが推奨されていますので、タイミングを決めて実施していきたいですね。
【まとめ】
ということで、気になった点などをまとめると。
・Microsoft 365 テナントによってはDKIMキーは作成済みで無効化された状態のこともある。(導入時期による?)
・DKIM有効化してもSelector2は無効化された状態でキーのローテーションを実行すると有効化される。
・キーのローテーションは即時反映されず、4日(96時間)後に反映され自動で入れ替わる。
・既定の署名ドメインは初期ドメイン (***.onmicrosoft.com) から変更することはできない。
・DKIMキーは定期的にローテーションすることを推奨。
といった感じとなりました。
以上、Microsoft 365環境でのDKIMの設定とキーのローテーションについてでした。
最後までお付き合いいただき、ありがとうございました。
GFCのホームページはこちら!
GFCへのお問い合わせはこちら!

2 thoughts on “Microsoft 365 にDKIMを設定してみる”