ビュー:

InterScan Messaging Security Suite (InterScan MSS) や InterScan Messaging Security Virtual Appliance (IMSVA) では次のいずれかの場合に DKIM (DomainKeys Identified Mail) の署名を検証します。

  • ポリシー > ポリシーリストにある「グローバルDKIM適用ルール」が有効となっており、そのドメインリストに From ヘッダのドメインが該当する場合
  • ポリシー > 承認済みリスト > DKIM承認済みリスト または ポリシー > DKIM承認済みリスト で DKIM 承認済みリストが有効となっており、その承認済みリストに From ヘッダのドメインが該当する場合

製品における DKIM 署名の検証は2段階に分かれており、以下のふたつの条件をそれぞれクリアした場合に最終的に署名の検証に「成功」します。

条件:
(a) DKIM 署名の検証 (認証) に成功する
(b) From ヘッダと AUID ("i=" タグ) または SDID ("d=" タグ) のドメインが一致する

したがって、段階 1 で DKIM 署名の検証 (認証) に成功したとしても、段階 2 のドメインチェックでドメインが一致しなければ最終的な署名の検証結果は失敗となります。

DKIM (DomainKeys Identified Mail) の仕組み

まず DKIM (DomainKeys Identified Mail) による認証の仕組みを簡単に説明します。

DKIM の仕様は RFC 6376 にインターネット標準として規定されています。詳しくはWeb等のリソースを参照してください。

メッセージへの署名

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=" タグにこれらをもとに生成された署名データが記録されます。

DNS 上の公開鍵

署名したドメイン (SDID) の DNS には公開鍵が DKIM レコードとして登録されています。

上記ヘッダ例では "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 から公開鍵を入手し、デジタル署名を検証します。InterScan MSS や IMSVA であれば「第1段階」のチェックが該当します。

例えば "h=" タグに指定されたヘッダが変更されていたり、本文の内容が変更されていれば認証に失敗します。

DKIM 署名の検証 (X-IMSS-DKIM-Authentication-Result の追加)

DKIM-Signature ヘッダを基に DKIM 署名を検証し、その検証結果に応じてメッセージヘッダに X-IMSS-DKIM-Authentication-Result ヘッダを追加します。

検証に成功した場合

DKIM 署名の検証に成功した場合、次のように X-IMSS-DKIM-Authentication-Result ヘッダに "dkim=pass" と記載されます。

X-IMSS-DKIM-Authentication-Result: imsva91.trendmicro.com; sigcount=1;
	dkim=pass(2048-bit key) header.i=@example.com state=0

検証に失敗した場合

DKIM の署名がない (DKIM-Signature ヘッダがない)、メッセージの件名や内容が変更されている、一時的に DNS サーバに接続できないなど、DKIM 署名の検証に失敗した場合、次のような X-IMSS-DKIM-Authentication-Result ヘッダが挿入されます。

DKIM の署名がない
X-IMSS-DKIM-Authentication-Result: imsva91.trendmicro.com; sigcount=0
メッセージの件名が変更されている
X-IMSS-DKIM-Authentication-Result: imsva91.trendmicro.com; sigcount=1;
	dkim=fail(signature verify fail) header.i=@example.com state=252
メッセージの内容が変更されている
X-IMSS-DKIM-Authentication-Result: imsva91.trendmicro.com; sigcount=1;
	dkim=fail(body hash mismatch) header.i=@example.com state=250
DNS サーバに接続できない
X-IMSS-DKIM-Authentication-Result: imsva91.trendmicro.com; sigcount=1;
	dkim=temperror(dns unavailable) header.i=@example.com state=100

第2段階: ドメインチェック

DKIM-Signature ヘッダには以下のように "d=" タグ (SDID) にドメイン (example.com) が記載されています。また、"i=" タグ (AUID) が記載されている場合があります。

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com;
	s=default; t=1555040205; 
...

一方、From ヘッダには通常、送信者の情報が表示され、以下の例であればドメインは example.com となります。

From: "John Doe" <john@example.com>

ドメインチェックでは AUID または SDID と From ヘッダのドメインをチェックします。

DKIM-Signature ヘッダに "i=" タグ (AUID) が存在すれば From ヘッダと AUID のドメインを比較します。DKIM-Signature ヘッダに "i=" タグ (AUID) が存在しなければ From ヘッダと SDID ("d=" タグ) のドメインを比較します。

前述の DKIM-Signature ヘッダと From ヘッダのように、From ヘッダと SDID のドメインが一致すればドメインチェックに成功します。

しかし、From ヘッダのメールアドレスのドメインが sales.example.com であったり、trendmicro.com であれば From ヘッダと SDID のドメインが異なるため、ドメインチェックに失敗します。

ドメインチェックの無効化

IMSVA 9.1 では Patch 3 (b1962) 以降、ドメインチェックを無効化できるようになりました。以下の手順を実施することで第1段階 DKIM の署名の検証のみで成功か失敗かを判断します。

  1. IMSVA サーバに root でログインして PostgreSQL の psql コマンドを実行し、データベースにログインします。

    # /opt/trend/imss/PostgreSQL/bin/psql imss sa
    
  2. 次に以下の SQL コマンドを実行して行を登録します。

    imss=# INSERT INTO tb_global_setting VALUES ('dkim','DomainNoNeedChecked','1','imss.ini','');
    INSERT 0 1
    

    設定を元に戻すには次のコマンドを実行して追加した行を削除します。

    imss=# DELETE FROM tb_global_setting WHERE name = 'DomainNoNeedChecked' and section = 'dkim';
    DELETE 1
    
  3. 下記コマンドを実行して psql のセッションを終了します。

    imss=# \q
    
  4. 最後に次のコマンドを実行して検索サービスを再起動します。

    # /opt/trend/imss/script/S99IMSS restart