# DKIMとは？メール認証標準をわかりやすく解説

URL: https://notificationharbor.com/ja/journal/dkim-to-wa
Type: blog
Locale: ja
Published: 2026-09-08
Updated: 2026-09-09

---

> DKIMはすべての送信メールに暗号RSA署名を追加します。受信MTAはメッセージの配信先を決定する前に、DNSの公開鍵でその署名を検証します。

DKIMとは（DomainKeys Identified Mail）、メール認証のための暗号プロトコルです。DKIMとは何かを実務的に説明すると、メールサーバーが送信するすべての送信メッセージにRSA署名を付与するシステムです。受信側のMTAはDNSから公開鍵を取得し、署名を検証して、結果を `dkim=pass` または `dkim=fail` として報告します。この結果はドメインの評価モデルに反映され、DMARCアライメントが維持されるかどうかを決定します。有効な署名がなければ、受信側のMTAはメッセージがあなたのインフラから来たという暗号的な確認を持ちません。

## DKIMは署名プロトコルであり、フィルターではない

この名称はよくある誤解を招きます。DKIMはメールをブロックしません。メッセージを隔離したり、独自にポリシーを適用したりすることもありません。DKIMが行うのは、各送信メッセージに検証可能な主張のスタンプを押すことです。このメッセージは `d=` フィールドのドメインによって、セレクター `s=` に対応する秘密鍵を使用して署名されました。

受信側のMTAはその主張を取得し、`<セレクター>._domainkey.<ドメイン>` へのDNSクエリを構築し、公開鍵を含むTXTレコードを取得して、暗号検証を実行します。検証に成功すると、認証結果ヘッダーに `dkim=pass` が表示されます。失敗すると、`dkim=fail` または `dkim=temperror` が表示されます。

いずれの結果もそれ自体では拒否を引き起こしません。このシグナルは受信サーバーの評価モデルに反映され、そして重要なこととして、DMARC評価にも反映されます。DKIMの役割は検証可能な結果を生成することであり、それに基づいて行動することではありません。

## DKIMが署名するものと署名が対象とするもの

DKIMは二つのものに署名します：選択されたメッセージヘッダーとメッセージ本文です。署名アルゴリズムは両方をハッシュし、その結果を `DKIM-Signature` ヘッダーフィールドに格納します。

ヘッダーリストは署名内の `h=` タグによって制御されます。典型的なプロダクション設定では `from:subject:date:message-id:content-type` が含まれます。DMARCアライメントに関連するヘッダーは `from` ヘッダーです。本文ハッシュは、`simple` または `relaxed` の正規化によって正規化されたメッセージ本文全体をカバーします。

`relaxed` 正規化は、ほとんどのプロダクションスタックが使用するものです。ハッシュ前に空白を正規化するため、署名がリレーMTAによる小規模な再フォーマットを乗り越えることができます。`simple` はより厳格で、末尾の空白が一文字変わるだけで署名が壊れます。適切に設定されたほぼすべてのESPの `DKIM-Signature` フィールドには `c=relaxed/relaxed` が表示されます。

DKIMが署名しないもの：SMTPエンベロープ送信者、`Received` などのルーティングヘッダー、および `h=` リスト以外のヘッダー。これは意図的な設計です。エンベロープに署名するとフォワーディングシナリオが壊れてしまい、それがSPFに対するDKIMの優位性の根拠です。

![転送中のDKIM署名メールを表す南京錠で保護された2つのデジタル封筒](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/notificationharbor/2026-09/95ba5d-img-2.webp)

## セレクター：ラベルとして扱われているアクセス制御メカニズム

セレクターは、ほとんどのチームが圧力下でキーのローテーションを余儀なくされるまで過小評価するDKIMの部分です。

DKIM-Signatureの `s=` フィールドは、DNS内の特定の公開鍵を指します。ルックアップ形式は `<セレクター>._domainkey.<あなたのドメイン.com>` です。セレクターが `mail2026` でドメインが `example.com` の場合、リゾルバーは `mail2026._domainkey.example.com` のTXTレコードを検索します。

一つのドメインは複数のアクティブなセレクターを同時に持つことができます。各送信サービス、各ESP、各内部MTAはそれぞれ独自のセレクターを使用すべきです。これにより三つの具体的な運用上の能力が得られます：

- 
他の送信者に影響を与えずにサービスごとに独立したキーローテーション。

- 
認証ログでの追跡可能な帰属：セレクターは特定のメッセージでどの署名キーが使用されたかを示します。

- 
クリーンなオフボーディング：セレクターのDNSレコードを削除すると、そのESPはあなたのドメインとして署名できなくなります。

トレースで観察されること：すべての送信サービスに共有セレクターを設定したチームは、他のすべてを中断させずに一つの送信者のアクセスを取り消すことができません。セレクターは装飾的なものではありません。アクセス制御メカニズムです。

![DKIMセレクター設定のDNS TXTレコードを表示するターミナル画面](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/notificationharbor/2026-09/02b314-img-3.webp)

## DKIMとDMARCアライメント：エンフォースメント層の仕組み

DKIMの通過は、DMARCアライメントと呼ばれる特定のタイプのDMARC通過の前提条件です。

DMARCは二つのアライメント条件のうち少なくとも一つを必要とします：SPFアライメントまたはDKIMアライメント。DKIMアライメントとは、`From:` ヘッダーのドメインがDKIM署名の `d=` 値と一致し、署名が検証されることを意味します。両方の条件が満たされると、DMARCはメッセージを認証済みとみなします。

これがDKIMがより耐久性のある認証シグナルである理由です。SPFアライメントはフォワーディングで壊れます：メッセージが転送されると、SMTPエンベロープ送信者が変わり、SPF評価は新しい送信IPに対して失敗します。DKIMアライメントはフォワーディングを乗り越えます。なぜなら、署名と `From:` ヘッダーはメッセージ本文と共に移動し、転送中にメッセージ本文が変更されない限り、リレーMTAによって書き換えられることがないからです。

DMARC ポリシーが `p=reject` のドメインでは、SPFとDKIMの両方のアライメントに失敗したメッセージは受信MTAによって拒否されます。これがあなたのドメインからの偽装メールが大規模にインボックスに届くのを阻止するメカニズムです。DKIMはここでの最後の防衛線ではありません。しかし、フォワーディングが経路にある場合に持ちこたえる防衛線です。

2024年以降、Google、Yahoo、MicrosoftはMXに1日5,000件以上のメッセージを送信する大量送信者にDKIMを要求しています。未署名のドメインからのメッセージはデフォルトでスパムにルーティングされるか、拒否されます。

これはマーケティング機能ではありません。インフラの制約です。

## キー長とローテーション：2026年の実践的な意思決定

ほとんどのDKIM実装はRSA-SHA256を使用しています。核心的な問題はキー長です。

1024ビットのRSAキーはレガシー設定にまだ登場します。NISTは2015年にほとんどのユースケースで1024ビットRSAを廃止しました。2048ビットキーは大幅に強力なマージンを提供し、すべての主要なMTAと受信プロバイダーでサポートされています。今日新しいキーを生成する場合は2048ビットを使用してください。

一部のチームはアクティブな署名キーを2048ビットに移行しましたが、誰も在庫を監査しなかったため、古い1024ビットセレクターをDNSに公開したままにしています。システムの動作を変える三つのシグナル：古いセレクターに `k=rsa` と1024ビットキーが表示されている場合、現在の署名インフラがすでに移行していても、そのセレクターは脆弱性です。有効だが廃止されたセレクターは悪用可能です。

キーローテーションスケジュール：ほとんどのインフラチームは年に1回ローテーションし、より機密性の高いドメインには四半期に1回ローテーションするチームもあります。順序が重要です：

- 
新しいキーペアを生成する。

- 
DNSの新しいセレクター名の下に新しい公開鍵を公開する。

- 
TTLの伝播を待つ。通常、低いTTLのレコードでは24〜48時間かかります。

- 
MTA設定の署名キーを新しいセレクターに切り替える。

- 
メールテストツールを通じて、または送信テストメッセージの認証結果ヘッダーを検査することで、送信メッセージのDKIMパスを確認する。

- 
新しいキーがライブで正しく署名していることを確認した後、古いDNSレコードを削除する。

順序に従えばローテーションは中断なしに行えます：最初にDNS、次に署名の切り替え、最後に古いレコードの削除。ステップ4と6を逆にすると `dkim=fail` ウィンドウが発生します。

## DKIM設定後に追跡すべき運用シグナル

DKIMは一度きりの設定タスクではありません。以下のシグナルは何かが変化したか、壊れたことを示しています。

**受信ヘッダーに `dkim=temperror`。** 一時的な失敗は通常、受信側でのDNSルックアップの問題、またはキーローテーション中のTTLの不一致を示します。キーローテーション直後に送信メッセージでこれが表示された場合は、キー自体の設定ミスと結論付ける前に完全な伝播を待ってください。

**送信したメッセージに `dkim=fail`。** 中間リレーによる本文の変更が最も一般的な原因です。配信経路にフォワーディングホップ、メーリングリストプロセッサ、またはフッター挿入リレーがあるかどうかを確認してください。失敗が単一のフローで一貫している場合は、ホップごとにリレーチェーンをマッピングしてください。

**`DKIM-Signature` ヘッダーが完全に欠如。** MTAの署名デーモンが実行されていないか、署名キーのパスが間違っているか、MTA設定でドメインセレクターのマッピングが誤って設定されています。これは影響を受けるメッセージフローに対するDKIMの完全な停止です。

**セレクターTXTレコードがDNSにない。** DKIMセレクターレコードを保持せずにDNSゾーンが編集または移行されました。外部リゾルバーから `dig TXT <セレクター>._domainkey.<ドメイン>` で確認してください。

マルチリージョン送信設定では、ノード間でDKIM結果が一貫していない場合は、異なるノードが異なるセレクター設定を使用していることが原因であることが多いです。ローテーションを展開する前に、すべての送信ノードで署名キー設定が同期されていることを確認してください。

## DKIMが保護しないもの

DKIMはスパムフィルターではありません。送信者は新しいドメインを登録し、有効なDKIMを設定して、完全に認証されたスパムを送信することができます。署名はクリーンに検証されます。認証は起源を確認しますが、意図やコンテンツの品質を確認するものではありません。

DKIMは表示名スプーフィングも対処しません。表示名スプーフィングでは、`From:` ヘッダーに「給与チーム」などの信頼できる名前が表示され、攻撃者が制御するドメインと組み合わされます。暗号検証はドメインで動作し、MUAでの視覚的なプレゼンテーションでは動作しません。MUAレベルのフィッシングのほとんどは、正確なドメインスプーフィングではなく、表示名の欺瞞に依存しています。

DKIMが保護するもの：攻撃者があなたの秘密鍵を持たずにあなたのドメインとして送信しようとする正確なドメインスプーフィング。DKIMアライメントを強制する `p=reject` DMARCポリシーと組み合わせると、DMARCを適用している受信プロバイダーで偽装メッセージのクラスがインボックスに届くのを防ぎます。

実用的な注意：DKIMだけでは不十分です。保護モデルには受信MTAでのDMARCポリシーの適用が必要です。DKIMはDMARCを意味のあるものにする認証レイヤーです。SPFはもう一つの認証レイヤーで、エンベロープ送信者の検証を処理します。三つすべてが協力して機能します。いずれか一つが欠けていると、エンフォースメントチェーンにギャップが残ります。

DKIMとSPFをすでに設定していてもDMARCレコードをまだ公開していない場合、署名は存在しますが、アクティブなエンフォースメントポリシーはありません。監視モード（`rua` レポーティングを持つ `p=none`）は合理的な最初のステップです：`p=quarantine` または `p=reject` にコミットする前に、送信ドメイン全体の認証合格率を示す集約レポートを受け取ります。

## FAQ

### DKIMとは何ですか？どのように機能しますか？

DKIM（DomainKeys Identified Mail）はメール認証のための暗号プロトコルです。送信サーバーはRSA秘密鍵で各送信メッセージに署名し、署名をDKIM-Signatureヘッダーに付加します。受信MTAはセレクターサブドメイン下の対応する公開鍵のDNSをクエリし、署名を検証して、dkim=passまたはdkim=failを報告します。この結果はインボックス評価スコアリングとDMARCアライメント評価に反映されます。

### DKIMは何から保護しますか？

DKIMは正確なドメインスプーフィングから保護します：あなたのプライベート署名キーにアクセスせずにあなたのドメインから送信していると主張する攻撃者です。p=reject DMARCポリシーとDKIMアライメントと組み合わせると、その偽装メッセージのクラスがインボックスに届くのを防ぎます。表示名スプーフィング、正当に認証されたドメインからのスパム、または攻撃者が独自の有効なドメインを制御するコンテンツベースのフィッシングからは保護しません。

### DKIMセレクターとは何ですか？なぜ重要ですか？

DKIMセレクターはDKIM-Signatureヘッダー（s=フィールド）のラベルで、受信MTAがDNSでどの公開鍵を検索すべきかを示します。DNSクエリ形式はセレクター._domainkey.あなたのドメイン.comです。単一のドメインに複数のセレクターが共存でき、それぞれが異なる公開鍵を指します。これにより送信サービスごとの独立したキーローテーションとクリーンな失効が可能になります：セレクターのDNSレコードを削除すると、その送信者はあなたのドメインとして署名できなくなります。

### DKIMキーはどのくらいの頻度でローテーションする必要がありますか？

ほとんどのプロダクションチームはDKIMキーを年に1回ローテーションします。安全なシーケンスは：DNSの新しいセレクターの下に新しい公開鍵を公開し、TTL伝播を待ち（24〜48時間）、MTA上の署名キーを新しいセレクターに切り替え、送信テストメッセージのdkim=passを確認し、古いDNSレコードを削除することです。新しいキーが確認される前に古いレコードを削除するとdkim=failウィンドウが発生します。

### DKIMはメールフォワーディングを乗り越えますか？

はい、SPFとは異なります。メッセージが転送されると、SMTPエンベロープ送信者が変わり、SPFアライメントは新しい送信IPに対して失敗します。DKIMアライメントはフォワーディングを乗り越えます。なぜなら、署名はメッセージヘッダーと本文と共に移動し、転送中に本文が変更されない限り、リレーMTAによって書き換えられないからです。これによりDKIMは転送メールのDMARCポリシー適用においてより信頼性の高い認証シグナルとなります。

### 2026年に使用すべきDKIMキー長は？

2048ビットのRSAキーを使用してください。NISTは2015年にほとんどのユースケースで1024ビットRSAを廃止しており、1024ビットキーは現在の計算コストで計算可能なリスクをもたらします。すべての主要なMTAと受信プロバイダーは2048ビットキーをサポートしています。DNSにまだレガシーの1024ビットセレクターが公開されている場合は監査してください：有効だが廃止されたセレクターは、現在の署名インフラがより長いキーに移行している場合でも、セキュリティの脆弱性です。

### DKIM、SPF、DMARCの違いは何ですか？

SPFは、送信IPがそのドメインのDNSに許可されたものとしてリストされているかどうかをチェックすることで、SMTPエンベロープ送信者ドメインを認証します。DKIMはヘッダーと本文の暗号署名を通じてメッセージ自体を認証します。DMARCはSPFとDKIMアライメント結果を使用してドメイン所有者のポリシーを適用します：none、quarantine、またはrejectです。SPFはフォワーディングで失敗します；DKIMは通常乗り越えます。DMARCはそのポリシーを適用する前に少なくとも1つのアライメントが通過することを要求します。