Exim の DKIM 検証における偽陰性

Exim の DKIM 検証における偽陰性

exim4 を使用する私のメールサーバーには、DKIM 署名をチェックするための ACL があります。すべてを受け入れますが、失敗をログに記録し、結果を含むヘッダーを書き込みます。

私は別のサーバーからメールを送信していますが、そのサーバーは DKIM 署名を正しく追加していると思います。(たとえば、Gmail と Outlook のアドレスにメールを送信し、ヘッダーを検査したところ、両方のシステムで DKIM が合格でした。) しかし、私のメールサーバーは次のように言っていますbodyhash_mismatch

私のメールサーバーでは、DKIM が失敗であると常に表示されるわけではありません。

これがメールです。ドメインを変更しました:

  • 例:これはメイン組織のドメインであり、から:ヘッダーと署名者のドメインです。公開鍵は DNS で公開されます。
  • 送信者.example.orgこれはメールを送信し、DKIMヘッダーを作成するサーバーです。復路ヘッダ。
  • 受信者.example.orgこれは私のメールサーバーのドメインで、DKIMが検証されています。ここにヘッダーX-dkim-checkが追加され、次のテキストdomain=$dkim_cur_signer
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: from mail.receiver.example.org
    by mail.receiver.example.org with LMTP
    id t8rHGepc52SOVA8ADCPZSA
    (envelope-from <[email protected]>)
    for <[email protected]>; Thu, 24 Aug 2023 14:36:42 +0100
Received: from sender-rdns.example.org ([1.2.3.4] helo=sender.example.org)
    by mail.receiver.example.org with esmtps  (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    (Exim 4.94.2)
    (envelope-from <[email protected]>)
    id 1qZAVv-004DMU-00
    for [email protected]; Thu, 24 Aug 2023 14:36:42 +0100
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
    d=example.org; s=220151210; h=Sender:Message-Id:Subject:From:To:Date:
    Reply-To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
    Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
    :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
    List-Subscribe:List-Post:List-Owner:List-Archive;
    bh=ecGWgWCJeWxJFeM0urOVWP+KOlqqvsQYKOpYUP8nk7I=; b=GTY2HZVje81tRJ0/xKFNUk5d7/
    9wE7CGtwmz2APM5VTDKY6q+qIbwhCRNzc6IWZ4j0Y9FOtnuVBeNR1I5xbOuqPaf62MYQZJFjLQ3/J
    PNpOpS3i1Yd3NCZUs1iB/Q8N+ii73FrvD5k1AA8F5yzJhVeaposgbkvU5vv1s/KgqTIA=;
Received: from localhost ([127.0.0.1] helo=sender.example.org)
    by sender.example.org with esmtp (Exim 4.96)
    (envelope-from <[email protected]>)
    id 1qZAVt-001EhO-2k
    for [email protected];
    Thu, 24 Aug 2023 14:36:41 +0100
Date: Thu, 24 Aug 2023 14:36:41 +0100
To: [email protected]
From: [email protected]
Subject: test Thu, 24 Aug 2023 14:36:41 +0100
Message-Id: <[email protected]>
X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
Sender: [email protected]
X-dkim-check: DKIM test failed: (domain=example.org), signature is bad.

This is a test mailing

receiver.example.orgexim が署名が不正であると判断する理由をデバッグするにはどうすればよいでしょうか?

(DKIM 署名には存在しないヘッダーが多数含まれていることに気づきました。これが理由でしょうか?)

編集: 詳細を追加:

  • exim に署名: 4.96-15+deb12u1。
  • 受信試験: 4.94.2-7~bpo10+1

答え1

「不正」というメッセージは、署名が検証できなかった理由を特に表しているとは思えません。適切なAuthentication-Resultsヘッダーを設定してください。eximがあなたに伝えていることすべて経由$dkim_verify_reason

特定してみてくださいどれのメッセージが失敗する場合、他の検証ツールが特定のメッセージまたはメッセージ部分のサイズ (ブロック整列、<=16KiB、>=16MiB など、テスト メッセージは小さいようです) または行の長さ (テスト メッセージは、異常ではありますが、きちんと折りたたまれているようです) でのみバグが発生する例を覚えています。

また、送信されたメッセージ ソース (理想的には、Sentメールボックスに個別にアップロードされたメッセージ ソース) を比較します。受信時に破棄された構文上の問題があった可能性がありますが、署名には重要でした。

アイデア:

  • 署名の末尾にセミコロンがあり、最後の b= タグの前に折り返しがないのがわかりますが、これはあまり一般的ではありません。テストが不十分で、署名されたときのメッセージの状態とは異なる可能性があります。
  • また、古いeximバージョンで使用されている最新のTLSバージョンも見ました(「Eximのすべてのバージョンバージョン4.96より前のバージョンは現在廃止されています)。アップストリームですでに適用されている関連する修正が欠落しているディストリビューターのビルドを使用しているのではないかと思います。

私は後者があなたの問題を引き起こしているのではないかと疑っています。このパッチDebianでは適用されないオールドステーブルこれまでのところ。もしそうなら、それは主に TLS 経由で BDAT 経由で送信される小さなメッセージに影響を与えるはずです。

  1. exim の最新リリースにアップデートします - すでにバックポートを使用している場合は、Debian のアップグレードが必要になる可能性があります -または
  2. Debian のバグレポートを読んだり提出したりする、不足している修正(リンク先厳選されたバージョンは 4.94.2 に適用可能です) 実際にここで過失があった場合、責任を問われる可能性があると私は考えています -または
  3. チャンクのサポート(RFC 3030)を完全に無効にします(使用例で問題ない場合は) -空の chunking_advertise_hosts =BDAT の可用性を誰にも通知しませんが、これで問題は解決するはずです。ただし、大きなメッセージの場合はパフォーマンスにかなりの影響が出る可能性があります。

関連情報