2014-10-01 294 views
1

我一直在阅读上的SpamAssassin有一段时间了,也学到了很多,但我似乎无法找出一个办法,我无法找到一个方法来创建规则,其中第三方脚本可以SpamAssassin的自定义规则执行到自定义规则。 这将不得不是基于用户而不是全局的东西。运行shell命令

我想运行域和电子邮件地址的额外验证。

我希望建立一个信誉系统,其中如果根据联系人列表和其他事情检查域或电子邮件地址。

我已经考虑修改配置文件来添加正则表达式规则,但这似乎是一种复杂的方式来做到这一点。更优选的方案是简单地运行第三方脚本,该脚本返回每个域和电子邮件地址的分数。

回答

1

开箱即用,垃圾杀手有没有这样的设施,但既然你问一个编程网站,我想你是不是外星来写一些自己的代码。

SpamAssassin的插件工具就是为这类事情设计的。您可以创建一段Perl代码,该代码将针对SpamAssassin分析的每条消息进行调用,并且您可以访问Perl有权访问的所有内容。

特别是,看它调用外部程序并返回其分析结果的SpamAssassin的pyzor plugin。这里有相当多的样板文件,但是你需要开始的部分是为helper_app_pipe_open调用获得正确的参数(在我上面链接的3.4.0版本的第282行中)。这些东西都是可配置的,所以你甚至可以将路径重新配置为pyzor作为你自己的程序来证明概念。请注意,它需要接受check参数和其他一些参数,以及标准输入中来自临时文件的消息。

Mail::SpamAssassin::Plugin.pm包含了插件API POD文档。模块树中的其他文件也包含有用的文档;尤其是,您可能想参考Mail::SpamAssassin.pmMail::SpamAssassin::Conf.pm中的一般文档来了解可以传递给插件的配置参数。

+0

如何通过调用exec来添加规则呢?我正在尝试将此操作完成为用户配置,以便不需要对SA执行任何更改。 – transilvlad 2014-10-01 13:31:58

+0

那么你为什么要发布到编程网站?但无论如何,我会重复这个想法来使用'pyzor'插件,而是让它调用你自己的检查工具。你可能需要一些包装来使它像pyzor插件所期望的那样,但它不应该太难。 – tripleee 2014-10-01 13:34:47

0

开箱即用的,有一个新的TxRep插件,自动识别你最近访问过的发件人。还有一个whitelist and blacklist options的集合。

如果你想自己实现的东西,我想你很快就会发现,一个exec机制将无法很好地扩展。也许尝试自己制作DNSBL。这可以通过自定义代码和任何DNS服务器(例如bind,dnsmasq等)或者使用专为此目的而设计的DNS服务器完成,如RBLDNSD。关于DnsBlocklists的SA维基有关于如何将其挂接到SA的说明。

通常,寻求这种解决方案的人没有正确配置DNSBL。在尝试构建自己的项目之前,我会仔细研究一下。