使用postfix将垃圾邮件发送到一个特殊的文件夹

我有一个运行amavis和SpamAssassin的postfix服务器来帮助过滤垃圾邮件。 被传送到用户的Maildir中时,被检测为垃圾邮件的邮件如下所示:

来自tom @ tom-mint 2013年3月15日星期五01:46:20
返回path:<tom @ tom-mint>
 X-Original-To:[email protected]
交付给:[email protected]
 X-Virus-Scanned:Debian amavisd-new在my-server.com
 X-Spam-Flag:YES
 X-Spam-Score:6.463
 X-Spam-Level:******
 X-Spam-Status:是,score = 6.463 tagged_above = 2 required = 6.31
    testing= [DRUGS_ERECTILE = 2.221,FH_FROMEML_NOTLD = 0.18,
     FSL_HELO_NON_FQDN_1 = 0.001,HELO_NO_DOMAIN = 0.001,RCVD_IN_PBL = 3.558,
     RDNS_DYNAMIC = 0.363,TO_NO_BRKTS_DYNIP = 0.139] autolearn = no
date:2013年3月15日星期五01:46:19 -0400
到:[email protected]
主题:*** SPAM ***你好
用户代理:传家宝mailx 12.5 6/10/10
内容types:text / plain; 字符集= US-ASCII
来自:tom @ tom-mint(Tom)
状态:RO

买一些伟哥!

特别要注意的是, ***SPAM***以及X-Spam-Flag: YES标题。

什么是最好的方式来configurationpostfix将这些邮件存储在一个特殊的垃圾文件夹?

从我的研究来看,似乎我需要使用不同于postfix的邮件传递工具才能实现这一目标,但我不确定哪种方法最好。 似乎有很多过时的信息,我想知道postfix是否能够将消息放入文件夹或不。

邮件目录都是Maildir。

对postfix的本地(8)本地交付代理手册页进行粗略的细读,并没有像预期的那样显示出这种types的能力。 这种任务通常是卸载到procmail(可能通过mailbox_command指令),它可以处理您描述的任务,同时pipe理您的厨房水槽。 procmail的缺点是configuration文件格式,灵活性和大量容易find的例子。 如果最近出现了比procmail更好的东西,我不知道。

不过,就我的钱而言,即使我find了用MTA来做自己想做的事情的方法,我也不会沿着这条路走,因为这样的邮件sorting方式有一种balooning方式,没有MTA(我知道:也许交换,谁知道)可以做一个灵活的消息处理/交付代理的工作。

这是一个procmail的配方,根据唯一的标题内容(默认是传送目录,通常是$ HOME / Mail /)来做你想做的事情:

 :0 * ^X-Spam-Flag: YES $DEFAULT/.Spam/ 

正如外星生命forms所说,这是一个procmail的工作。 这不是邮件服务器的本地交付代理的替代; 这是一个独立的过程,在MDA完成工作会被调用。

每个想要使用procmail对邮件进行分类的用户都需要在其主目录下创build一个名为.forward的文件。 该文件应该包含以下内容:

 "|exec /usr/local/bin/procmail || exit 75" 

完成"标志和所有。

ALF已经发布了一个基本的.procmail文件,该文件将把带有垃圾邮件标记的邮件整理到一个单独的文件夹中。

什么是邮件投递代理(请参阅main.cf mailbox_command)? 如果MDA是dovecot,它支持Sieve IETF标准(rfc5228),它可以比procmail做更多的事情,而不会暴露可能的安全漏洞。 不要螺栓procmail后缀/ dovecot,筛是完全集成。 如果你使用Courier,那么procmail是一个好的解决scheme。 但是,您会发现Pigeonhole的sieve / sievec程序更快,更清洁。

以下是一个简单的筛选脚本,用于识别垃圾邮件头并将邮件放入垃圾箱文件。

 require "fileinto"; if header :comparator "i;ascii-casemap" :contains "Subject" "**SPAM**" { fileinto "Trash"; stop; }