3.5 The DKIM-Signature Header Field (DKIM-Signature ヘッダーフィールド)
3.5. The DKIM-Signature Header Field (DKIM-Signature ヘッダーフィールド)
DKIM-Signature ヘッダーフィールドの署名は標準の [RFC5322] ヘッダーフィールドです。他の RFC5322 ヘッダーフィールドと同様に, ヘッダーフィールド名, コロン, ヘッダーフィールド値, 末尾の CRLF で構成されます。ヘッダーフィールド値は Section 3.2 で定義された tag=value 構文を使用します。
署名は Signer の ADMD 出境境界で適用され, Verifier の ADMD 入境境界で検証されます。単一のメッセージには複数の DKIM-Signature ヘッダーフィールドが含まれる場合があり, 同じまたは異なる Signer によって作成されます (Section 4 を参照)。
次のタグが DKIM-Signature ヘッダーフィールドで定義されています:
v= バージョン (プレーンテキスト; 推奨, デフォルトは "1")。このタグはヘッダーフィールドの最初のタグでなければならず, その値は "1" でなければなりません。このタグは DKIM のバージョンを決定するために解釈する必要があります。"v=" タグで始まらない, または値が "1" でないヘッダーフィールドは無視されます。
a= 署名の生成に使用されるアルゴリズム (プレーンテキスト; 必須)。署名者と検証者は "rsa-sha1" と "rsa-sha256" アルゴリズムをサポートする必要があります。実装者と検証者がサポートする必要のあるアルゴリズムについては Section 3.3 を参照してください。
b= 署名データ (base64; 必須)。署名値を base64 に変換した後, このタグに配置されます。base64 文字列内の空白は無視されるため, 長い署名値を複数の行に分割するために使用できます。
bh= 本文ハッシュ (body hash) (base64; 必須)。本文ハッシュは Section 3.7 で定義されたハッシュアルゴリズムを使用して正規化本文をハッシュした値で, base64 エンコードされています。
c= メッセージ正規化アルゴリズム (プレーンテキスト; オプション, デフォルトは "simple/simple")。このタグは検証者にどの正規化アルゴリズムを使用するかを伝えます。Section 3.4 を参照してください。
d= 署名ドメイン識別子 (Signing Domain Identifier, SDID) (プレーンテキスト; 必須)。署名ドメインはこのメッセージに対して責任を主張します。このドメインの DNS レコードがクエリされ, 署名の検証に必要な公開鍵が取得されます。"d=" ドメインは "s=" セレクタのドメインと同じか, その親ドメインでなければなりません。
h= 署名されたヘッダーフィールド (プレーンテキスト; 必須)。署名の生成時に署名に含まれるヘッダーフィールド名のコロン区切りリストで, 最下部から最上部へソートされています。ヘッダーフィールド名は小文字でなければなりません。
i= エージェントまたはユーザー識別子 (Agent or User Identifier, AUID) (dkim-quoted-printable; オプション, デフォルトは "@d")。エージェントまたはユーザー識別子は, SDID を代表して責任を負うエージェントまたはユーザーを参照する識別子を提供します。"i=" ドメインは "d=" ドメインと同じか, そのサブドメインでなければなりません。
l= 本文長カウント (プレーンテキスト 10 進数; オプション, デフォルトは本文全体)。このタグは検証者に本文ハッシュの計算時に本文の何バイトを使用するかを伝えます。
q= クエリ方法 (プレーンテキスト; オプション, デフォルトは "dns/txt")。公開鍵を取得するために使用されるクエリ方法のコロン区切りリスト。"dns/txt" 方法はサポートする必要があります。
s= セレクタ (Selector) (プレーンテキスト; 必須)。セレクタは "d=" ドメインの名前空間を細分化し, 複数の鍵を保存できるようにします。このメカニズムの説明については Section 3.1 を参照してください。
t= 署名タイムスタンプ (プレーンテキスト 10 進数; 推奨)。署名が作成された時刻で, 1970 年 1 月 1 日 00:00:00 UTC からの秒数 (Unix 時間)。
x= 署名有効期限 (プレーンテキスト 10 進数; 推奨)。署名が期限切れになる絶対時刻で, 1970 年 1 月 1 日 00:00:00 UTC からの秒数。このタグが存在する場合, その値は "t=" タグの値より大きくなければなりません。
z= コピーされたヘッダーフィールド (dkim-quoted-printable; オプション)。このタグには署名時に使用された選択されたヘッダーフィールドのコピーが含まれ, DKIM-Quoted-Printable エンコーディングを使用します。これにより転送プロセス中のヘッダーフィールドの変更を検出できます。
ABNF 構文:
sig-tag-list = sig-tag *( ";" sig-tag ) [ ";" ]
sig-tag = [FWS] sig-tag-name [FWS] "=" [FWS]
sig-tag-value [FWS]
sig-tag-name = %x61 / %x62.68 / %x63 / %x64 / %x68 /
%x69 / %x6c / %x71 / %x73 / %x74 /
%x76 / %x78 / %x7a
; a, bh, c, d, h, i, l, q, s, t, v, x, z
sig-tag-value = tval / sig-a-tag-value / sig-b-tag-value /
sig-c-tag-value / sig-d-tag-value /
sig-h-tag-value / sig-i-tag-value /
sig-l-tag-value / sig-q-tag-value /
sig-s-tag-value / sig-t-tag-value /
sig-x-tag-value / sig-z-tag-value