Exim 对 DKIM 验证的误报

Exim 对 DKIM 验证的误报

我使用 exim4 的邮件服务器有一个 ACL 来检查 DKIM 签名。它接受所有内容,但会记录失败并将结果写入标头。

我正在从另一台服务器发送邮件,我相信该服务器正确添加了 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

我该如何调试为什么 exim onreceiver.example.org认为签名不好?

(我注意到 DKIM 签名包含许多不存在的标头。这可能是原因吗?)

编辑:添加详细信息:

  • 签署 exim:4.96-15+deb12u1。
  • 接收进出口:4.94.2-7~bpo10+1

答案1

我不认为“不好”消息表达了签名无法验证的任何特定原因。配置正确的身份验证结果标头:该中继进出口银行告诉你的一切通过$dkim_verify_reason

尝试确定哪个消息失败,我记得其他验证器的例子只在某些消息或消息部分大小(块对齐,<= 16KiB,> = 16MiB ..你的测试消息看起来很小)或行长度(你的测试消息看起来很整齐,尽管不寻常,折叠)上出现错误。

另外,请比较发送时的消息源(理想情况下,因为它是单独上传到邮箱的Sent)。它可能存在一些语法问题,在收到时已被丢弃,但对于签名来说却很重要。

思路:

  • 我在签名中看到一个尾随的分号,并且在最后的 b= 标签之前没有折叠,这有点不常见 - 测试较少,并且可能不是消息签名时的样子。
  • 我还看到一个现代 TLS 版本与一个古老的 exim 版本一起使用(所有版本的 Exim4.96 版之前的版本现已过时“”。)。我想知道您是否正在使用缺少上游已应用的相关修复的分销商版本。

我怀疑后者是导致你出现问题的原因,基于此补丁Debian 未应用奥尔兹特布尔到目前为止。如果是这样,它应该主要影响通过 BDAT over TLS 传输的小消息。

  1. 更新至较新版本的 exim - 可能需要升级 Debian,因为您已在使用反向移植 -或者
  2. 阅读或提交 Debian 错误报告,缺少的修复(链接至精选版本已准备好应用于 4.94.2)我怀疑有过错的人可能会被判定值得被拉,如果确实有过错的话 -或者
  3. 禁用分块支持(RFC 3030),如果这对你的用例没问题的话 -空的 chunking_advertise_hosts =不会向任何人宣布 BDAT 的可用性,这应该可以解决问题 - 但对于大消息来说可能会有很大的性能成本。

相关内容