首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spamassasin规则标记某些MX IP

Spamassasin规则标记某些MX IP
EN

Server Fault用户
提问于 2019-11-14 14:33:32
回答 1查看 548关注 0票数 1

我注意到大量的垃圾邮件与相同范围的IP相关。

所有垃圾邮件都有不同的HTML文本(这是英语的,但没有意义)和一些嵌入的图片(我阻止),但显然是机器生成的,内部格式非常相似。顺便说一句,所有链接和外部图片都被我的邮箱阻塞了。

我注意到,用于“from”地址域的MX都位于一个小范围的is中,它们都在同一个VPS服务'Node Outlet India LLP‘上。所以有人利用这个服务来招待一群垃圾邮件。

我想制定一条垃圾邮件刺客规则,上面写着:

  • 提取“从”域
  • 查找该域的MX
  • 查找那个MX的IP
  • 看上去像36.255.24.x/21吗?
  • 给它高分,例如+2

我使用运行在Linux上的spampd代理和垃圾邮件杀手。

为了澄清,下面是一个例子:垃圾邮件来自buymystuff@stufftobuy.com

源电子邮件通过SPF,DMARC和DKIM签署-所有合法-但它是垃圾邮件。仅凭这些支票,它的得分就像火腿一样好。

唯一的垃圾邮件就是内容。大多数HTML和领域外链接嵌入式图片和小文本,只有这些功能使它有一个垃圾邮件评分,但不是一个大的。这些电子邮件显然是为了避免反垃圾邮件措施而设计的。

我在stufftobuy.com上进行了MX查找,您得到了mail.stufftobuy.com,在mail.stufftobuy.com上执行了一个and查找,它从其中返回一个IPV4 --所有来自域MX记录指向的几个地址狂怒。

我需要做更多的分析,但似乎只有两个服务器场,一个在印度,另一个在土耳其。

在1000封电子邮件中,一个IPV4可能只出现两次。

我不能只是得分或阻止stufftobuy.com,因为实际的域名只能使用一次。下一条消息可能来自makecatvids.com或其他什么。

同样地,我不能盲目地阻止成千上万的IPV4在后缀,因为这将作出假设,ISP是坏的,而不是他们的客户之一。

更新:我可以看到未定义的存在,但我看不出一条规则如何提供给另一条规则。单次DNS查找是不够的。

EN

回答 1

Server Fault用户

发布于 2019-11-21 18:49:21

更重要的是:确保您使用的是发送方IP声誉,例如通过Spamhaus禅宗SpamCop阻塞列表。默认情况下,这些内容已经包含在SpamAssassin中(请参阅RCVD_IN_PBLRCVD_IN_BL_SPAMCOP_NET),只需确保正确加载了邮件::SpamAssassin::Plugin::DNSEval,并确保启用了网络测试(AskDNS也需要这样的测试)。

邮件::SpamAssassin::Plugin::AskDNS不能这样做。你需要编写你自己的插件来做你想要的事情。

然而,也许这种AskDNS的使用可以让您接近:

代码语言:javascript
复制
ifplugin Mail::SpamAssassin::Plugin::AskDNS

askdns   JM_SPF_HAS_36_255 _AUTHORDOMAIN_ TXT /\sip4:36\.255\.(?:2[0-4]|3[01])\./
describe JM_SPF_HAS_36_255 From header's SPF record blesses an IP in 36.255.24.0/21
score    JM_SPF_HAS_36_255 2.0

endif

这将检查来自域的报头的发送方策略框架 (SPF)记录。注意事项:

  • SPF是允许代表域发送邮件的主机列表(见下文)。
  • SPF检查SMTP连接的HELO & mail from命令中的域,而不是标头
  • SPF记录可以包含域,也可以包括其他记录等,但是这条规则只查看IPs,例如:v=spf1 ip4:198.51.100.21 mx a include:example.com ~all存在问题:。
    • 这里只显式地列出了一个IP,并且它不匹配
    • MX记录可能匹配,但它只被列为mx,我们无法将其解析为IP
    • A唱片也是一样
    • 同样适用于包含;也许它有一个a或另一个include:…,可以列出这个IP。

关于第一个问题: MX记录指的是接收邮件,所以我认为SPF允许发送主机的列表在一般情况下更相关,尽管我不能说出您的确切意图。

更新:您提到这些垃圾邮件是DKIM-signed。假设它们都共享相同的签名域,只需基于此阻止(不需要网络查找!):

代码语言:javascript
复制
header   JM_DKIM_EVIL_EXAMPLE_COM  DKIM-Signature =~ /\sd=evil\.example\.com;/
describe JM_DKIM_EVIL_EXAMPLE_COM  Message has DKIM signed by evil.example.com
score    JM_DKIM_EVIL_EXAMPLE_COM  2.0

您发现的每个签名域(d=…)都需要这些规则中的一条,我希望这是一个很小的数目。

或者,您可以使用regex交替。例如:

/\sd=(?:(?:evil|spammer)\.example\.com|bad\.example\.info);/将阻止d=evil.example.com;d=spammer.example.com;d=bad.example.info;

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/991845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档