DKIMの署名と検証の仕組み
DKIM(DomainKeys Identified Mail)を使うと、メールサーバーが送信メッセージごとに秘密鍵で署名できます。対応する公開鍵は、selector._domainkey.yourdomain.com のTXTレコードとしてDNSに公開されます。受信側は DKIM-Signature ヘッダーからセレクターを読み取り、公開鍵を取得して、本文と主要ヘッダーが転送中に改変されていないことを検証します。
有効な署名は、そのメッセージが確かにあなたの秘密鍵を持つサーバーから送られたことを証明します。DMARCがDKIMで通過するには、署名の d= ドメインがFromドメインとアラインしている必要があります。このアラインメントこそがコールドメール用ドメインをなりすましから守るものであり、GmailとMicrosoftが一括送信者にDKIMを要求する理由でもあります。
google._domainkey.yourdomain.com TXT
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...DKIMセレクターの見つけ方
セレクターとは _domainkey の前に置かれるラベルで、プロバイダーごとに独自に決められています。Google Workspace の既定は google、Microsoft 365 は selector1 と selector2 を使い、多くの送信プラットフォームは k1、s1、pm のような短い名前を使います。プロバイダーによっては自社のDNSを指すCNAMEとしてレコードを公開しますが、リゾルバーがそれをたどるため問題ありません。
分からない場合は、そのドメインから自分宛てにメールを送り、元のヘッダーを開いて DKIM-Signature の行を読んでください。s= の後ろの値がセレクター、d= の後ろの値が署名ドメインです。そのセレクターをチェッカーに貼り付ければ、スキャンではなく直接照会できます。
- Google Workspace: セレクターは google。管理コンソールの「メールの認証」で生成します。
- Microsoft 365: selector1 と selector2。onmicrosoft.com へのCNAMEとして公開されます。
- 送信プラットフォームは通常、ドメイン認証のページにセレクターを表示しています。
- セレクターはローテーションされることがあります。新しい鍵を有効化したら再度確認してください。
鍵長と、1024ビットではもはや不十分な理由
チェッカーはbase64の公開鍵から鍵長を推定します。2048ビットのRSA鍵が現在の推奨であり、Google Workspace と Microsoft 365 が既定で発行するものでもあります。古い1024ビットの鍵も依然として検証は通りますが、弱いと見なされており、それより短い鍵での署名を拒否するプロバイダーもあります。Ed25519鍵は、コンパクトかつ強固な現代的な選択肢ですが、まだすべての受信側が検証できるわけではないため、RSAのセレクターも併せて残しておいてください。
1024ビットの鍵が見つかった場合は、プロバイダーのDKIM設定でローテーションし、新しいレコードを公開し、DNSの反映を待ってから署名を切り替えてください。InboxOneは作成するすべての Google Workspace メールボックスに2048ビットのDKIMを設定するため、この作業を手動で行う必要はありません。
認証を静かに壊すDKIMのフラグとタグ
レコードが公開されていても、まったく保護になっていないことがあります。t=y フラグは鍵をテストモードにし、受信側に失敗を無視するよう指示します。p= が空であれば鍵は完全に失効します。h=sha1 でハッシュを制限したり、s= でメールを除外するサービス種別を指定したりすると、主要プロバイダーで検証が失敗します。チェッカーはこれらを、変更すべきタグとともに指摘します。
- 署名が検証されることを確認したら、t=y を削除しましょう。
- セレクターを引退させるつもりでない限り、p= を空のままにしてはいけません。
- DNSホストが文字列長を255文字に制限している場合は、長い鍵を複数の引用符付き文字列に分割しましょう。
- base64の鍵を貼り付ける際、内部に改行やスペースを入れないようにしましょう。

