DKIM とは (設定手順と DKIM レコードの書き方)
DKIM は、送信メールに電子署名を付け、受信側が DNS の公開鍵で改ざんと送信元を確かめる仕組みです。SPF が「どのサーバーから送るか」を見るのに対し、DKIM は「本文が途中で変わっていないか」を見ます。
名前を「セレクタ._domainkey」にした TXT に、メールサービスが発行した公開鍵を登録します。
| 名前 | 種別 | 値 | TTL |
|---|---|---|---|
| selector1._domainkey | TXT | v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...IDAQAB | 3600 |
セレクタと公開鍵 (p= の値) はメールサービスが発行します。
設定の手順
- 鍵を発行するメールサービスの管理画面で DKIM の鍵を作ります。セレクタと、DNS に登録する値が表示されます。
- DNS に登録する名前を「セレクタ._domainkey」、種別を TXT にして、表示された値を貼ります。
- 署名を有効にするDNS に反映されてから、メールサービス側で署名をオンにします。先にオンにすると署名の確認に失敗します。
レコードの形
名前は セレクタ._domainkey.example.jp です。値はタグを「;」で区切って並べます。
| タグ | 意味 | 省略時 |
|---|---|---|
| v=DKIM1 | DKIM の始まり。書くなら先頭 | 省略できる |
| k= | 鍵の種類。rsa か ed25519 | rsa |
| 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 |
| DMARC | SPF・DKIM に失敗したメールをどう扱うか | _dmarc |
確かめる
登録した TXT が引けるか、鍵の長さが足りているかを確認できます。
根拠: RFC 6376 (DKIM) / RFC 8301 (DKIM の暗号方式と鍵の長さ) / RFC 8463 (DKIM の ed25519)
よくある質問
セレクタとは何ですか?
1 つのドメインで複数の鍵を使い分けるための名前です。メールサービスが決め、送信メールの DKIM-Signature ヘッダーの s= に入っています。
複数のメールサービスから送るときは?
サービスごとに、別のセレクタで TXT を登録します。セレクタが違えば、同じドメインに何本でも置けます。
TXT ではなく CNAME を登録するよう案内されました。
鍵をメールサービス側で管理する方式です。案内どおりの名前で CNAME を登録すれば、鍵の入れ替えはサービス側で行われます。