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