我们正在寻找一种能够通过使用 geoip 进行过滤来根据地理位置阻止垃圾邮件的方法。
背景:我们在美国以外很少有任何电子邮件通信,因此我们希望阻止美国以外的所有传入电子邮件,除了可能一两个国家。
经过一番谷歌搜索后,我发现了一些可能有效(或无效)的解决方案,但我想知道其他系统管理员目前正在做什么,或者他们会推荐什么作为解决方案。
这是我到目前为止发现的:
使用 PowerDNS 及其 GeoIP 后端,可以使用 geoip 进行过滤。通常这个后端用于帮助分配负载作为一种负载平衡,但我不明白为什么它也不能用来杀死垃圾邮件?
可能使用 Maxmind lite 国家数据库和一些脚本来完成类似的工作。
理想情况下,我正在寻找一种解决方案,它可以处理体面的负载并很好地扩展......不是我们所有人!;)
在此先感谢您的帮助!:-)
从这篇关于 SNARE 的研究论文中,我提出了这个建议:
我个人的观察反映了你的看法,并注意到即使在 2014 年的现在,地理位置仍然是垃圾邮件的一个很好的预测指标。正如其他人指出的那样,仅GeoIP 位置(国家或距离)并不是阻止连接的足够可靠的基础。但是,将 GeoIP 距离与有关连接的其他一些数据(例如 FCrDNS、HELO 主机名有效性、发送方操作系统(通过 p0f)和 SPF)结合起来提供了 99.99% 的可靠基础(例如,0.01% 的机会FP) 用于在 DATA 阶段之前拒绝 80% 的连接。
与一些 SMTP 测试(例如 zen.spamhaus.org 中的 DNSBL 列表)具有非常低的 FP 率不同,上述测试都不是拒绝连接的充分基础。这是属于该类别的另一种模式——信封发件人用户与信封收件人用户匹配。我注意到大约 30% 的垃圾邮件遵循这种模式:从:[email protected] 到:[email protected]。它在垃圾邮件中比在有效邮件流中更频繁地发生。另一种垃圾邮件发送者模式是来自域的不匹配的信封和标头。
通过启发式地对这些“出现垃圾邮件”的特征进行评分,可以组装一个极其可靠的过滤系统的基础。SpamAssassin 已经做了(或可以做)我所描述的大部分内容。但是您还要求提供一种能够处理足够负载和良好扩展的解决方案。虽然 SpamAssassin 很棒,但我在 3.4 版本说明中的任何地方都没有看到“大大减少了资源消耗”。
我在第一段中列出的所有测试都发生在 SMTP DATA 之前。结合这些早期测试为在没有任何误报的 SMTP DATA 之前拒绝垃圾邮件连接形成了充分的基础。在 SMTP 数据之前拒绝连接可以避免传输消息的带宽成本以及基于内容的过滤器(SpamAssassin、dspam、标头验证、DKIM、URIBL、防病毒、DMARC 等)的更重的 CPU 和网络负载。的连接。每个连接做更少的工作可以更好地扩展。
对于在 SMTP DATA 处不确定的较小邮件子集,允许继续进行连接,并且我使用来自内容过滤器的结果对邮件进行评分。
为了完成我所描述的所有内容,我对一个名为 Haraka 的基于 node.js 的 SMTP 服务器进行了一些修改。它的扩展性非常非常好。我编写了一个名为 Karma 的自定义插件,它可以进行启发式评分,并将所有加权分数放入一个配置文件中。要了解 karma 的工作原理,请查看karma.ini 配置文件。我得到了“比 gmail 更好”的过滤结果。
查看 FCrDNS、helo.checks 和 data.headers 运行的测试。他们可能会为您提供额外的过滤思路。如果您对通过廉价(数据前)测试可靠地检测垃圾邮件有进一步的想法,我很想听听他们的意见。
您需要问的其他问题:您可接受的假阳性和假阴性率是多少(您愿意丢失多少合法邮件,愿意接受多少垃圾邮件?)
您愿意接受哪些额外的延迟?一些非常有效的低虚假反垃圾邮件技术(例如灰名单)可以延迟邮件。这可能会激怒一些(不切实际地)期望电子邮件成为即时通信的用户。
在规划反垃圾邮件系统时,请考虑您希望将成本外部化的程度。例如,基于 ipfilter 的黑名单是无情的,但不会对任何其他系统产生重大影响。灰名单可以节省发件人和收件人的带宽,但会使邮件在远程队列中的时间更长。邮件退回消息和质询/响应系统可(ab)用于邮件炸弹不相关的第三方。缓送等技术通过故意长时间保持打开的 SMTP 连接来主动将成本外部化。DNSBL 要求您将一些控制权交给第三方(黑名单维护者),但最终作为邮件管理员,您有责任向您的用户和管理人员解释您的阻止策略。结果是每种技术都有道德考虑,而且它
您对配置错误的外部系统的容忍度如何?(例如那些没有 FCrDNS、损坏的 HELO/EHLO 字符串、未经授权的流水线、在临时故障代码 4xx 后未正确重试的那些等)
你想为这个问题投入多少时间、金钱、带宽和硬件?
没有一种技术是有效的,但协同的纵深防御方法可以显着减少入站垃圾。DNSBLs、URIBLs、灰名单、内容过滤和手动调整的白名单和黑名单在我的小域上运行良好,但我可以在拒绝的内容上更加自由。
除非最近情况发生了变化,否则按原产国将 IP 列入黑名单并不是非常有效。我有使用 ASN 和操作系统指纹(通过 p0f)来判断入站连接质量的想法,但没有追求它;统计数据看起来会很有趣,但我不相信它会比已经描述的标准技术更有用。使用 GeoIP、ASN 和 OS 指纹信息的好处是,虽然它们可能单独作为连接质量的弱预测指标,但它们在 TCP/IP 连接时可用,早在您到达 SMTP 层之前(fsvo“long”)。结合起来,它们可能会被证明是有用的,这将是有帮助的,因为垃圾邮件在接近最终用户时变得更加昂贵。
我不想成为一个反对者。'oddball' 字符编码和 GeoIP 信息可能与垃圾邮件有很好的相关性,但可能不够可靠,无法用作阻止邮件的单一标准。但是,它们很可能是 Spamassassin 等系统中的有用指标。要点是垃圾邮件防御是成本-风险-收益分析中的一个复杂问题,在实施或更改系统之前了解您的价值观是很重要的。
使用 Spamhaus ZEN 阻止列表 ( http://www.spamhaus.org/zen/ )之类的东西不是更好吗?如果您组织的电子邮件流量每天少于 100,000 个 SMTP 连接和 300,000 个 DNSBL 查询,则它是免费的。
当然,他们的使用要求(http://www.spamhaus.org/organization/dnsblusage.html)可能需要订阅数据提要,如果您每天进行更多的电子邮件流量,但在该使用级别(阅读罚款打印在页面底部)您可能不希望管理自己的阻止列表的管理负担。
还有用于 Linux 的 netfilter/iptables的geoip 补丁。如果是 Linux,您可以使用它为您的电子邮件服务器阻止 25。通过这个 iptables 补丁,您可以将 Linux 用作电子邮件服务器的防火墙。最好的部分是它是免费的:-)
在邮件服务器/应用程序级别使用 DNSBL 和在服务器级别使用 GEOIP 的组合应该可以为您删除大部分垃圾邮件,而无需实施垃圾邮件评分、假阳性等。
如果您的邮件服务器/公司仅接收来自少数几个已知国家(如美国、加拿大)的电子邮件,则尤其如此。
用于 Windows 的 Argosoft 邮件服务器在这方面做得很好,但我不知道类似的基于 linux 的解决方案。这就是为什么我建议在 Linux 上使用受信任的 MTA(最好使用 DNSBL),然后在服务器级别执行 GEOIP 解决方案。
希望这可以帮助。
我想您可能希望听到已经有商业反垃圾邮件供应商这样做。虽然 IME 它增加了您本国领土以外国家/地区的垃圾邮件“分数”,以防止过度阻止。
例如,可以很好地与 SpamAssassin 集成吗?
您还可以考虑电子邮件的字符集。
至于实施 - 有一些廉价的、商业上可获得的地理 IP 数据库。我倾向于“手动”集成这些 - 因此您至少可以让消息到达您知道发件人收件人对的位置,以便进行记录。
高温下,
汤姆
几年来,我一直在几个中等容量的邮件服务器上使用Sendmail和milter-greylist来实现这个目的,没有任何问题。在 graylist.conf 中配置所需的 GeoIP、SPF、白名单、DNSBL 等规则很容易,以选择性地强制执行灰名单。
这是一个在线设备,可与路由器和防火墙一起使用,以按国家/地区阻止 IP 流量,并以线路速度阻止 IP 黑名单。Arclight 是正确的,除非您愿意假设延迟增加和 TCP 连接中断,否则您需要像TechGuard 的 IP Blocker这样的专用设备来维持线速保护。TechGuard 还刚刚发布了有关 ACL 对路由器和防火墙的影响的数据。