本KBでは、DKIM署名機能についてご紹介します。
以降、TMEmS/V1ECS の管理コンソールのメニュー名表記は、TMEmS の場合は TMEmS 管理コンソールのトップ画面からの表記、V1ECS の場合は Trend Vision One 管理コンソールの[Email and Collaboration Security] > [Cloud Email Gateway Protection] 画面配下からの表記とします。
例としまして、[ドメイン]というメニューは、TMEmS の場合は TMEmS管理コンソールの [ドメイン]、V1ECSの場合は Trend Vision One 管理コンソールの[Email and Collaboration Security] > [Cloud Email Gateway Protection] > [ドメイン]を意味します。
目次
1.DKIMの概要
DKIMはRFC6376にインターネット標準として規定されています。DKIMの概要について簡単に紹介します。メールへの署名
DKIM ではまず、メールサーバがメール配送時に秘密鍵を使用して、指定されたヘッダ (Date ヘッダや From ヘッダ、To ヘッダ、Subject ヘッダなど) と本文を対象にメールに署名します。
署名されたメールには次のような DKIM 署名のヘッダ DKIM-Signature が追加されます。
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=default; t=1555040205; bh=wE7NXSkgnx9PGiavN4OZhJztvkqPDlemV3OGuEnLwNo=; h=Date:From:To:Subject:Message-ID; b=GQIiALOKQZZjJAmG/PGpMFPLeS4SxmUT4mLUtJs7nT2GVI4/qfWAXjLifIJo7Gxok VhEg4tmGfGBAqcIoyu+KE4poIFrtyRzFrogbpT+DT1BjdhrsPUTwLpxg9yhb3It3sp d1rcBQwVyzr9gkHqbUMfjw7G82I+/PYsbnDUQm3tU/XSciM6VMA1eF7DKLP3GyIoHB 2vOsHGi+lVzO7APdut3NlcUcXIN0nhYsJaW+r/RzItis/8RvOvRlq+EtBSwCmWsKnW tah9JFNZ/mdYZEz3IaqF2CskGNag3H2/qYaKDrrP12IYLEWoheUlCeXHorojqix8Ct 6k//Xj40vo4lg==
"h="タグに署名で使用されたヘッダが、"bh=" タグに署名で使用された本文のハッシュ値が記録されます。そして、"b=" タグに、これらをもとに生成された署名データが記録されます。
公開鍵情報
署名したドメイン (SDID) の DNS には、署名に使用した秘密鍵と対になる公開鍵が TXT レコードとして登録されています。
上記ヘッダ例では "d=" タグに SDID として "example.com" が、"s=" タグに DNS のセレクタとして "default" が指定されており、公開鍵は以下のように "default._domainkey.example.com" の TXT レコードに公開されています。
default._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArXKU4LkpFI/dcHOvhG2B" "tGrwOTT2VMm8C9Us3M87lbEkM00kCI4WiK/N1BP9VRI9FCjKA5SeG1Qg9PgShXJA" "eriW9hHOspsYk/7wIvA59kMC+TppP2fQSSIQGuKEj0ls48bfr7FVhdM3zqRTa2yW" "RS9rpbIzxNfg304PucTTZF77zkBH+UEEp9icjWdUAS4ftJWPZilTqXveHFVvLrDe" "ae1l9/0bpj96+BWgqOCPdDf0dV9xG+9OIx/t5kuwif+MP0GL6e1y+NqhlYqiZtg+" "e52bxOnm+zN1R2aUHQW35o6NzK/ksvVVADbbrU6nMaiNjtq7QbE9wI+BxPsSb73o" "1wIDAQAB" )
DKIM署名の検証(認証)
DKIM の署名を検証するアプリケーションは DKIM-Signature ヘッダ を基に DNS から公開鍵を入手し、署名を検証します。
例えば、"h=" タグに指定されたヘッダが変更されていたり、本文の内容が変更されていれば認証に失敗します。
2.DKIM署名の設定
[送信保護設定] > [DomainKeys Identified Mail (DKIM) 署名] から設定します。
初期設定では何も設定されていません。当該画面から、[ドメイン]で登録したドメイン毎にDKIM署名設定を実施いただくことになります。
TMEmS/V1ECSは、送信保護方向でメールを受信すると、メールのエンベロープ送信者アドレス(またはヘッダFrom)のドメインに対応する設定が[DomainKeys Identified Mail (DKIM) 署名]に存在するか確認します。「管理対象ドメイン」が合致し、「ステータス」が"有効"となっているDKIM署名設定が確認されれば、TMEmS/V1ECSは、当該DKIM署名設定を使用してメールにDKIM署名(DKIM-Signatureヘッダ)を付与します。
DKIM署名設定の各種設定項目は以下の通りです。
2-1.管理対象ドメイン
DKIM署名を行う送信者のドメインを指定します。
エンベロープ送信者アドレスまたはFromヘッダアドレス(後述の2-3.の設定参照)のドメインが本設定値に合致した場合、以降の設定に従ってDKIM署名の付与を実施します。
2-2.DKIM署名を有効にする
本DKIM署名設定を有効にするかをチェックします。
2-3.エンベロープ送信者アドレスのないメールメッセージに署名する
バウンスメール(エラーメール)といった「エンベロープ送信者アドレスが空である」メールに対してもDKIM署名を行うかを設定します。有効にした場合、「エンベロープ送信者アドレスが空である」メールに対しては、Fromヘッダアドレスのドメインを使用してDKIM署名設定のチェックを行います。
2-4.SDID(DKIM-Signatureヘッダ内の対応タグ:d=)
DKIM署名に使用するSDID(Signing Domain Identifier)を指定します。
「2-1.管理対象ドメイン」で設定したドメインとと同一のドメイン、またはその親ドメインを設定します。
2-5.セレクタ(DKIM-Signatureヘッダ内の対応タグ:s=)
DKIM署名に使用するセレクタになります。固定値が自動的に割り当てられ、個別に値を設定することはできません。先述のSDIDと合わせ、公開鍵情報の格納先となるDNS TXTレコードが決定します。
2-6.署名するヘッダ(DKIM-Signatureヘッダ内の対応タグ:h=)
DKIM署名の生成に使用するヘッダを指定します。
From、To、Date等から選択する他、「ヘッダのカスタマイズ」にて任意のヘッダを追加することも可能です。
なお、Fromヘッダは必須であるため固定で選択されています。
2-7.待機時間
後述の「2-8.鍵のペア」にて提供された公開鍵情報をのDNSへの公開後、TMEmS/V1ECSがDKIM署名を開始するまでの待機時間(24時間/48時間/72時間/96時間)を設定します。
2-8.鍵のペア
DKIM署名に使用する公開鍵と秘密鍵を作成します。
"生成する"を押下すると、秘密鍵がTMEmS内に生成され、"DNS TXTレコード名"と"DNS TXTレコード値"にDNSに登録すべき公開鍵情報が表示されます。DKIM署名の検証では、DKIM署名検証サーバがDNSから公開鍵情報を参照できる必要があります。
"DNS TXTレコード名":
公開鍵情報の登録先となるDNSのドメイン名が表示されます。"(セレクタ)._domainkey.(SUID)"というドメイン名になります。当該ドメインのTXTレコードに公開鍵情報が登録されている必要があります。
"DNS TXTレコード値":
上述の「DNS TXTレコード名」のドメインのTXTレコードに登録する値が表示されます。
当該値が、TMEmS/V1ECS内に生成された秘密鍵と対になる公開鍵情報となります。
2-9.詳細 - ヘッダの正規化(DKIM-Signatureヘッダ内の対応タグ:c=)
DKIM署名を生成する際に使用する、メールのヘッダ情報の正規化方式を指定します。以下いずれかを指定します。デフォルトはSimpleです。
Simple: "simple"を使用します。署名検証時、一切のヘッダ値の変更を許可しない方式です。
Relaxed: "relaxed"を使用します。署名検証時、ヘッダ値の変更に関して、大文字/小文字の同一視、折り畳み、空白値を許可する方式です。
2-10.詳細 - 本文の正規化(DKIM-Signatureヘッダ内の対応タグ:c=)
DKIM署名を生成する際に使用する、メールのボディの正規化方式を指定します。以下いずれかを指定します。デフォルトはSimpleです。
Simple: "simple"を使用します。署名検証時、ボディ部の変更に関し、空行のみを許可する方式です。
Relaxed: "relaxed"を使用します。署名検証時、ボディ部の変更に関し、空行と行末の空白値を許可する方式です。
2-11.署名の有効期限(DKIM-Signatureヘッダ内の対応タグ:x=)
DKIM署名の有効期限(単位:日数)を指定します。1 - 30の間の値を指定します。空白の場合、無制限となります。デフォルトは空白です。
2-12.ボディ長の上限(DKIM-Signatureヘッダ内の対応タグ:l=)
DKIM署名の生成に使用するボディ部の最大長(単位:バイト)を指定します。1 - 1024000の間の値を指定します。デフォルトは256000です。2-13.AUID(DKIM-Signatureヘッダ内の対応タグ:i=)
DKIM署名に使用するAUID(Agent or User Identifier)を設定します(任意)。デフォルトは空白です。入力値は、以下のメールアドレス形式である必要があります。また、(ドメインパート)はSDIDと同一、またはそのサブドメインである必要があります。
(ローカルパート)@(ドメインパート)
空白にした場合AUIDはDKIM-Signatureに現れませんが、この場合、DKIM(RFC6376)上は"@(SDID値)"であると見なされます。
3.よくあるご質問
Q1.DKIM署名の設定「待機時間」で、TMEmS/V1ECSはDNSに公開された公開鍵情報のどのタイミングでチェックしているのでしょうか。
TMEmS/V1ECSは、バックグラウンドで定期的(10分毎)に設定「鍵のペア」で指定された公開鍵情報の有無をチェックしています。
こちらの定期的なチェックでの確認後、「待機時間」で指定した時間が経過するとTMEmS/V1ECSは当該DKIM署名設定を使用したDKIM署名を開始します。
Q2.1つの「管理対象ドメイン」のDKIM署名設定で、複数のサブドメインのDKIM署名を実施することは可能でしょうか。
こちらは不可能です。TMEmS/V1ECSのDKIM署名設定で設定した「管理対象ドメイン」は、そのサブドメインには適用されません。複数サブドメインが存在する場合、サブドメイン毎にDKIM署名設定と対応する公開鍵のDNSへの公開を行っていただく必要があります。