
## この記事でわかること

- DKIM リプレイ攻撃の仕組み（署名は有効、宛先だけ変える）
- なぜ DKIM の設計上この攻撃が防げないのか
- 送信側ドメインが取れる現実的な対策（`x=` 期限 / 配信制御 / 鍵ローテ）
- Google が 2023 年以降強化している「リプレイ送信元の評価ペナルティ」

## DKIM リプレイ攻撃とは

DKIM（RFC 6376）は **メール本文と一部ヘッダ** に署名しますが、**エンベロープの RCPT TO（宛先）** には署名しません。この性質を悪用し、攻撃者が:

1. 正規ドメインから 1 通だけ「無害なメール」を取得（無料アカウントで自分宛に送る等）
2. その署名済みメールを **数万〜数百万の宛先にそのまま再送（リプレイ）**
3. 受信側では「正規ドメインの正規署名」と判定され DMARC pass

![DKIM リプレイ攻撃の流れ](/blog/dkim-replay-attack/replay-flow.svg)

正規ドメインの「貸し出し」状態になり、配信レピュテーションが汚染されます。

## なぜ防ぎにくいか

DKIM の署名は「内容が改ざんされていないこと」を保証するだけで、「**この宛先に送ることが許可されているか**」は保証しません。RFC の設計上、署名済みメールはどの宛先に送っても署名は有効です。

## 送信側ドメインの対策

![送信側の 4 つの対策](/blog/dkim-replay-attack/defenses.svg)

### 1. `x=` タグで署名の有効期限を短く

DKIM ヘッダに `x=<UNIX 時刻>` を入れ、署名の有効期限を「送信から数時間〜1 日」に絞ります。期限後はリプレイされても署名 fail。送信プラットフォーム（SendGrid / Resend / Postmark 等）で設定可能。

### 2. アカウント取得制限とレート制御

無料アカウントから 1 通取得されることが起点なので、

- 新規アカウントの送信レート制限
- メール認証必須化（電話 / クレカ）
- 1 通目の送信先制限

など、リプレイの種を作らせない設計が重要。

### 3. 大量配信時の SMTP コネクション制御

短時間に同一メッセージ ID で大量送信を検知して止める。送信プラットフォームの自前監視が必須。

### 4. 鍵ローテーション

リプレイ被害が判明したら、即座に DKIM 鍵をローテーションし、リプレイされ続けている署名を無効化します。鍵ローテの段取りは[DKIM 鍵ローテーションの手順](/blog/dkim-key-rotation)参照。

## Google の対応（2023 年以降）

Gmail はリプレイ送信元の IP / 中継経路に対するスパム判定を強化しています。リプレイされた正規ドメインのメールも、**送信元 IP（リプレイした攻撃者の IP）と元のドメインのレピュテーション差**から spam と判定する精度が上がっています。送信側ドメインの被害は限定的になる方向ですが、それでも署名済みメールが「拡散の燃料」として使われる事実は変わりません。

## よくある質問（FAQ）

### Q. DKIM リプレイ攻撃を受けている兆候はどう確認しますか？

DMARC 集計レポートで「自社が送っていない IP からの DKIM pass」が継続的に観測されたら高確率でリプレイです。`p=none` でも `rua=` を設定していれば XML レポートに送信元 IP が記録されます。[DMARC レポートの読み方](/blog/dmarc-report-reading)で IP の絞り込み手順を解説しています。

### Q. SPF を強化すればリプレイは防げますか？

防げません。リプレイは「正規メールの再送」なので、SPF が見るのは攻撃者の MTA 送信元 IP です。正規ドメインの SPF レコードに含まれない IP からなら SPF fail になりますが、DKIM のみで DMARC が pass してしまうため、SPF 単独では止まりません。[SPF と DKIM の違い](/blog/spf-dkim-dmarc-difference)も参照。

### Q. 鍵ローテだけで対処できますか？

被害発生後の応急処置にはなりますが、**根本対処は `x=` 有効期限とアカウント取得制限の組み合わせ**です。鍵を回しても、攻撃者が新しい無害メールを 1 通取得すれば同じ手口が再現できます。[DKIM 鍵ローテーション自動化](/blog/dkim-rotation-automation)で運用負荷を下げる設計例を整理しています。

### Q. 鍵長を 2048bit に伸ばせばリプレイは防げますか？

防げません。鍵長は「署名の偽造耐性」を強める対策で、リプレイ（正規署名の再送）には無関係です。ただし 1024bit は別の理由で廃止が進んでおり、[DKIM 1024bit 廃止と 2048bit 移行](/blog/dkim-1024-deprecation-2026)で移行手順を確認してください。

## まずは現状を把握しましょう

DKIM の設定状況や鍵長は、無料の[ドメイン診断](/diagnose)で確認できます。リプレイ被害が疑われる場合は[お問い合わせ](/contact)からご相談ください。

関連記事: [DKIM 鍵ローテーションの手順](/blog/dkim-key-rotation) / [DKIM 1024bit 廃止と 2048bit 移行](/blog/dkim-1024-deprecation-2026) / [DKIM 検証の仕組み](/blog/dkim-verification) / [BYODKIM とは](/blog/byodkim-toha)
