运行shell命令的SpamAssassin自定义规则

时间:2014-10-01 10:49:41

标签: linux spamassassin

我已经在SpamAssassin上阅读了一段时间并且学到了很多,但我似乎无法找到一种方法来创建一个规则,其中可以执行第三方脚本以获得自定义规则。 这必须是用户不是全球性的。

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

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

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

2 个答案:

答案 0 :(得分:1)

开箱即用,SpamAssassin没有这样的设施,但是既然你在编程网站上提问,我认为你自己编写一些代码并不陌生。

SpamAssassin中的插件工具专为此类设计而设计。您可以创建一段Perl代码,为SpamAssassin分析的每条消息调用该代码,并且您可以访问Perl可以访问的所有内容。

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

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

答案 1 :(得分:0)

开箱即用,有一个新的TxRep插件可自动识别您最近看过的发件人。还有一组whitelist and blacklist options

如果你想自己实现一些东西,我想你会很快发现exec机制不能很好地扩展。也许尝试制作自己的DNSBL。这可以使用自定义代码和任何DNS服务器(例如bind,dnsmasq等)或为此目的设计的DNS服务器来完成,例如RBLDNSDDnsBlocklists上的SA wiki有关于如何将其挂钩到SA的说明。

通常,寻求此类解决方案的人没有正确配置DNSBL。在尝试构建自己的项目之前,我先看看它。