我有一个服务器与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版本 :
- 新的ACL修饰符“remove_header”可以在路由器/传输处理消息之前删除标头。