Skip to main content
New SPF lookups must resolve in milliseconds — why a DMARC tool's add-on isn't enough Learn Why → →

DKIM署名

DKIM署名とは、メールのヘッダー(DKIM-Signatureヘッダー)に追加される暗号学的な署名で、受信者がメッセージを送信ドメインによって認可され、転送中に改ざんされていないことを検証できるようにします。主要なタグには d(ドメイン)、s(セレクター)、b(署名)、bh(本文ハッシュ)があります。

このガイドは、DKIMに関する完全ガイドの一部です。関連: DKIMレコードDKIMが失敗する理由

DKIM署名とは、メールのヘッダーに追加される暗号学的な署名(DKIM-Signatureヘッダーに含まれる)で、受信サーバーがメッセージを送信ドメインによって認可され、転送中に改ざんされていないことを検証できるようにするものです。 署名は送信者が保持する秘密鍵で生成され、DNSに公開された対応する公開鍵と照合してチェックされます。

DKIM-Signatureヘッダーの見た目

署名は、メッセージの先頭に付加される単一のヘッダーフィールドとして移動します。受信者が必要とするすべて、すなわち署名ドメイン、セレクター、どのヘッダーが署名されたか、本文のハッシュ、そして署名そのものを、セミコロンで区切られた一連のtag=valueペアに詰め込みます。

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
    d=example.com; s=selector1; t=1700000000;
    h=from:to:subject:date;
    bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
    b=Cg5Xje8kY0m5xT1pW2qL4vN8rH6dF3aZ9cU7bE0iQoR2sT4uV6wX8yZ1
    aB3cD5eF7gH9jK2lM4nP6qR8sT0uV2wX4yZ6aB8cD0eF2gH4jK6l=

このヘッダーは、メッセージがドメインを離れる前に送信者のメールサーバーによって挿入されます。改行とインデントは折り返しのためだけのもので、値は論理的には1つの連続した文字列です。

DKIM署名のタグ

各タグは、検証というパズルの1ピースを運びます。署名者がこれらの値を選び、検証者はそれらを読み返して署名を再構築しチェックします。

タグ名前目的
vバージョンDKIMバージョン。常に1
aアルゴリズムハッシュと署名のアルゴリズム。例: rsa-sha256ed25519-sha256
dドメイン署名ドメイン — DKIMが認証するアイデンティティ。
sセレクタードメインのDNSからどの公開鍵を取得するかを指定する。
h署名ヘッダー署名の対象となるヘッダーフィールドのコロン区切りリスト。
bh本文ハッシュ(正規化された)メッセージ本文のハッシュ。
b署名実際の暗号学的署名、base64エンコードされたもの。
c正規化ハッシュ化前にヘッダー/本文をどう標準化するか。例: relaxed/relaxed
t / xタイムスタンプtはメッセージが署名された時刻。xは署名が失効する時刻。

署名の仕組み(送信時)

メッセージが送信サーバーを離れるとき、DKIMは2つのことを行います。まず本文を正規化してハッシュ化し、その結果をbhに格納します。次に、hで指定されたヘッダー(およびDKIM-Signatureヘッダー自体を空のbとともに)を正規化し、そのブロックをハッシュ化して、そのハッシュをドメインの秘密鍵で署名します。結果として得られる署名がbの値になります。秘密鍵は送信者から決して外に出ないため、真のドメイン所有者だけが、検証を通過する署名を生成できます。

検証の仕組み(受信時)

受信サーバーはDKIM-Signatureヘッダーを読み取り、ドメイン(d)とセレクターを把握します。<selector>._domainkey.<domain>でDNSを照会し、DKIMレコードから公開鍵を取得します。そして送信者の作業を繰り返します。本文を正規化してハッシュ化し、それをbhと比較し、署名されたヘッダーを正規化してハッシュ化し、公開鍵を使ってbをそのヘッダーハッシュと照合してチェックします。本文ハッシュが一致し、かつ署名が検証されれば、DKIMは通過します。bhのチェックこそが、メッセージ本文への改ざんを検出するものです。たった1文字の変更でも異なるハッシュを生成し、チェックに失敗します。

署名が失敗するとき

DKIM署名は、受信者が見るメッセージが、送信者が署名したものと一致しなくなったときに常に失敗します。最もよくある原因は次のとおりです。

  • 転送中の改変 — メーリングリスト、転送機能、一部のゲートウェイが件名を書き換えたり、フッターを追加したり、本文を再エンコードしたりして、本文ハッシュを壊す。
  • 本文ハッシュの不一致 — 署名された本文部分への変更はbhを変えるため、鍵が正しくても検証が失敗する。
  • 誤ったまたは欠落した鍵 — セレクターが、存在しない、失効した、または誤った公開鍵を保持するDNSレコードを指している。

原因と修正のより詳しい内訳については、DKIMが失敗する理由を参照してください。また、無料のDKIMルックアップツールを使って、セレクターの公開鍵が公開され、正しい形式であることを確認してください。

よくある質問

DKIM署名とは何ですか?

DKIM署名とは、メールのヘッダーのDKIM-Signatureフィールドに追加される暗号学的な署名です。送信者は、選択したヘッダーと本文のハッシュに対して秘密鍵でこれを生成します。受信者はDNSにある公開鍵と照合して検証し、メッセージがそのドメインから送られ、改変されていないことを証明します。

DKIM署名のb=タグは何を意味しますか?

b=タグは実際の署名を保持します。これは、正規化された署名ヘッダーのハッシュを送信ドメインの秘密鍵で署名して生成された、base64エンコードされた値です。受信者はそれをデコードし、DNSから取得した公開鍵と照合して検証します。署名されたヘッダーが転送中に変わっていれば、b=のチェックは失敗します。

転送後にDKIM署名が失敗するのはなぜですか?

転送機能やメーリングリストは、しばしばメッセージを改変します。フッターを追加したり、件名を書き換えたり、本文を再エンコードしたりします。DKIMは正確な本文と選択したヘッダーに署名するため、そのような変更はどれも計算されるハッシュを変え、署名されたbhやヘッダーハッシュと一致しなくなります。その結果、元は有効だった署名も検証に失敗します。

DKIMにおける本文ハッシュ(bh)とは何ですか?

bh=タグは、正規化後のメッセージ本文のハッシュで、aで指定されたアルゴリズムで計算されます。受信時、検証者は本文ハッシュを再計算してbhと比較します。不一致は本文が転送中に改変されたことを意味し、b=の暗号学的署名がチェックされる前に、署名は拒否されます。

Rated 5/5 on G2 · Trusted since 2018

Trusted by 50,000+ domains

"AutoSPF Flattens SPF Records Seamlessly & Keeps Changes Logged - I am quite pleased with the product"

It does what it promises to do, and does it very well. I appreciate that it keeps a log of changes made, which prevents many mistakes. A client's SPF record would have way too many lookups, but AutoSPF makes that problem go away. The length of the SPF record is typically not the issue; it's the amount of lookups in the record that are. AutoSPF "flattens" the record, automatically expanding the defined lookups to IP addresses or ranges. And it auto-updates the record when the un-flattened lookups change.
PJ

Peter J.

President · Small-Business (50 or fewer emp.)

"Helped us go beyond capacity"

AutoSPF did exactly as described, it helped us get past our 10 lookup limit. Afterwards, we hit another limit regarding overall capacity and when contacted, they quickly provided us with a new solution to eliminate capacity issues entirely going forward, so now we can add as many SPF records as needed. They also provided us with a personalized support video explaining their new method in its entirety using our instance as the example.
VU

Verified User

Financial Services · Mid-Market (51-1000 emp.)

"Great service and great support"

AutoSPF was easy to initially set up on our own and a great cost effective entry into spf flattening. Needed our first support assistance today and got great response including a video demonstrating the issue I was trying to solve, a quick fix, and more detailed followup.
GF

Greg F.

Mid-Market (51-1000 emp.)