在处理之前剥离SpamAssassin标头

我有一个服务器与exim和SpamAssassin运行cPanel / WHM。 我一直在注意到一个问题,电子邮件进入伪造spamassassin头绕过一些过滤。 我想删除所有的SpamAssassin标题,然后通过spamassassin,然后过滤到收件箱/垃圾邮件文件夹。

searchnetworking,我能find的唯一类似的例子是2004年 。 然而,这个用户和我的eximconfiguration是非常不同的。 我不知道如何应用它。 我可以针对包含消息的文件运行formail来删除标题,但是我不知道如何让exim做到这一点。

只是提供一个例子,一个消息将带有这样的标题:

X-Spam-Status: No, score=1.3 X-Spam-Score: 13 X-Spam-Bar: + X-Ham-Report: Spam detection software, running on the system "serv02.example.com", has identified this incoming email as possible spam. The original message *snip* X-Spam-Flag: NO 

我的SpamAssassin会将这些标题添加到消息中:

 X-Spam-Status: Yes, score=6.8 X-Spam-Score: 68 X-Spam-Bar: ++++++ X-Spam-Report: Spam detection software, running on the system "serv02.example.com", has identified this incoming email as possible spam. The original message *snip* X-Spam-Flag: YES 

但是,由于exim vfilter规则会读取第一个X-Spam标题,所以电子邮件将在用户的收件箱中而不是在垃圾邮件文件夹中。

看看SpamAssassins的remove_header或者clear_headers configuration文件选项是否会做你想做的。

cPanel的Exim使用存储在/ etc / vfilters中的vfilter,并依赖于X-Spam-Bar头。 其他系统可能使用X-Spam-Flag-Status或Score来确定是将邮件保存在收件箱,垃圾邮件文件夹还是将其删除。 不幸的是,vfilter会使用第一场比赛,这是这个问题的关键。


过时的解决scheme发现http://wiki.exim.org/ExiscanExamples#Replacing_foreign_Spamassassin_headers_with_local_ones

添加到ACL的某处警告spam = exiscan:true set acl_m0 =($ spam_bar)$ spam_score set acl_m1 = $ spam_report

这将在系统filter中为以下处理适当地设置ACLvariables:

join系统filter:

 if first_delivery then # ... headers remove X-Spam-Score:X-Spam-Report:X-Spam-Checker-Version:X-Spam-Status:X-Spam-Level if $acl_m2 is not ""dd then headers add "X-Spam-Score: $acl_m0" headers add "X-Spam-Report: $acl_m1" endif endif 

在cPanel中,系统filter是/ etc / cpanel_exim_system_filter和acl_mXvariables是不同的,所以让我们把它们弄清楚。 将此添加到cpanel_exim_filters的末尾

 # work out our acl variables! if first_delivery then headers add "X-acl-m0: $acl_m0" headers add "X-acl-m1: $acl_m1" headers add "X-acl-m2: $acl_m2" headers add "X-acl-m3: $acl_m3" headers add "X-acl-m4: $acl_m4" headers add "X-acl-m5: $acl_m5" headers add "X-acl-m6: $acl_m6" headers add "X-acl-m7: $acl_m7" end 

—得到:X-acl-m1:user1 X-acl-m2:1 X-acl-m3:X-acl-m4:X-acl-m5:X-acl-m6:X-acl- M7:

所以我find了exim.conf的一部分,它添加了头文件并查看了所有的$ spamvariables。 我怀疑他们是否继续? 让我们找出来。

 headers add "X-Test-Spam-Subject: ***SPAM*** $h_subject" headers add "X-Test-Spam-Score:$spam_score" headers add "X-Test-Spam-Score-Int: $spam_score_int" headers add "X-Test-Spam-Bar: $spam_bar" headers add "X-Test-Spam-Report: $spam_report" 

所以$ spam_score_int与$ h_subject一起被继续,而不是spam_bar,这是至关重要的

 X-Test-Spam-Subject: ***SPAM*** test X-Test-Spam-Status: X-Test-Spam-Score: 33 X-Test-Spam-Bar: X-Test-Spam-Report: 

但是..我意识到,标题通过,这可能工作

 headers add "X-Test-Spam-Bar: $h_X-Spam-Bar" 

结果是:

 X-Test-Spam-Bar: + +++ 

所以$ h头文件都有收到的头文件和头文件。

解?

将自定义垃圾邮件filter添加到exim.conf中,然后在cpanel_exim_filter中将其交换出来

 log_message = "SpamAssassin as ${acl_m1} detected message as spam ($spam_score)" add_header = X-989Spam-Subject: ***SPAM*** $h_subject add_header = X-989Spam-Status: Yes, score=$spam_score add_header = X-989Spam-Score: $spam_score_int add_header = X-989Spam-Bar: $spam_bar add_header = X-Spam-Report: $spam_report add_header = X-989Spam-Flag: YES add_header = X-989Spam-Status: No, score=$spam_score add_header = X-989Spam-Score: $spam_score_int add_header = X-989Spam-Bar: $spam_bar add_header = X-Ham-Report: $spam_report add_header = X-989Spam-Flag: NO log_message = "SpamAssassin as ${acl_m1} detected message as NOT spam ($spam_score)" 

好吧,现在让这更持久。 首先,复制你的cpanel_exim_systemfilter:

 cp /etc/cpanel_exim_system_filter /etc/custom_exim_system_filter 

login到WHM主页>>服务configuration>> Eximconfiguration编辑器,然后单击高级编辑器

向下滚动并更改垃圾邮件标题部分,如下所示。 请注意,您只是将X-Spam标题更改为X-989Spam标题(只要自定义exim-system-filters匹配,您就可以使用自定义名称)。由于configuration文件可能随时间而改变,确定你只修改了add_header行。

 add_header = X-989Spam-Subject: ***SPAM*** $h_subject add_header = X-989Spam-Status: Yes, score=$spam_score add_header = X-989Spam-Score: $spam_score_int add_header = X-989Spam-Bar: $spam_bar add_header = X-Spam-Report: $spam_report add_header = X-989Spam-Flag: YES 

– 和 –

 add_header = X-989Spam-Status: No, score=$spam_score add_header = X-989Spam-Score: $spam_score_int add_header = X-989Spam-Bar: $spam_bar add_header = X-Ham-Report: $spam_report add_header = X-989Spam-Flag: NO 

保存您的configuration并等待WHM刷新。

返回Main >>服务configuration>> Eximconfiguration编辑器>>filter

将系统filter文件更改为指向/ etc / custom_exim_system_filter

被接受的答案可能是你在2012年能做的最好的,或者是2012年通用的exim版本,但是现在exim确实有一个可以在ACL中使用的remove_header指令。 它添加了4.82版本 :

  1. 新的ACL修饰符“remove_header”可以在路由器/传输处理消息之前删除标头。