DKIMレコード作成・鍵生成ツール
ブラウザ内でDKIM鍵ペアを生成し、公開するDKIMレコードを取得できます。Google WorkspaceやMicrosoft 365をお使いの場合は、鍵はそちらで作成されます。その場所をご案内します。
ドメインがすでに公開している鍵と、その作成元を探します。下で、メールに署名するサービスを選ぶこともできます。
作成はブラウザ内で行います。外部に出るのはDNSの問い合わせだけで、HTTPSでCloudflareのリゾルバーに送られます(確認用にGoogleのリゾルバーも使用)。
example.comの鍵を生成
ブラウザのWeb Cryptoで作成します。秘密鍵がこのタブの外に出ることはありません。
RFC 8301が求める長さです。通常はこれを選びます。
詳細設定
鍵
オフラインでも動作します。Wi-Fiをオフにして、もう一度生成してみてください。
OpenDKIMを設定
# Key file: only the opendkim user may read it $ sudo mkdir -p /etc/opendkim/keys/example.com $ sudo nano /etc/opendkim/keys/example.com/s.private $ sudo chown -R opendkim:opendkim /etc/opendkim/keys $ sudo chmod 600 /etc/opendkim/keys/example.com/s.private
ローテーション計画
- 今日を公開してから、それで署名を始めます。
- 6か月後…を作成し、と並べて公開します。
- 切り替え…で署名します。
- 7〜30日後配送中のメールのために、を公開したままにします。
- 失効は削除せず、空の鍵を公開します。
v=DKIM1; k=rsa; p=
公開した後に
DKIM鍵とDKIMレコードの作成・生成方法は?
RSA 2048の鍵ペアを生成し、秘密鍵はメールに署名するサーバーに保管して、公開鍵をselector._domainkey.自分のドメインのTXTレコードとして公開します(RFC 6376)。
セレクターは、鍵を作るたびに新しい名前(作成した月など)にします。そうすれば、その鍵で署名したメールが配送中でも、古い鍵を公開したままにできます。
次に、署名側に秘密鍵をインストールしてテストメールを送ります。DKIM-Signatureヘッダーには、受信サーバーが参照するドメイン(d=)とセレクター(s=)が示されます。
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=s202610; …s202610._domainkey.example.com受信サーバーはこれで検証 ✓
他のスクリプトから読めない秘密鍵ネットワークに接続できない分離されたフレームの中で作成し、保管します。署名側が読み込む形式PKCS#8、PKCS#1、base64の1行から、署名側に合わせて選べます。リクエストはゼロ、オフラインでも動作「生成」を押してからのネットワークリクエストの数を、リアルタイムで表示します。署名側のファイルOpenDKIM、rspamd、Exim、Postfix、Amazon SES向けに、ドメインとセレクターを埋めて表示します。日付入りのセレクター名前から鍵の作成時期がわかります。下のローテーション計画には、次の鍵と失効の日付が入ります。DKIMの設定に、自分で鍵を生成する必要はありますか
自社のサーバーでメールに署名する場合だけです。Google Workspace、Microsoft 365、ほとんどのメールサービスは自分で鍵を作成して、公開するレコードを示してくれるため、生成ツールで作った鍵が使われることはありません。
自分の鍵が必要になるのは、Postfix with OpenDKIM、rspamd、Exim、Haraka、自社のアプリ、そしてAmazon SES(BYODKIM)やMailgunのように鍵を受け付けるサービスです。
| 送信元 | 鍵の作成者 | 公開するもの | セレクター |
|---|---|---|---|
| Google Workspace | プロバイダー | TXT(先方の鍵) | |
| Microsoft 365 | プロバイダー | 先方の鍵へのCNAME | selector1, selector2 |
| SendGrid | プロバイダー | 先方の鍵へのCNAME | s1, s2 |
| Mailchimp | プロバイダー | 先方の鍵へのCNAME | k2, k3 |
| Postmark | プロバイダー | TXT(先方の鍵) | <date>pm |
| Brevo | プロバイダー | 先方の鍵へのCNAME | brevo1, brevo2 |
| Zoho Mail | プロバイダー | TXT(先方の鍵) | zoho |
| Amazon SES | どちらでも | TXT(自分の鍵) | 任意 |
| Mailgun | どちらでも | TXT(自分の鍵) | 任意 |
| OpenDKIM | 自分 | TXT(自分の鍵) | 任意 |
| rspamd | 自分 | TXT(自分の鍵) | 任意 |
| Exim | 自分 | TXT(自分の鍵) | 任意 |
RSA 1024、2048、4096、Ed25519のどれにしますか
RSA 2048を使ってください。1024は受信サーバーが受け入れる最小の長さで、4096はDNSに負担がかかります。Ed25519は短いものの、独立したテストで大手メールボックスプロバイダーが検証しないことがわかっており、RSA署名と併用する場合にしか役立ちません。
多くのツールは今も1024が既定です。opendkim-genkey、rspamdのdkim_keygen、Microsoft 365がそうです。RFC 8301は2048を求めています。
Ed25519を追加する場合は、RSAでも別のセレクターで署名してください。Yahooは、アライメントの取れた複数の署名のうち1つが失敗すると、DMARCにパスしない場合があります。
OpenDKIM、rspamd、EximでDKIMを設定するには
秘密鍵を署名側だけが読める場所に保管し、署名側の設定でドメインとセレクターをそれに対応付けて、再起動します。タブには、署名側ごとのファイルが、入力した名前で埋められて表示されます。
結果は、自分宛にメールを送ってヘッダーのDKIMの結果を読むか、当サイトのDKIMチェッカーで確認してください。
# /etc/opendkim/KeyTable s202610._domainkey.example.com example.com:s202610:/etc/opendkim/keys/example.com/s202610.private # /etc/opendkim/SigningTable *@example.com s202610._domainkey.example.com # /etc/opendkim/TrustedHosts 127.0.0.1 localhost
# /etc/rspamd/local.d/dkim_signing.conf domain { example.com { selector = "s202610"; path = "/var/lib/rspamd/dkim/example.com.s202610.key"; } } # only if example.com is a subdomain: use_esld = false; # only if users log in without @example.com: allow_username_mismatch = true; $ sudo rspamadm configtest && sudo systemctl restart rspamd
DKIMレコードが複数の文字列に分割されるのはなぜですか
2048ビットの鍵のレコードは約410文字で、TXTの文字列1つの上限である255バイトを超えます。そのためDNSは2つの文字列として格納し、検証する側が間に何も挟まずに連結します。
Cloudflare、Azure、cPanelのようなパネルは値全体を受け付けて自動で分割します。Route 53とGoogle Cloud DNSは、引用符で囲んだ文字列を貼り付ける必要があります。GoDaddyは値の上限が1,024文字です。
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtw0DwsqwlKexAE5H5WDgWwJlEz/C+7FIeL9/Y1TahjkvMvvX+lUQofjxhVmt/yMXVjvgrYb9jZIxtG96iO9qggOWi0vAeClBst4m3rj3O7GjkC/dfbG2BhQBpwJYt6ec76B8y6cyHBZ0+hMWGfAxuLQt/kkiVsaqwRxRQvEuMfnL4L9S8I7evV8GHFihlEgIaM9W8ag4zzL0ZxiEeznDaHYmJDbmgzarExXIY1IuMdpPu1/GmSrq9RCHEifKVvKsOPcmbv2u6xMbW63/EZmPIY78eZRqkioT8TangIPKsP7HEFZRKQwnQJy/OybqexdiFmt29BXBo7A745shhzueGQIDAQABs202610._domainkey.example.com. 3600 IN TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtw0DwsqwlKexAE5H5WDgWwJlEz/C+7FIeL9/Y1TahjkvMvvX+lUQofjxhVmt/yMXVjvgrYb9jZIxtG96iO9qggOWi0vAeClBst4m3rj3O7GjkC/dfbG2BhQBpwJYt6ec76B8y6cyHBZ0+hMWGfAxuLQt/kkiVsaqwRxRQvEuMfnL4L9S8I7evV8GHFihlEgIa" "M9W8ag4zzL0ZxiEeznDaHYmJDbmgzarExXIY1IuMdpPu1/GmSrq9RCHEifKVvKsOPcmbv2u6xMbW63/EZmPIY78eZRqkioT8TangIPKsP7HEFZRKQwnQJy/OybqexdiFmt29BXBo7A745shhzueGQIDAQAB" )
DKIM鍵のローテーションはどう行いますか
新しい鍵を新しいセレクターで公開し、署名をそちらに切り替え、配送中のメールのために古いレコードを7〜30日残してから、空のp=で失効させます。M3AAWGは、少なくとも6か月ごとのローテーションを勧めています。
削除せずに失効させると、検証する側は古いセレクターを失効済みと報告します。新しい鍵に、以前のセレクター名を再利用しないでください。
s202611署名7〜30日間保持p=(失効)s202705署名オンラインでDKIM鍵を生成しても安全ですか
鍵がブラウザ内で作成され、送信されない場合に限ります。このページは、ネットワークに接続できない分離されたフレームの中でWeb Cryptoを使って鍵を作成します。それは、ブラウザの開発者ツールで確認できます。
オンラインの生成ツールの中には、自社のサーバーで鍵を作ってレスポンスで返すものがあり、その場合は鍵がログに残ったり保存されたりするおそれがあります。ブラウザ内で作った鍵は、保存するまでこのタブの中にしか存在しません。
このページの他のスクリプトは、鍵を保持するフレームを読み取れません。また、このページはオフラインでも動作します。Wi-Fiをオフにして、もう一度生成してみてください。
GET /generate?key_size=2048200 {"private_key": "-----BEGIN…"}ログに残る可能性ありDKIMレコード作成・鍵生成ツールのよくある質問
DKIMレコードとは何ですか
ここでDKIM鍵を生成しても安全ですか
鍵の長さはどれにすればよいですか
Google WorkspaceやMicrosoft 365にDKIM鍵は必要ですか
DKIMのセレクターとは何ですか
秘密鍵はどんな形式ですか
1つのドメインにDKIMレコードを複数置けますか
DKIMレコードが255文字より長いのはなぜですか
DKIMレコードのt=yは何を意味しますか
DKIM鍵はどれくらいの頻度でローテーションすべきですか
足りないものはありますか?機能や新しいツールを提案する
関連ツール
DMARCレコード作成ツール
現在公開しているレコードをもとに、RFC 9989に沿ったDMARC設定(DMARCレコード)を作成し、認証に失敗したメールを受信サーバーがどう扱うかを確認できます。
SPFレコード作成ツール
メールサービスとサーバーに合わせた有効なSPF TXTレコードを作成し、DNSルックアップ10回の上限をリアルタイムでチェック
DKIMチェッカー
セレクター自動検出付きでDKIMレコードを検証
DMARCチェッカー
ドメインのDMARCポリシーとアライメント設定を確認
SPFレコードチェッカー
SPFレコードの検証とRFC 7208に基づくDNSルックアップ数を確認
MX検索
メール交換レコードとメールサーバーの詳細を検索
メールヘッダー解析
メールヘッダーを解析してメールの経路を追跡
BIMIレコードチェッカー
BIMIレコード、SVG Tiny PSのロゴ、VMC証明書を検証し、ロゴが表示される受信トレイも確認