我使用 OpenDKIM 来验证进入我邮件服务器的签名邮件,并将其用作垃圾邮件插件(如果 dkim 损坏,邮件将被归类为垃圾邮件)。但是,我收到很多 DKIM 损坏(签名验证失败)的误报,主要原因是邮件列表软件添加了自己的标题/修改了内容等。
我想知道 OpenDKIM 中是否有任何内置功能(如白名单)可以让我减少误报,因为不可能联系每个邮件列表的每个管理员并说他们的设置不正确而破坏了 DKIM。
示例标题如下:
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: from localhost (localhost [127.0.0.1])
by example.com (Postfix) with ESMTP id 6AEAD20DC
for <[email protected]>; Sat, 12 Oct 2013 23:51:05 +0200 (CEST)
X-Virus-Scanned: amavisd-new at qhost.pl
Received: from example.com ([127.0.0.1])
by localhost (example.com [127.0.0.1]) (amavisd-new, port 10024)
with LMTP id Ly8eSJhPPnln for <[email protected]>;
Sat, 12 Oct 2013 23:51:04 +0200 (CEST)
Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19])
by example.com (Postfix) with ESMTP id 1B86E20DB
for <[email protected]>; Sat, 12 Oct 2013 23:51:04 +0200 (CEST)
Authentication-Results: example.com;
dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b=qOy78FPq;
dkim-adsp=none (unprotected policy)
Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com)
by huckleberry.canonical.com with esmtp (Exim 4.76)
(envelope-from <[email protected]>)
id 1VV754-0003E4-AB; Sat, 12 Oct 2013 21:50:38 +0000
Received: from mail-pd0-f182.google.com ([209.85.192.182])
by huckleberry.canonical.com with esmtp (Exim 4.76)
(envelope-from <[email protected]>) id 1VV74z-0003Dp-8S
for [email protected]; Sat, 12 Oct 2013 21:50:33 +0000
Received: by mail-pd0-f182.google.com with SMTP id r10so5800218pdi.13
for <[email protected]>;
Sat, 12 Oct 2013 14:50:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
h=mime-version:in-reply-to:references:date:message-id:subject:from:to
:cc:content-type;
bh=KsrgBYUoHW9iFEkIxojUNYYil4nlGAF8VpF6y+iwNd4=;
b=qOy78FPqJq/UqF2WTo50Z+qfLPjsweQqu6r6nnmoeMnnx7FGp7jaFfCD83FObGSjDU
TFHC8/+LU4PfV1xrAqDYHuTvvQbIxHwD7xGSYiEjYGPuHYln+dGd0Y7Kp7NGCWrega9m
8W6iKf8QiggPYj4JJpweB9dThWvbytVrDPjy9aHPAHHvPbZJ1mj7yNMjydPwJJnJ/wId
4qTu961jZZV5FuG+yatDW1imSbYO97HeeZnAIvNRpMQhMZbLbeY1bLVePbBwQ+hbBurU
f+kqRjk15s5a+ih/HNRI1KeCQFqYsca3Pa6WvLJN0PCjPpTxCV886FatSR8SzTZaUaxx
MkVg==
MIME-Version: 1.0
X-Received: by 10.66.218.226 with SMTP id pj2mr29160511pac.62.1381614632237;
Sat, 12 Oct 2013 14:50:32 -0700 (PDT)
Received: by 10.68.143.69 with HTTP; Sat, 12 Oct 2013 14:50:32 -0700 (PDT)
In-Reply-To: <CAKnT5bMdetLwWU1Q4RQ_NdKDLDUgq8H0zRNawXs8rWNiXW0nVw@mail.gmail.com>
References: <CADFCDMTBhMxn+e4OJvZD7QN1joYrhCR3-CgH2weEhOSu36UkrQ@mail.gmail.com>
<CAKnT5bMdetLwWU1Q4RQ_NdKDLDUgq8H0zRNawXs8rWNiXW0nVw@mail.gmail.com>
Date: Sun, 13 Oct 2013 00:50:32 +0300
Message-ID: <CAHyzMMutO3_4wKNT-G3=-m+bHQTiqoT74OWBNis=kMRXAPWfSg@mail.gmail.com>
Subject: Re: nothing here
From: nobody <[email protected]>
To: nobody <[email protected]>
Cc: "Translators, Ubuntu" <[email protected]>
X-BeenThere: [email protected]
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: Discussion about translating Ubuntu
<ubuntu-translators.lists.ubuntu.com>
List-Unsubscribe: <https://lists.ubuntu.com/mailman/options/ubuntu-translators>,
<mailto:[email protected]?subject=unsubscribe>
List-Archive: <https://lists.ubuntu.com/archives/ubuntu-translators>
List-Post: <mailto:[email protected]>
List-Help: <mailto:[email protected]?subject=help>
List-Subscribe: <https://lists.ubuntu.com/mailman/listinfo/ubuntu-translators>,
<mailto:[email protected]?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1762773400059964515=="
Errors-To: [email protected]
Sender: [email protected]
我修改了上述消息(删除了 IP 和登录信息),因此它可能确实有一个损坏的 DKIM,但最初它没有受到影响 - 只有通过邮件列表 sofware @ ubuntu.com
那么,有没有办法设置 OpenDKIM 以更加宽容/忽略/以不同的方式验证此类邮件的 DKIM 签名?
答案1
有一种标准机制可以使 DKIM 验证对格式修改(例如通过过滤器或中继)更具容忍度,但它必须在发送端而不是接收端完成,并且它所做的只是对空格更改之类的事情变得更加宽容,而不是对实际消息的更改。基本上,您可以在签名时为标头和正文选择宽松(更宽容)和简单(更严格)模式,验证系统稍后将使用适当的模式来成功验证。这不能在接收端进行修改,因为不可能知道使用不同的处理模式签名会是什么样子。
发送方的签名系统选择在签名中包含或排除哪些标头,因此如果您知道中继或列表将修改或删除标头,则发送方应将其排除在验证之外。
然而鉴于邮件列表通常会更改消息和标头,包括主题等重要标头、来自原始发件人的 DKIM 标头应该验证失败。
理想情况下,邮件列表软件应该能够识别 DKIM,它会删除旧的 DKIM 标头并用自己的标头替换它,并相应地更改发件人标头,这样现在实际上就由发件人而不是原始发件人对邮件负责。
如果没有这个,如果您是接收端,您所能做的就是将特定服务器列入白名单。
对于 DKIM 的采用,这是一个先有鸡还是先有蛋的场景:很少有人会在接收端强制执行 DKIM 不匹配,因为这会产生误报,但这会减慢 DKIM 的采用速度,因为邮件列表主机等各方几乎没有压力去解决这些问题。目前,如果您在接收端严格执行 DKIM 不匹配,那么您仍然有点像实验鼠,尽管 DKIM 已经存在多年了。邮件主机似乎更常见地只是使用 DKIM 不匹配作为其垃圾邮件检测的一个因素,在我看来,这对 DKIM 的采用是不利的,但我理解这背后的先有鸡还是先有蛋的问题。