我已经在 SpamAssassin 上阅读了一段时间并学到了很多东西,但我似乎无法找到一种方法,我无法找到一种方法来创建一个可以为自定义规则执行 3rd 方脚本的规则。这必须是基于用户而不是全球性的东西。
我想对域和电子邮件地址进行额外验证。
我希望建立一个信誉系统,在该系统中,是否根据联系人列表和其他内容检查域或电子邮件地址。
我已经考虑修改配置文件以添加正则表达式规则,但这似乎是一种复杂的方法。更优选的方案是简单地运行一个返回每个域和电子邮件地址的分数的第 3 方脚本。
我已经在 SpamAssassin 上阅读了一段时间并学到了很多东西,但我似乎无法找到一种方法,我无法找到一种方法来创建一个可以为自定义规则执行 3rd 方脚本的规则。这必须是基于用户而不是全球性的东西。
我想对域和电子邮件地址进行额外验证。
我希望建立一个信誉系统,在该系统中,是否根据联系人列表和其他内容检查域或电子邮件地址。
我已经考虑修改配置文件以添加正则表达式规则,但这似乎是一种复杂的方法。更优选的方案是简单地运行一个返回每个域和电子邮件地址的分数的第 3 方脚本。
开箱即用,SpamAssassin 没有这样的功能,但是既然您在编程网站上询问,我认为您对自己编写一些代码并不陌生。
SpamAssassin 中的插件工具就是为这类事情而设计的。您可以创建一段 Perl 代码,该代码会为 SpamAssassin 分析的每条消息调用,并且您可以访问 Perl 可以访问的所有内容。
特别是看一下调用外部程序并将其分析结果返回给 SpamAssassin的pyzor 插件。那里有相当多的样板,但您需要开始的部分是为helper_app_pipe_open
调用获取正确的参数(在 3.4.0 版的第 282 行,这是我在上面链接的内容)。这些东西是可配置的,因此您甚至可以重新配置pyzor
您自己的程序的路径作为概念证明。请注意,它需要check
在其标准输入上接受一个参数和一些其他参数,以及来自临时文件的消息。
Mail::SpamAssassin::Plugin.pm包含插件 API 的 POD 文档。模块树中的其他文件也包含有用的文档;特别是,您可能需要参考Mail::SpamAssassin.pm和Mail::SpamAssassin::Conf.pm中的一般文档,以了解可以传递给插件的配置参数。
开箱即用,有一个新的TxRep插件可以自动识别您最近看到的发件人。还有一组白名单和黑名单选项。
如果你想自己实现一些东西,我想你很快就会发现一种exec
机制不能很好地扩展。也许尝试制作自己的DNSBL。这可以通过自定义代码和任何 DNS 服务器(例如 bind、dnsmasq 等)或为此目的设计的 DNS 服务器(例如RBLDNSD )来完成。DnsBlocklists上的 SA wiki提供了如何将其挂接到 SA 的说明。
通常,寻求这种解决方案的人没有正确配置 DNSBL。在尝试构建自己的项目之前,我会先研究一下。