最近、GoogleでもDKIMの認証が強化された情報がありますが、現時点では、SPF/DKIM/DMARC の登録が必須であるというわけではなく、登録していなくてもメールの送信は可能です。
SPF/DKIM/DMARCはメールの送信時になりすまし送信ではないことを証明する認証方式です。
なお、2023 年9 月下旬に [EX675941] でアドバイザリとして、Exchange Online から送信されている認証されていないメッセージや Bulk メッセージに対して Gmail などの他のサービス プロバイダーからの NDR 応答が増えたことを受けて、正しくメッセージが宛先に届くためのガイダンスを見直して、SPF / DKIM / DMARC を登録するよう発表されていました。
今後、SPF / DKIM / DMARCの認証を強化する受信側サーバーが増えてくると登録していない場合は、メールを送信した際にスパムと判定され、正常に受信できない可能性が高くなります。
なお、DKIM 署名をスタンプすることで問題が発生した事例は確認されていないので、登録しておいても特に支障はないと思います。
メール送信時に正常に相手先で受信するためにも登録しておくことをお勧めします。
以下にそれぞれの概要や登録方法についてご紹介したいと思います。
SPF 認証について
メールの送信元が送信者の意図したサーバーであることを証明し、送信元メールアドレスのなりすましを防ぐことを目的とした機能です。
DNS ホスティングプロバイダー (ドメイン レジストラー) にて、該当のドメインの TXT レコードに SPF の TXT レコードを登録することで設定が可能です。
TXTレコードに登録する値
v=spf1 include:spf.protection.outlook.com -all
Exchange Online での設定は不要であり、ドメインの TXT レコードに登録するのみで実装が可能です。
DKIM 機能の有効化手順
秘密鍵によって生成した署名情報を送信メールのヘッダーに記述し、メール受信時に DNS サーバー上に公開されている公開鍵によって署名を照合し、詐称送信されたメールであるか判定を行う機能です。
DKIM 認証のメリットとして、送信元 IP アドレスを利用した SPF 認証と比較し、メールの転送や別のサーバーを中継して送信した場合でも、影響を受けずに判定をおこなうことができます。
DKIM は送信するサーバーの署名を付与して送信する機能のため、有効化作業によるメールの送信自体に影響はありません。
DKIM 認証機能の利用には、独自ドメインを購入したドメインレジストラへの CNAME レコードの登録と、Exchange Online 側での DKIM 認証機能の有効化が必要です。
なお、メールの送受信をする際にユーザー側で必要な設定や操作はなく、送受信時の動作などにも影響はありません。
onmicrosoft.com ドメインの DKIM 機能は既定で有効ですが、独自ドメインは個別に有効化する必要があります。
Microsoft Defender (https://security.microsoft.com) の [ポリシーとルール] > [脅威ポリシー] > [メール認証の設定] > [dkim] にて、対象ドメインの [状態] が [このドメインの DKIM キーが保存されていません] と表示されている場合は、DKIM のポリシーが構成されていない状況となります。
また、[このドメインに DKIM 署名をしません] と表示されている場合は、DKIM キーが有効化されていない状況を表します。
1. CNAME レコードを確認するコマンドレット
初めに、テナントの DKIM の CNAME レコードを確認し、独自ドメインのレジストラーへ登録します。
レコード反映までには最大 72 時間かかる場合があります。
以下の記事を参考にExchange Online に接続してから実行してください。
<構文>
Get-DkimSigningconfig <ドメイン> | select selector1CNAME,selector2CNAME | fl
<実行例>
Get-DkimSigningconfig contoso.com | select selector1CNAME,selector2CNAME | fl
<出力例>
Selector1CNAME : selector1-contoso-com._domainkey.contoso.onmicrosoft.com
Selector2CNAME : selector2-contoso-com._domainkey.contoso.onmicrosoft.com
※ [contoso-com]、[contoso.onmicrosoft.com] の部分はドメイン名ごとに自動生成された文字列となり、本来ドメイン名には含まれない文字列が付与される場合もあります。
エラーが表示され情報が取得できない場合は DKIM キーが生成されていない状態となりますので、後述 4-1. の New-DkimSigningConfig を実施して DKIM キーを作成してからお試しください。
2. DNS に CNAME レコードを登録します。
Selector1CNAME
ホスト名 : selector1._domainkey
値 : selector1-contoso-com._domainkey.contoso.onmicrosoft.com
TTL : 3600
Selector2CNAME
ホスト名 : selector2._domainkey
値 : selector2-contoso-com._domainkey.contoso.onmicrosoft.com
TTL : 3600
上記の値を該当のドメインの DNS ホスティングプロバイダー (ドメイン レジストラー) に登録後、反映するまでは DKIM を有効にすることができませ。
3. DKIM の有効化 (GUI)
- 管理者権限を付与されたアカウントで Microsoft Defender (https://security.microsoft.com) にアクセスします。
- 左側のメニューより [ポリシーとルール]、中央メニューより [脅威ポリシー] > [メール認証の設定] > [DKIM] をクリックします。
- 有効化したい承認済みドメインを一覧からクリックします。
- [このドメインのメッセージに DKIM 署名を追加します] のトグルボタンを有効にします。
画面が変わらない場合は画面リロードなどで反映することがありますのでお試しください。
ここまでの手順で、対象ドメインの [状態] が [このドメインに DKIM 署名をします。] となれば完了です。
[このドメインの DKIM キーが保存されていません] または [このドメインに DKIM 署名をしません] と表示されている場合はコマンドレットでの CNAME レコードの生成、あるいは有効化が必要となるため、次項 4 のコマンドレットを実行ください。
4. DKIM の有効化 (Windows PowerShell コマンドレット)
Microsoft 365 Defender で対象ドメインの DKIM の 状態が [このドメインの DKIM キーが保存されていません] の場合は 4-1. を実施します。
状態が [このドメインに DKIM 署名をしません] の場合は 4-2. を実施してください。
※ Exchange Online に接続してから実行してください。
4-1. 対象ドメインの DKIM を構成します。
<構文>
New-DkimSigningConfig -DomainName "承認済みドメイン" -Enabled $true
<実行例>
New-DkimSigningConfig -DomainName "contoso.com" -Enabled $true
なお、レコード反映後に [警告: 構成は作成されますが、CNAME レコードが公開されていないため、有効にできません。CNAME レコードを公開したら、Set-DkimSigningConfig を使用してこのポリシーを有効にしてください。] のメッセージが表示された場合には、時間をおいてから下記のコマンドレットをお試しください。
4-2. : 対象ドメインに対して、DKIM を有効化します。
<構文>
Set-DkimSigningConfig -Identity "有効化する承認済みドメイン" -Enabled $true
<実行例>
Set-DkimSigningConfig -Identity "contoso.com" -Enabled $true
DMARC 機能の有効化手順
送信ドメイン認証技術である SPF と DKIM の認証結果を用いて、受信サーバーにてメールの送信者を認証を行い、メッセージの信頼性を確認する機能です。
受信サーバーにて SPF 認証と DKIM 認証の双方に失敗した際に、検疫 (quarantine) や拒否 (reject) など、どのような処理が推奨されるかを送信側がポリシーとして提示することができます。
ただし、上記ポリシーを指定した場合でも、受信サーバーが実際にどのような処理を選択するかは、受信サーバーの設定に依存します。
Exchange Online から送信するメールについては、ドメイン レジストラにて該当のドメインの TXT レコードに DMARC 認証用の TXT レコードを登録することで設定が可能です。
なお、DMARC 認証の有効化には、該当独自ドメインに対し事前に SPF レコードの登録と DKIM 認証の有効化が必要となります
ドメイン用の DMARC TXT レコードは、次に示す形式で作成します。
_dmarc.domain TTL IN TXT "v=DMARC1; pct=100; p=policy
各パラメータの意味
- domain : 保護対象にするドメインです。既定では、このレコードは、ドメインとすべてのサブドメインからのメールを保護します。たとえば、_dmarc.contoso.com を指定すると、DMARC は、このドメインとすべてのサブドメイン (housewares.contoso.com や plumbing.contoso.com など) からのメールを保護します。
- TTL : 常に 1 時間に相当する必要があります。TTL に使用される単位は、ドメインのレジストラーに応じて hours (1 時間)、minutes (60 分)、または seconds (3,600 秒) のいずれかになります。
- pct=100 は、このルールがメールの 100% に使用される必要があることを示します。
- policy : DMARC に失敗した場合に受信側サーバーが従う必要のあるポリシーを指定します。ポリシーは、なし (none)、検疫 (quarantine)、または拒否 (reject) に設定できます。
DMARC 認証用レコードの記載例
・ポリシーをなし (none) に設定する
_dmarc.contoso.com 3600 IN TXT "v=DMARC1; p=none"
・ポリシーを検疫 (quarantine) に設定する
_dmarc.contoso.com 3600 IN TXT "v=DMARC1; p=quarantine"
・ポリシーを拒否 (reject) に設定する
_dmarc.contoso.com 3600 IN TXT "v=DMARC1; p=reject"
なお、ポリシーを設定していた場合においても、配信されたメッセージの DMARC の処理が失敗した際の動作については、最終的には受信側のサーバーに依存します。
DKIMは「ディーキム」、DMARCは「ディーマーク」と読みます。
DKIMとDMARCについては以下の記事でご紹介しておりますので参考としてくださいね。