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
答案1
原因
这clamassassin
是一个在 2003 年至 2007 年间开发的旧 Shell 脚本,而RFC 5322是较新的,可以追溯到 2008 年。因此,的作者clamassassin
詹姆斯·利克可能没有意识到这样的要求。
此外,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
例如,添加
FORMAIL=/usr/local/bin/mail-prepender.sh
结果
在 Debian 12 上进行了测试,其中标题的开头现在在干净的结果上看起来像这样:
Return-Path: <[email protected]>
X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on mail.example.net
X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00,DKIMWL_WL_MED,
DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_PASS,USER_IN_DEF_DKIM_WL
autolearn=ham autolearn_force=no version=4.0.0
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
当 ClamAV 检测到某些内容时,标头如下所示:
Return-Path: <[email protected]>
X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on mail.example.net
X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_PASS autolearn=ham
autolearn_force=no version=4.0.0
X-Virus-Status: Yes
X-Virus-Report: Win.Test.EICAR_HDB-1 FOUND
X-Virus-Checker-Version: clamassassin 1.2.4 with clamscan / ClamAV 1.0.3/27132/Sat Dec 23 11:40:46 2023