DKIM とは (設定手順と DKIM レコードの書き方)

DKIM は、送信メールに電子署名を付け、受信側が DNS の公開鍵で改ざんと送信元を確かめる仕組みです。SPF が「どのサーバーから送るか」を見るのに対し、DKIM は「本文が途中で変わっていないか」を見ます。

名前を「セレクタ._domainkey」にした TXT に、メールサービスが発行した公開鍵を登録します。

名前種別値TTL
selector1._domainkeyTXTv=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...IDAQAB3600

セレクタと公開鍵 (p= の値) はメールサービスが発行します。

設定の手順

  1. 鍵を発行するメールサービスの管理画面で DKIM の鍵を作ります。セレクタと、DNS に登録する値が表示されます。
  2. DNS に登録する名前を「セレクタ._domainkey」、種別を TXT にして、表示された値を貼ります。
  3. 署名を有効にするDNS に反映されてから、メールサービス側で署名をオンにします。先にオンにすると署名の確認に失敗します。

レコードの形

名前は セレクタ._domainkey.example.jp です。値はタグを「;」で区切って並べます。

タグ意味省略時
v=DKIM1DKIM の始まり。書くなら先頭省略できる
k=鍵の種類。rsa か ed25519rsa
p=公開鍵 (base64)。空にするとその鍵は取り消し扱い必須
t=yテスト中の印。受信側は署名の失敗を理由に扱いを変えない付けない

2048 bit の公開鍵は 255 文字を超えます。DNS 設定画面によっては、値を複数の文字列に分けて登録します。

鍵の長さ

  • ✓2048 bitいまの目安です。新しく作るならこの長さにします。
  • !1024 bit受信側では有効ですが、2048 bit への移行が推奨されています (RFC 8301)。
  • ✕1024 bit 未満受信側は署名を有効とみなしません (RFC 8301)。鍵を作り直します。

SPF・DKIM・DMARC の関係

仕組み確かめること名前
SPF送ってよいサーバーから送られたか@ (空欄)
DKIM本文と送信元が途中で変わっていないかセレクタ._domainkey
DMARCSPF・DKIM に失敗したメールをどう扱うか_dmarc

確かめる

登録した TXT が引けるか、鍵の長さが足りているかを確認できます。

根拠: RFC 6376 (DKIM) / RFC 8301 (DKIM の暗号方式と鍵の長さ) / RFC 8463 (DKIM の ed25519)

よくある質問

セレクタとは何ですか?

1 つのドメインで複数の鍵を使い分けるための名前です。メールサービスが決め、送信メールの DKIM-Signature ヘッダーの s= に入っています。

複数のメールサービスから送るときは?

サービスごとに、別のセレクタで TXT を登録します。セレクタが違えば、同じドメインに何本でも置けます。

TXT ではなく CNAME を登録するよう案内されました。

鍵をメールサービス側で管理する方式です。案内どおりの名前で CNAME を登録すれば、鍵の入れ替えはサービス側で行われます。