我们正在寻找一种能够通过使用 geoip 进行过滤来根据地理位置阻止垃圾邮件的方法。
背景:我们很少与美国境外有任何电子邮件通信,因此我们希望阻止除一两个国家之外的所有美国境外的来电电子邮件。
经过一番谷歌搜索后,我发现了一些可能有效(或无效)的解决方案,但我想知道其他系统管理员目前正在做什么或他们会推荐什么解决方案。
以下是我目前发现的内容:
使用 PowerDNS 及其 GeoIP 后端,可以使用 geoip 进行过滤。通常,此后端用于帮助分配负载,作为一种负载平衡,但我不明白为什么它不能用于消除垃圾邮件?
可能使用 Maxmind lite 国家数据库和一些脚本来完成类似的工作。
理想情况下,我正在寻找一种可以处理适当负载并能很好地扩展的解决方案......我们不都是这样吗!;)
在此先感谢您的帮助! :-)
答案1
还有geoip 补丁适用于 Linux 的 netfilter/iptables。如果您的电子邮件服务器是 Linux,您可以使用它来阻止 25。您可以使用此 iptables 补丁将 Linux 用作电子邮件服务器的防火墙。最好的部分是它是免费的 :-)
答案2
由此关于 SNARE 的研究论文,我给出以下要点:
对于普通邮件来说,90% 的邮件传输距离约为 4,000 公里或更短。而对于垃圾邮件来说,只有 28% 的邮件会停留在这个范围内。
我的个人观察与你的看法一致,并指出即使到了 2014 年,地理位置仍然是垃圾邮件的极佳预测因素。正如其他人指出的那样,GeoIP 位置(国家或距离)独自的是不是阻止连接的足够可靠基础。但是,将 GeoIP 距离与有关连接的其他一些数据(例如 FCrDNS、HELO 主机名有效性、发送方操作系统(通过 p0f)和 SPF)相结合,可以提供 99.99% 的可靠基础(即 0.01% 的 FP 概率),以拒绝 80% 的连接前数据阶段。
与某些 SMTP 测试(例如 zen.spamhaus.org 中的 DNSBL 列表)不同,这些测试的 FP 率非常低,上述任何一项测试都不足以成为拒绝连接的充分依据。以下是属于该类别的另一种模式——信封发件人用户与信封收件人相符用户。我注意到大约 30% 的垃圾邮件遵循以下模式:来自:[电子邮件保护]到:[电子邮件保护]. 确实如此远的垃圾邮件中出现的频率比有效邮件流中出现的频率高。垃圾邮件发送者的另一个模式是来自域的不匹配的信封和标头。
通过启发式地对这些“垃圾邮件出现”特征进行评分,可以构建一个极其可靠的过滤系统的基础。SpamAssassin 已经可以(或可以)实现我所描述的大部分功能。但您还要求一种能够处理足够负载并具有良好扩展性的解决方案。虽然 SpamAssassin 很棒,但我没有在 3.4 版发行说明的任何地方看到“大幅减少资源消耗”。
我在第一段中列出的所有测试都发生在 SMTP 数据之前。结合这些早期的测试,可以充分地在 SMTP 数据之前拒绝垃圾邮件连接,而不会出现任何误报。在 SMTP 数据之前拒绝连接可以避免传输消息的带宽成本以及基于内容的过滤器(SpamAssassin、dspam、标头验证、DKIM、URIBL、防病毒、DMARC 等)对绝大多数连接的更重的 CPU 和网络负载。每个连接的工作量少得多,扩展性更好。
对于 SMTP DATA 中不确定的较小消息子集,允许连接继续,并且我会使用内容过滤器的结果对消息进行评分。
为了实现我所描述的一切,我对一个名为 Haraka 的基于 node.js 的 SMTP 服务器进行了一些黑客攻击。它的扩展性非常好。我编写了一个名为 Karma 的自定义插件,它可以进行启发式评分,并且我已将所有加权分数放入配置文件中。要了解 karma 的工作原理,请查看karma.ini 配置文件。我一直得到“比 Gmail 更好”的过滤结果。
看看 FCrDNS、helo.checks 和 data.headers 运行的测试。它们可能会为您提供额外的过滤想法。如果您有更多使用廉价(预 DATA)测试可靠地检测垃圾邮件的想法,我很想听听。
答案3
您需要问的其他问题:您可接受的假阳性和假阴性率是多少(您愿意丢失多少合法邮件以及您愿意接受多少垃圾邮件?)
您愿意接受多少额外的延迟?一些非常有效的低误报反垃圾邮件技术(例如灰名单可能会延迟邮件。这可能会激怒一些(不切实际地)期望电子邮件能够立即进行通信的用户。
在规划反垃圾邮件系统时,请考虑您希望将多少成本转嫁到外部。例如,基于 ipfilter 的黑名单是不可原谅的,但不会对任何其他系统产生实质性影响。灰名单节省发件人和收件人的带宽,但会使邮件在远程队列中停留更长时间。邮件退回消息和质询/响应系统可能会被(滥用)用于对不相关的第三方进行邮件轰炸。诸如 tarpitting 之类的技术会通过故意长时间保持开放的 SMTP 连接来积极地将成本转嫁到外部。DNSBL 要求您将一定程度的控制权让渡给第三方(黑名单维护者),但最终作为邮件管理员,您有责任向用户和管理层解释您的阻止政策。结果是,每种技术都伴随着道德考量,重要的是要意识到您对他人的影响。
您对错误配置的外部系统的容忍度有多高?(例如没有 FCrDNS 的、损坏的 HELO/EHLO 字符串的、未经授权的流水线的、在临时故障代码 4xx 后无法正确重试的,ETC。)
您愿意投入多少时间、金钱、带宽和硬件来解决这个问题?
没有任何一种单一的技术是有效的,但协同的纵深防御方法可以大大减少入站垃圾。DNSBL、URIBL、灰名单、内容过滤和手动调整的白名单和黑名单在我的小型域上效果很好,但我可以更自由地拒绝。
除非情况最近有所改变,否则按原产国将 IP 列入黑名单的效果并不好。我曾想过使用 ASN 和 OS 指纹(通过 p0f)来判断入站连接的质量,但并没有付诸实施;统计数据看起来很有趣,但我并不认为它会比已经描述的标准技术更有用。使用 GeoIP、ASN 和 OS 指纹信息的好处是,虽然它们单独来看可能只是连接质量的弱预测因素,但它们在 TCP/IP 连接时就可用,远在到达 SMTP 层之前(fsvo“long”)。结合起来,它们可能会被证明是有用的,而且会很有帮助,因为垃圾邮件在接近最终用户时变得更难阻止。
我并不是想唱反调;“古怪”的字符编码和 GeoIP 信息可能与垃圾邮件有很好的关联,但可能不够可靠,不能作为阻止邮件的单一标准。然而,它们在 Spamassassin 这样的系统中可能是有用的指标。要点是,垃圾邮件防御在成本风险收益分析中是一个复杂的问题,在实施或更改系统之前,了解您的价值观很重要。
答案4
在邮件服务器/应用程序级别使用 DNSBL 并在服务器级别使用 GEOIP 的组合应该可以为您删除大部分垃圾邮件,而无需实施垃圾邮件评分、误报等。
如果您的邮件服务器/公司仅接收来自少数已知国家(例如美国、加拿大)的电子邮件,则尤其如此。
Argosoft Windows 邮件服务器在这方面做得很好,但我不知道有类似的基于 Linux 的解决方案。这就是为什么我建议在 Linux 上使用受信任的 MTA(最好使用 DNSBL),然后在服务器级别执行 GEOIP 解决方案。
希望这可以帮助。