ClamAV 的电子邮件病毒过滤器包装器clamassassin
将其标头附加到邮件标头。
X-Virus-Status: No
X-Virus-Checker-Version: clamassassin 1.2.4 with clamscan / ClamAV 1.0.3/27134/Mon Dec 25 11:40:06 2023
最好是任何传送邮件的 MTA 仅在标头前面添加,如RFC 5322, 3.6所建议的那样:
然而,就本规范而言,当传输或转换消息时,头字段不应重新排序。更重要的是,跟踪头字段和重发头字段不得重新排序,并且应该保留在消息前面的块中。更多信息请参见第 3.6.6和3.6.7节。
例如,spamassassin
将其X-Spam-*
标头添加到现有标头上方。为什么clamassassin
不这样做,以及如何改变这种行为?例如,如果.procmailrc
具有以下内容,我希望这些标头出现在同一位置。
:0 fw
| clamassassin
:0 fw
| spamassassin
原因
这
clamassassin
是一个旧的 shell 脚本,开发于 2003 年至 2007 年之间,而RFC 5322则更新一些,可以追溯到 2008 年。因此, 的作者clamassassin
James Lick 可能没有意识到此类要求。此外,
clamassassin
利用 Procmail 的邮件(重新)格式化程序来添加标头。由于只有, , &全部附加到标题中,因此在不对脚本进行重大重写的情况下不可能改变此行为。formail(1)
formail
-a
-A
-i
-I
解决方法
作为解决方法,我编写了一个小脚本 ,
mail-prepender.sh
可用于替换formail
的用例clamassassin
。它只是将作为任何这些标志给出的所有标头添加到前面,并保持其他所有内容不变。标志-x
&-X
也被实现为clamassassin
用于从原始标头中-c -x
提取标头。Subject
在基于 Debian 的系统上,该脚本是可配置的
/etc/default/clamassassin
,您可以通过添加该脚本的路径作为路径,formail
例如:结果
在 Debian 12 上进行了测试,在干净的结果中,标头的开头现在看起来像这样:
当 ClamAV 检测到某些内容时,标头如下所示: