DKIMの仕組みとDNS設定|電子署名によるメール認証技術を理解する

DKIMの仕組みとDNS設定

DKIMの仕組みとDNS設定

メールシステムのセキュリティ対策として、SPF・DKIM・DMARCは現在必須とも言える技術になっています。

特にGmailやMicrosoft 365などの大手メールサービスは送信ドメイン認証を重視しており、適切に設定されていないメールは迷惑メールとして扱われることがあります。

その中でもDKIM(DomainKeys Identified Mail)は、メール本文が改ざんされていないことを証明する仕組みとして利用されています。

本記事ではDKIMの仕組みや公開鍵・秘密鍵の役割、DNS設定方法、実務でよくあるトラブルについて解説します。

DKIMとは

DKIMは電子署名を利用してメールの正当性を確認する仕組みです。

送信サーバはメール送信時に秘密鍵で署名を行います。

受信サーバはDNSから公開鍵を取得し、その署名を検証します。

これによりメールの改ざん検知が可能になります。

なぜDKIMが必要なのか

SMTPは元々セキュリティを重視して設計されたプロトコルではありません。

そのため途中経路でメールが改ざんされた場合でも、受信者は気付くことができません。

DKIMはその問題を解決するために利用されています。

DKIMの動作の流れ


送信サーバ
↓
秘密鍵で署名
↓
メール送信
↓
受信サーバ
↓
DNSから公開鍵取得
↓
署名検証
↓
受信判定

DNSは公開鍵の配布に利用されます。

公開鍵暗号方式を利用する

DKIMでは公開鍵暗号方式を利用します。

用途
秘密鍵署名作成
公開鍵署名検証

秘密鍵はメールサーバ側で厳重に保管します。

DKIM署名とは

送信時にメールヘッダへ署名情報が追加されます。

例です。


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

受信側はこの情報を利用して検証します。

d= の意味

d=は署名対象ドメインです。


d=example.com

example.comが署名元ドメインになります。

s= の意味

s=はセレクタ(selector)です。


s=mail

DNS上の公開鍵を特定するために利用します。

DNSに登録される公開鍵

DKIMの公開鍵はTXTレコードとして登録します。

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

p= が公開鍵です。

DKIMレコードの構造


mail._domainkey.example.com
部分意味
mailセレクタ
_domainkeyDKIM識別子
example.com対象ドメイン

受信側の確認方法

受信サーバはDNSへ問い合わせます。

mail._domainkey.example.com

公開鍵を取得して署名を検証します。

DKIM確認方法

digコマンドで確認できます。

$ dig mail._domainkey.example.com TXT

公開鍵情報が表示されます。

Google WorkspaceのDKIM

Google Workspaceでは管理画面から生成できます。

生成されたTXTレコードをDNSへ登録します。

その後DKIM署名を有効化します。

Microsoft 365のDKIM

Microsoft 365も同様にDNSへ公開鍵を登録します。

管理センターから有効化できます。

Postfix環境のDKIM

PostfixではOpenDKIMがよく利用されます。


Postfix
↓
OpenDKIM
↓
署名付与

Linux環境では一般的な構成です。

OpenDKIMで鍵生成

$ opendkim-genkey  -d example.com  -s mail

opendkim-genkey \
-d example.com \
-s mail

秘密鍵と公開鍵が生成されます。

生成されるファイル

mail.private
mail.txt

mail.txtの内容をDNSへ登録します。

よくある設定ミス① DNS未登録

署名は付与されていますが公開鍵が存在しません。

受信側は検証できません。

よくある設定ミス② セレクタ不一致

メールヘッダです。

s=mail

DNS側です。

smtp._domainkey

一致しないため検証失敗になります。

よくある設定ミス③ 鍵更新忘れ

鍵ローテーション後に古い公開鍵が残るケースです。

署名検証に失敗します。

よくある設定ミス④ TXTレコード改行

DNS管理画面によっては改行処理で失敗することがあります。

登録後にdigで確認することが重要です。

SPFとの違い

項目SPFDKIM
確認対象送信元IPメール署名
利用技術DNS照合公開鍵暗号
改ざん検知不可可能

DMARCとの関係

DMARCはSPFとDKIMの結果を利用します。


SPF
↓
DKIM
↓
DMARC

3つを組み合わせて利用するのが一般的です。

実務で確認するコマンド


dig mail._domainkey.example.com TXT

dig selector1._domainkey.example.com TXT

まず公開鍵の存在を確認します。

実務で覚えておきたいポイント

  • DKIMは電子署名による認証技術である
  • DNSには公開鍵を登録する
  • 秘密鍵はメールサーバで管理する
  • セレクタとDNS名は一致させる
  • SPFと併用する
  • DMARCの基盤技術である

まとめ

DKIMは公開鍵暗号方式を利用してメールの改ざん防止と送信者認証を実現する技術です。

送信サーバは秘密鍵で署名し、受信サーバはDNSに登録された公開鍵で検証を行います。

現在ではGoogleやMicrosoftをはじめ、多くのメールサービスでDKIMが重要視されており、メール運用では必須の知識となっています。

SPFやDMARCと組み合わせることで、より安全なメール環境を構築できます。