我有一个运行 amavis 和 SpamAssassin 的 postfix 服务器来帮助过滤垃圾邮件。被检测为垃圾邮件的邮件在发送到用户的 Maildir 时如下所示:
来自 tom@tom-mint 2013 年 3 月 15 日星期五 01:46:20 返回路径:<tom@tom-mint> X-原始至:[电子邮件保护] 送到了(送去了:[电子邮件保护] X-Virus-Scanned: Debian amavisd-new at my-server.com X-Spam-Flag:是 X-Spam 分数:6.463 X-垃圾邮件级别:****** X-Spam-Status:是,分数=6.463 tagged_above=2 required=6.31 测试=[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]自动学习=否 日期:2013 年 3 月 15 日星期五 01:46:19 -0400 到:[电子邮件保护] 主题:***垃圾邮件*** 你好 用户代理:Heirloom mailx 12.5 6/20/10 内容类型:text/plain;字符集=us-ascii 发件人:tom@tom-mint(汤姆) 状态:RO 买点伟哥!
请特别注意以 开头的主题***SPAM***
和X-Spam-Flag: YES
标题。
postfix
将这些邮件存储在特殊垃圾文件夹中的最佳配置方法是什么?
根据我的研究,似乎我需要使用与 Postfix 不同的邮件传递工具来实现此目的,但我不确定哪种方法最好。似乎有很多过时的信息,我想知道 Postfix 是否能够将消息放入文件夹中。
邮件目录都是 Maildir。
答案1
粗略浏览一下 postfix 的 local(8) 本地投递代理手册页,没有发现这种功能的迹象 - 正如预期的那样。这种任务通常被卸载到 procmail(可能通过 mailbox_command 指令),它可以处理您描述的任务,同时管理您的厨房水槽。procmail 的缺点是配置文件格式,优点是灵活性和大量可轻松找到的示例。如果最近出现了比 procmail 更好的东西,我不知道。
不过,就我而言,即使我找到了让 MTA 做你想做的事情的方法,我也不会走那条路,因为这种邮件分类事情有一种膨胀的方式,而且没有一个 MTA(据我所知:也许是 Exchange 有,谁知道呢)可以很好地充当灵活的消息处理程序/传递代理。
这是一个 procmail 配方,它将根据唯一的标题内容执行您想要的操作(其中 DEFAULT 是传送目录,通常类似于 $HOME/Mail/):
:0
* ^X-Spam-Flag: YES
$DEFAULT/.Spam/
编辑: (这假设 maildir 邮箱格式,如下方注释中所述。如果使用 mbox,则省略最后的斜杠)
答案2
正如 Alien Life Form 所说,这是 procmail 的工作。它不是邮件服务器本地投递代理的替代品;它是一个单独的进程,将被称为后MDA 已完成其工作。
每个想要使用 procmail 分类邮件的用户都需要.forward
在其主目录中创建一个名为的文件。该文件应包含以下内容:
"|exec /usr/local/bin/procmail || exit 75"
带有"
标志和所有东西。
ALF 已经发布了一个基本.procmail
文件,它将把带有垃圾邮件标签的邮件分类到一个单独的文件夹中。
答案3
您的邮件投递代理是什么(请参阅 main.cf mailbox_command)?如果 MDA 是 dovecot,它支持 Sieve IETF 标准(rfc5228),它可以比 procmail 做更多的事情,而不会暴露可能的安全漏洞。不要将 procmail 固定在 postfix/dovecot 上,sieve 是完全集成的。如果您使用 Courier,那么 procmail 是一个不错的解决方案。但是,您会发现 Pigeonhole 的 sieve/sievec 程序更快、更干净。
以下是一个简单的筛选脚本,用于识别您的垃圾邮件标头并将邮件放入垃圾箱文件中。
require "fileinto";
if header :comparator "i;ascii-casemap" :contains "Subject" "**SPAM**"
{
fileinto "Trash";
stop;
}