DKIM (DomainKeys Identified Mail)

メール & セキュリティ
送信メールにデジタル署名を追加するメール認証方法。受信者がメッセージが変更されなかったことを確認できます。
← 用語集に戻る

DKIM (DomainKeys Identified Mail) とは何か?

DKIM (DomainKeys Identified Mail) はメール認証方法で、送信サーバーが送信メッセージに暗号署名を追加することを可能にします。受信サーバーはDNS内に公開されている公開鍵を使用してこの署名を検証でき、メッセージがドメインから来たことを確認し、変更されていないこと。

DKIM の動作方式

1. 鍵生成: ドメイン所有者が公開/秘密鍵ペアを生成

2. DNS公開: 公開鍵をTXTレコードとして公開

3. メール署名: 送信メールが秘密鍵で署名

4. 署名検証: 受信サーバーが公開鍵を取得して署名を確認

署名プロセス

メールが送信される場合:

1. メールサーバーがメールヘッダーおよび本文のハッシュを計算

2. ハッシュが秘密鍵 (署名を作成)で暗号化

3. 署名がDKIM-Signature ヘッダーとして追加

4. メールが送信

検証プロセス

メール受信時:

1. サーバーがDKIM-Signature ヘッダーを抽出

2. セレクターおよびドメインを検索 (s=selector; d=domain.com)

3. DNS selector._domainkey.domain.com TXT レコードをクエリ

4. 公開鍵を使用して署名を復号

5. メッセージ独自のハッシュを計算

6. 比較: 一致 = pass、不一致 = fail

DKIMレコード形式

DKIM レコードは特定のサブドメインのTXTレコードです:

selector._domainkey.example.com.    IN    TXT    "v=DKIM1; k=rsa; p=MIGfMA0..."

レコードコンポーネント

タグ説明
vバージョンv=DKIM1
kキータイプk=rsa
p公開鍵 (base64)p=MIGfMA0GCSqG...
tフラグ (オプション)t=y (テストモード)
hハッシュアルゴリズムh=sha256

セレクター

セレクターはドメイン当たり複数のDKIMキーを許可します:

google._domainkey.example.com       # Google Workspace

s1._domainkey.example.com # Sendgrid

mailchimp._domainkey.example.com # Mailchimp

各メールサービスは独自のセレクターおよびキーを提供します。

DKIM署名ヘッダー

DKIM署名は以下のようになります:

DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=google;

c=relaxed/relaxed; q=dns/txt;

h=from:to:subject:date:message-id;

bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;

b=AuUoFEfDxTDkHlLXSZEpZj79...

主要なフィールド:

DKIMセットアップ

Google Workspace向け

1. 管理コンソール → アプリ → Gmail → メール認証に移動

2. DKIMキーを生成 (2048ビット推奨)

3. Googleが提供するTXTレコードを追加

4. DKIM署名をアクティベート

サードパーティサービス向け

ほとんどのメールサービス (SendGrid、Mailchimp など) は以下を提供します:

1. CNAMEレコード (彼らが管理するキー向け)

2. または 公開鍵を持つTXTレコード

例 (SendGrid):

s1._domainkey.example.com    CNAME    s1.domainkey.sendgrid.net

DKIMの検証

テストメール送信 ヘッダーを表示するサービス (Gmailは認証結果を表示). コマンドライン:
dig google._domainkey.example.com TXT
DomScanを使用:
curl "https://domscan.net/v1/health?domain=example.com"

# 一般的なセレクターに基づいてDKIMステータスを報告

DKIMベストプラクティス

2048ビットキーを使用

古い1024ビットキーはますます脆弱です。ほとんどのプロバイダーは現在、デフォルトで2048ビットです。

キーを定期的にローテーション

年1回DKIMキーをローテーション、または セキュリティインシデント後。新しいセレクターでキーを公開してからスイッチ前。

重要なヘッダーに署名

From、To、Subject、Date、およびMessage-ID が署名に含まれることを確認します。

署名されたメッセージを変更しないでください

メーリングリストまたは転送サービスがコンテンツを変更するとDKIM を破壊します。転送されたメール向けにARC (Authenticated Received Chain)を使用します。

DKIMの制限

DKIM単独ではスプーフィング防止しません。メッセージが変更されなかったことのみを証明します。ドメインは有効なDKIMを持ちながら、攻撃者が署名なしのスプーフィングされたメールを送信する可能性があります。DMARCはこれに対処します。

この知識を実践する

DomScan の API を使用してドメインの可用性、状態などを確認します。