DKIM を使用して、カスタム ドメインから送信される送信電子メールを検証する

ヒント

Microsoft 365 Defender for Office 365 プラン 2 の機能を無料で試すことができることをご存知でしたか? Microsoft Defender ポータル試用版ハブで 90 日間のDefender for Office 365試用版を使用します。 こちらからサインアップできるユーザーと試用版の使用条件の詳細について参照してください。

この記事では、Microsoft 365 で DomainKeys Identified Mail (DKIM) を使用して、カスタム ドメインから送信されたメッセージを送信先のメール システムが信頼するようにする方法を段階的に説明します。

この記事の内容:

注:

Microsoft 365 では、初期ドメインの 'onmicrosoft.com' に対応する DKIM が自動的にセットアップされます。 つまり、初期ドメイン名に対応する DKIM のセットアップに関して、ユーザーは何もする必要がないということです (例: litware.onmicrosoft.com)。 ドメインの詳細については、「ドメインに関する FAQ」を参照してください。

DKIM は、あたかもユーザー本人のドメインから送信されたかのようにメッセージを送信する攻撃の防止に役立つ 3 つの認証方法 (SPF、DKIM、DMARC) の 1 つです。

DKIM を使用すると、送信電子メールのメッセージ ヘッダー内にデジタル署名を追加できるようになります。 DKIM の構成時に、関連付けるドメインを承認するか、または暗号化認証を使用して電子メール メッセージにその名前を署名します。 ドメインからメールを受け取るメール システムでは、このデジタル署名を使用して、受信メールが正当かどうかを確認できます。

基本的には、個人キーを使用して、ドメインでの送信メールのヘッダーを暗号化します。 公開キーはドメインの DNS レコードに発行され、受信サーバはそのキーを使用することで署名を解読できます。 DKIM 認証を行うと、メールが、ドメインをスプーフィングしている人物ではなく、実際にユーザー本人のドメインから送信されているかどうかを受信サーバーが確認できるようになります。

ヒント

カスタム ドメインの DKIM に関しても、何も操作しなくて構いません。 カスタム ドメインに対応する DKIM をセットアップしていないと、Microsoft 365 が秘密キーと公開キーのペアを作成して、DKIM 署名を有効にし、カスタム ドメインに対応する Microsoft 365 の既定ポリシーを構成します。

Microsoft-365 の組み込み DKIM 構成は、ほとんどのお客様にとって十分な範囲です。 ただし、次の状況では、カスタム ドメインの DKIM を手動で構成する必要があります。

  • Microsoft 365 に複数のカスタム ドメインがある場合
  • DMARC も設定する場合 (推奨)
  • 秘密キーを制御する場合
  • CNAME レコードをカスタマイズする場合
  • たとえば、サード パーティ製の大容量メーラーを使用する場合、サードパーティのドメインから発信される電子メールに DKIM キーを設定することがあります。

悪意のあるスプーフィング防止の点で DKIM のしくみが SPF 単独よりも優れているといえる理由

SPF ではメッセージ エンベロープに情報を追加しますが、DKIM は実際にメッセージ ヘッダー内の署名を暗号化します。 メッセージを転送すると、そのメッセージのエンベロープの一部が転送サーバーによって取り除かれる可能性があります。 デジタル署名は、電子メール ヘッダーの一部であるため、電子メール メッセージと共に残ります。したがって、DKIM はメッセージが転送された場合にも機能します。次の例で説明します。

SPF チェックが失敗したときに DKIM 認証を通過した転送されたメッセージを示す図。

この例で、ドメインに対して SPF TXT レコードしか発行しなかったとしたら、受信者のメール サーバーによってメールがスパムとしてマークされ、誤検知の結果になる可能性があります。 このシナリオで DKIM を追加すると、 誤検知 スパム報告が減少します。 DKIM は、IP アドレスだけではなく、公開キー暗号化を使って認証を行うので、SPF よりもはるかに強力な認証形態といえます。 展開では DMARC だけでなく、SPF と DKIM の両方を使うことをお勧めします。

ヒント

DKIM では秘密キーを使用して、暗号化された署名をメッセージ ヘッダーに挿入します。 署名ドメイン、つまり送信ドメインは、d= フィールドの値としてヘッダーに挿入されます。 確認ドメイン、つまり受信者のドメインは、d= フィールドを使用して、DNS から公開キーを検索し、メッセージを認証します。 メッセージが確認されれば、DKIM チェックは合格です。

ポータルから DKIM を作成、有効化、無効化Microsoft Defender手順

テナントの承認済みドメインはすべて、Microsoft Defender ポータルの [DKIM] ページに表示されます。 表示されない場合は、ドメイン ページから承認済みドメインを追加します。 ドメインが追加されたら、以下に示す手順に従って DKIM を構成します。

手順 1: [DKIM] ページで、構成するドメインを選択します。

ドメインが選択されたMicrosoft Defender ポータルの [DKIM] ページ

手順 2: [ DKIM キーの作成] をクリックします。 CNAME レコードを追加する必要があるというポップアップ ウィンドウが表示されます。

[DKIM キーの作成] ボタンを使用したドメイン詳細ポップアップ

手順 3: ポップアップ ウィンドウに表示される CNAME をコピーします

コピーする 2 つの CNAME レコードを含む [CNAME の公開] ポップアップ ウィンドウ

手順 4: コピーした CNAME レコードを DNS サービス プロバイダーに公開します。

DNS プロバイダーの Web サイトで、有効にする DKIM の CNAME レコードを追加します。 フィールドが次の値に設定されていることを確認します。

Record Type: CNAME (Alias)
> Host: Paste the values you copy from DKIM page.
Points to address: Copy the value from DKIM page.
TTL: 3600 (or your provider default)

手順 5: DKIM ページに戻って DKIM を有効にします。

DKIM を有効にするトグル

CNAME レコードが存在しないというエラーが表示された場合は、次が原因である可能性があります。

  1. DNS サーバーとの同期は、数秒から数時間かかる場合があります。問題が解決しない場合は、手順をもう一度繰り返します。
  2. 追加のスペースやタブなど、コピーと貼り付けのエラーがないか確認します。

DKIM を無効にする場合は、元に戻して無効モードに切り替えます

手動で 1024 ビット キーを 2048 ビット DKIM 暗号化キーにアップグレードする

注:

Microsoft 365 では、初期ドメインの onmicrosoft.com に対応する DKIM が自動的に設定されます。 初期ドメイン名 (litware.onmicrosoft.comなど) に対し DKIM を使用するための設定は必要ありません。 ドメインの詳細については、「ドメインに関する FAQ」を参照してください。

DKIM キーでは 1024 ビットと 2048 ビットの両方がサポートされています。次の手順では、Exchange Online PowerShell で 1024 ビット キーを 2048 ビットにアップグレードする方法について説明します。 次の手順は、2 つの使用例を対象としています。目的の構成に最適なものを選択してください。

  • DKIM の構成が済んでいる場合は、次のコマンドを実行してビットネスを回転します。

    Rotate-DkimSigningConfig -KeySize 2048 -Identity <DkimSigningConfigIdParameter>
    

    または

  • DKIM の新規実装の場合は、次のコマンドを実行します。

    New-DkimSigningConfig -DomainName <Domain for which config is to be created> -KeySize 2048 -Enabled $true
    

次のコマンドを実行して、Exchange Online PowerShell に接続したまま、構成を確認します。

Get-DkimSigningConfig -Identity <Domain for which the configuration was set> | Format-List

ヒント

この新しい 2048 ビット キーは RotateOnDate の時点で有効になります。それまでの間は、1024 ビット キーの電子メールが送信されます。 4 日後に、2048 ビット キーで再度テストしてください (つまり、2 番目のセレクターへの転換が有効になってからテストします)。

2 番目のセレクターに転換する場合は、4 日後に 2048 ビットが使用されていることを確認して、前述の該当するコマンドレットを使用して 2 番目のセレクター キーを手動で転換します。

構文とパラメーターの詳細については、次の記事を参照してください: 「Rotate-DkimSigningConfig」、「New-DkimSigningConfig」、および「Get-DkimSigningConfig」。

PowerShell を使用して DKIM を手動で設定する手順

DKIM を構成するには、次の手順を完了します。

DNS でカスタム ドメインに対して 2 つの CNAME レコードを発行する

DNS の DKIM 署名を追加する各ドメインに対して、2 つの CNAME レコードを発行する必要があります。

注:

完全な記事を読んでいない場合は、PowerShell の接続情報を時間を節約できない可能性があります:PowerShell に接続Exchange Online

Exchange Online PowerShell で次のコマンドを実行して、セレクター レコードを作成します。

New-DkimSigningConfig -DomainName <domain> -Enabled $false

Get-DkimSigningConfig -Identity <domain> | Format-List Selector1CNAME, Selector2CNAME

Microsoft 365 の初期ドメインに加えてプロビジョニングされたカスタム ドメインがある場合には、追加の各ドメインに対して 2 つの CNAME レコードを発行する必要があります。 したがって、2 つのドメインがある場合は、2 つの追加 CNAME レコードなどを発行する必要があります。

CNAME レコードには次の形式を使用します。

重要

GCC Highのお客様の場合は、customDomainIdentifier の計算方法が異なります。 customDomainIdentifier を計算するために initialDomain の MX レコードを参照する代わりに、カスタマイズされたドマインから直接計算します。 たとえば、カスタマイズされたドメインが "contoso.com" の場合、customDomainIdentifier は "contoso-com" となり、ピリオドはすべてダッシュに置き換えられます。 したがって、initialDomain が指し示す MX レコードに関係なく、CNAME レコードで使用する customDomainIdentifier は、常に上記の方法を使用して計算します。

Host name:            selector1._domainkey
Points to address or value:    selector1-<customDomainIdentifier>._domainkey.<initialDomain>
TTL:                3600

Host name:            selector2._domainkey
Points to address or value:    selector2-<customDomainIdentifier>._domainkey.<initialDomain>
TTL:                3600

ここで、

  • Microsoft 365 では、セレクターは常に "selector1" または "selector2" になります。

  • customDomainIdentifier は、mail.protection.outlook.com の前に表示されるカスタム ドメインのカスタマイズされた MX レコードの customDomainIdentifier と同じです。 たとえば、次に示すドメイン contoso.com の MX レコードでは、customDomainIdentifier は contoso-com です:

    contoso.com. 3600 IN MX 5 contoso-com.mail.protection.outlook.com

  • initialDomain は、Microsoft 365 へのサインアップ時に使用したドメインです。 初期ドメインの末尾は常に onmicrosoft.com です。 初期ドメインを決定する方法の詳細については、「 ドメインに関する FAQ」を参照してください。

たとえば、初期ドメイン (cohovineyardandwinery.onmicrosoft.com) と 2 つのカスタム ドメイン (cohovineyard.com と cohowinery.com) がある場合は、追加のそれぞれのドメインに対して 2 つの CNAME レコードをセットアップして、合計で 4 つの CNAME レコードをセットアップする必要があります。

Host name:            selector1._domainkey
Points to address or value:    selector1-cohovineyard-com._domainkey.cohovineyardandwinery.onmicrosoft.com
TTL:                3600

Host name:            selector2._domainkey
Points to address or value:    selector2-cohovineyard-com._domainkey.cohovineyardandwinery.onmicrosoft.com
TTL:                3600

Host name:            selector1._domainkey
Points to address or value:    selector1-cohowinery-com._domainkey.cohovineyardandwinery.onmicrosoft.com
TTL:                3600

Host name:            selector2._domainkey
Points to address or value:    selector2-cohowinery-com._domainkey.cohovineyardandwinery.onmicrosoft.com
TTL:                3600

注:

DNS 内の両方のセレクターの CNAME レコードを作成することが重要ですが、作成時に公開キーを使用して発行される (アクティブな) セレクターは 1 つだけです。 この動作は想定されており、カスタム ドメインの DKIM 署名には影響しません。 2 つ目のセレクターは、アクティブになると、今後キーがローテーションされた後に公開キーを使用して発行されます。

PowerShell を使用してカスタム ドメインの DKIM 署名を有効にする手順

DNS で CNAME レコードを発行したら、ドメイン>をドメイン名に置き換え<、PowerShell Exchange Onlineで次のコマンドを実行して、Microsoft 365 経由で DKIM 署名を有効にします。

Set-DkimSigningConfig -Identity <Domain> -Enabled $true

構文とパラメーターの詳細については、「 Set-DkimSigningConfig」を参照してください。

エラー: このドメインに対して DKIM キーが保存されない

DKIM を初めて構成し、"このドメインに DKIM キーを保存しません" というエラーが表示される場合は、Exchange Online PowerShell を使用して DKIM 署名を有効にする必要があります。

このドメイン の DKIM キーは保存されません。

  1. Exchange Online PowerShell に接続します

  2. 次の構文を使用してください。

    Set-DkimSigningConfig -Identity <Domain> -Enabled $true
    

    <ドメイン> は、DKIM 署名を有効にするカスタム ドメインの名前です。

    この例では、ドメイン contoso.com の DKIM 署名を有効にします。

    Set-DkimSigningConfig -Identity contoso.com -Enabled $true
    

構文とパラメーターの詳細については、「 Set-DkimSigningConfig」を参照してください。

DKIM 署名が Microsoft 365 に対して適切に構成されていることを確認するには

数分待ってから、これらの手順に従って、DKIM が適切に構成されていることを確認してください。 待っている間に、ドメインに関する DKIM 情報がネットワーク全体に広まります。

  • Microsoft 365 の DKIM が有効になっているドメイン内のアカウントから、Outlook.com や Hotmail.com などの別の電子メール アカウントにメッセージを送信します。

  • テスト目的には .aol.com アカウントは使用しないでください。 AOL は SPF チェックに合格すると、DKIM チェックをスキップする場合があります。 この場合、テストは成り立ちません。

  • メッセージを開き、ヘッダーを確認します。 メッセージのヘッダーを表示する方法は、メッセージング クライアントによって異なります。 Outlook でメッセージ ヘッダーを表示する手順については、「Outlook で インターネット メッセージ ヘッダーを表示する」を参照してください。

    DKIM 署名されたメッセージには、CNAME エントリの発行時に定義したホスト名とドメインが含まれます。 メッセージは、次の例のようになります。

      From: Example User <example@contoso.com>
      DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
          s=selector1; d=contoso.com; t=1429912795;
          h=From:To:Message-ID:Subject:MIME-Version:Content-Type;
          bh=<body hash>;
          b=<signed field>;
    
  • 認証結果のヘッダーを確認します。 各受信側のサービスでは受信メールのスタンプに若干異なる形式が使用されますが、結果には DKIM=passDKIM=OK などが含まれている必要があります。

重要

DKIM 署名は、次のいずれかの条件で 省略されます

  • 送信者と受信者のメール アドレスが同じドメイン内にあります。
  • 送信者と受信者のメール アドレスは、同じorganizationによって制御される異なるドメインにあります。

どちらの場合も、ヘッダーは次のようになります。

  Authentication-Results: dkim=none (message not signed) header.d=none;
    dmarc=none action=none header.from=<sender_domain>;

DKIM の複数のドメインを構成するには

後で別のカスタム ドメインを追加して、その新しいドメインに対して DKIM を有効にする場合は、各ドメインに対してこの記事の手順を完了する必要があります。 具体的には、「DKIM を手動でセットアップする方法」のすべての手順を完了します。

カスタム ドメインの DKIM 署名ポリシーを無効にする

署名ポリシーを無効にしても、DKIM は完全には無効になりません。 既定のポリシーが有効な状態のままである場合は、一定の期間が過ぎると、Microsoft 365 が自動的にドメインに対して既定のポリシーを適用します。 DKIM を完全に無効にする場合は、カスタム ドメインと既定のドメインの両方で DKIM を無効にする必要があります。 詳細については「DKIM と Microsoft 365 の既定の動作」をご覧ください。

Windows PowerShell を使用して DKIM 署名ポリシーを無効にするには

  1. Exchange Online PowerShell に接続します

  2. DKIM 署名を無効にする各ドメインに対して次のいずれかのコマンドを実行します。

    $p = Get-DkimSigningConfig -Identity <Domain>
    $p[0] | Set-DkimSigningConfig -Enabled $false
    

    次に例を示します。

    $p = Get-DkimSigningConfig -Identity contoso.com
    $p[0] | Set-DkimSigningConfig -Enabled $false
    

    または

    Set-DkimSigningConfig -Identity $p[<number>].Identity -Enabled $false
    

    ここで、 number はポリシーのインデックスです。 以下に例を示します。

    Set-DkimSigningConfig -Identity $p[0].Identity -Enabled $false
    

DKIM と Microsoft 365 の既定の動作

DKIM を有効にしない場合、Microsoft 365は Microsoft Online Email Routing Address (MOERA)/initial ドメイン用の 2048 ビット DKIM 公開キーと、Microsoft がデータセンターに内部的に格納する関連する秘密キーを自動的に作成します。 既定では、Microsoft 365 は、所定のポリシーを持たないドメインに対して既定の署名構成を使用します。 これは、ユーザーが DKIM をセットアップしなければ、Microsoft 365 が、その既定のポリシーと、自らが作成するキーを使用して、そのドメインに対して DKIM を有効にすることを意味しています。

また、カスタム ドメインで DKIM 署名を有効にしてから無効にした場合にも、一定の期間が過ぎると、Microsoft 365 が自動的にカスタム ドメインに対して MOERA/初期ドメイン ポリシーを適用します。

次の例では、fabrikam.com の DKIM が、ドメインの管理者ではなく、Microsoft 365 によって有効にされていることを想定しています。 これは、必須の CNAME が DNS に存在しないことを意味します。 このドメインからのメールの DKIM 署名は、次のようなものになります。

From: Second Example <second.example@fabrikam.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
    s=selector1-fabrikam-com; d=contoso.onmicrosoft.com; t=1429912795;
    h=From:To:Message-ID:Subject:MIME-Version:Content-Type;
    bh=<body hash>;
    b=<signed field>;

この例のホスト名とドメインには、fabrikam.com の DKIM 署名がドメイン管理者によって有効にされた場合に CNAME が指し示す値が含まれています。 最終的には、Microsoft 365 から送信されるすべてのメッセージは DKIM 署名されたメッセージになります。 自分で DKIM を有効にしている場合、ドメインは From: アドレス内のドメインと同じになります (この場合は fabrikam.com)。 自分で DKIM を有効にしない場合は、ドメインは同じにならず、代わりに組織の初期ドメインが使用されます。 初期ドメインを決定する方法の詳細については、「 ドメインに関する FAQ」を参照してください。

サードパーティのサービスがカスタム ドメインに代わって電子メールを送信つまり偽装できるように DKIM を設定する

一部の一括電子メール サービス プロバイダー、または Software-as-a-Service プロバイダーでは、サービスから送信される電子メールに DKIM キーを設定できます。 この場合、必要な DNS レコードを設定するために自分とサードパーティの間で調整が必要です。 一部のサードパーティのサーバーは、異なるセレクターを持つ独自の CNAME レコードを持つことができます。 2 つの組織がまったく同じ方法で行動することはありません。 それどころか、プロセスは完全に組織に依存します。

contoso.com および bulkemailprovider.com 用に適切に構成された DKIM を示すメッセージの例は、次のようになります。

Return-Path: <communication@bulkemailprovider.com>
 From: <sender@contoso.com>
 DKIM-Signature: s=s1024; d=contoso.com
 Subject: Here is a message from Bulk Email Provider's infrastructure, but with a DKIM signature authorized by contoso.com

この例では、この結果を達成するために、次を実行しました。

  1. 一括電子メール プロバイダーは、Contosoc に DKIM の公開キーを付与しました。

  2. Contoso は、その DNS レコードに DKIM キーを発行しました。

  3. 電子メールを送信する場合、一括電子メール プロバイダーは対応する秘密キーを使用してキーに署名しました。 これにより、一括電子メール プロバイダーはメッセージ ヘッダーに DKIM 署名を添付します。

  4. 電子メール システムの受信は、メッセージの From: (5322.From) アドレス内のドメインに対して DKIM-Signature d=<domain> 値を認証することで、DKIM チェックを実行します。 この例では、次の値が一致します。

    sender@contoso.com

    d=contoso.com

メールを送信しないドメインを特定する

組織は、ドメインのDKIM レコードでv=DKIM1; p=を指定して、そのドメインがメールを送信しないことを明示的に述べる必要があります。 これにより、そのドメインには有効な公開鍵が存在しないことをメール受信サーバーに知らせ、そのドメインからのメールを拒否するように、要求します。 ワイルドカード DKIM を使用して、ドメインとサブドメインごとにこの操作を実行する必要があります。

たとえば、DKIM レコードは次のようになります。

*._domainkey.SubDomainThatShouldntSendMail.contoso.com. TXT "v=DKIM1; p="

次の手順: Microsoft 365 に SPF をセットアップした後

DKIM はスプーフィングを防止するように設計されていますが、SPF と DMARC を併用すると DKIM はより有効に機能します。

DKIM をセットアップした後、まだ SPF を構成していなければ、SPF を構成する必要があります。 SPF の概要と構成を迅速に行う方法については、「 スプーフィングを防ぐために Microsoft 365 で SPF を設定する」を参照してください。 Microsoft 365 における SPF の使用方法についての詳細や、ハイブリッド展開などの非標準の展開のトラブルシューティングについては、「How Microsoft 365 uses Sender Policy Framework (SPF) to prevent spoofing」をご確認ください。

次は、「DMARC を使用してメールを検証する」を参照してください。 スパム対策メッセージ ヘッダーには、Microsoft 365 が DKIM チェックに使用する構文とヘッダー フィールドが含まれています。

このテストで検証するのは、DKIM 署名構成が正しく構成されていること、適切な DNS エントリが公開されていることです。

注:

この機能には、Microsoft 365 管理者アカウントが必要です。 この機能は、Microsoft 365 Government、21Vianet が運用している Microsoft 365、または Microsoft 365 Germany では使用できません。

詳細情報

PowerShell を介したキー ローテーション: Rotate-DkimSigningConfig

DMARC を使用してメールを検証する

信頼できる ARC シーラーを構成する