无法使用 SpamAssassin 检测电子邮件中的 Web 链接

问题描述 投票:0回答:1

在打击垃圾邮件时,我想检查电子邮件正文中是否包含指向网站的链接。

如果邮件确实包含链接,那么我想对 SpamHaus 或任何类似的 DNS 服务进行 DNS 查找,以检查该链接是否指向具有表单

127.x.x.x
上的 A 记录的服务器。

请参阅此处 SpamHaus 使用的 IP 地址示例

我检测链接的第一次尝试是创建一个正则表达式,用于查找邮件正文是否包含以

http://
https://
开头并以
/
?
结尾的任何内容。

我最终使用 RegEx101.com 得到了以下正则表达式:

https?:\/\/((\w|\d)+\.)+\w+

如果我猜对了,这应该意味着它匹配任何包含字母数字字符的域,或者只是一个 IP 地址。

正则表达式匹配具有以下语法的任何字符串。

  • http
    开头,后跟可选的
    s
  • 然后它匹配以下
    ://

然后匹配:

  • 它匹配包含任何字符 [a-z] 或数字 [0-9] 后跟句点的任何内容,并且此模式必须至少匹配一次。这是链接中的域名或子域名。

  • 然后匹配字符 [a-z] 至少一次。这是域名的 TLD 部分。

最后:

如果链接以

/
?
结尾则匹配。


我很清楚链接不需要有子路径。

这是改天的问题。 :-)

类似:我还将省略对 ipv4 和 ipv6 地址链接的支持。 :-)

我不关心

/
?
之后的任何内容,因为它对以下DNS查找没有影响。

这导致我将以下行添加到

local.cf

body       BADLINKS     /https?:\/\/((\w|\d)+\.)+\w+/i
describe   BADLINKS     Email contains weblinks
score      BADLINKS     0.1

重新启动 SpamAssassin 后,我尝试通过运行以下命令来测试 SpamAssassin 是否匹配规则:

cat linktest | spamc -R

文件

linktest
包含一封已确认垃圾邮件,正文中有 3 个链接。

但是我看不到我的测试被触发了?

这是运行命令的输出:

 pts rule name              description
---- ---------------------- --------------------------------------------------
 1.1 URIBL_GREY             Contains an URL listed in the URIBL greylist
                            [URIs: sendgrid.net]
 0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                            mail domains are different
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 0.0 HTML_MESSAGE           BODY: HTML included in message
 0.1 MIME_HTML_ONLY         BODY: Message only has text/html MIME parts
-0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
-0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from
                            envelope-from domain
 0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                            valid
 0.0 T_KAM_HTML_FONT_INVALID Test for Invalidly Named or Formatted
                            Colors in HTML
 0.8 FROM_FMBLA_NEWDOM28    From domain was registered in last 14-28
                            days
-0.0 DKIMWL_WL_MED          DKIMwl.org - Medium trust sender

我使用的邮件包含以下文本:

 <img src=3D"https://u11846957.ct.sendgrid.net/wf/open?...">

双引号内的链接应该匹配,除了结尾

/wf/open?...
,所以我错过了什么?

regex spam-prevention spamassassin
1个回答
0
投票

噢!

建议:了解 SpamAssassin 规则中

body
rawbody
的工作原理之间的区别。

我在local.cf中使用

body
时,规则不匹配。

我需要使用的是

rawbody
,如下所示:

rawbody    BAD_LINKS     /https?:\/\/((\w|\d)+\.)+\w+/i
describe   BAD_LINKS     Email contains weblinks
score      BAD_LINKS     0.1

重新启动 SpamAssassin 后,我得到以下结果:

 pts rule name              description
---- ---------------------- --------------------------------------------------
-0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
                            [149.72.232.26 listed in wl.mailspike.net]
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                            mail domains are different
 0.1 MIME_HTML_ONLY         BODY: Message only has text/html MIME parts
 0.0 HTML_MESSAGE           BODY: HTML included in message

 0.1 BAD_LINKS              RAW: Email contains weblinks <<<--- My rule

-0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from
                            envelope-from domain
 0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                            valid
-0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 1.1 URIBL_GREY             Contains an URL listed in the URIBL greylist
                            [URIs: sendgrid.net]
 0.0 T_KAM_HTML_FONT_INVALID Test for Invalidly Named or Formatted
                            Colors in HTML
 0.8 FROM_FMBLA_NEWDOM28    From domain was registered in last 14-28
                            days
-0.0 DKIMWL_WL_MED          DKIMwl.org - Medium trust sender
© www.soinside.com 2019 - 2024. All rights reserved.