在打击垃圾邮件时,我想检查电子邮件正文中是否包含指向网站的链接。
如果邮件确实包含链接,那么我想对 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?...
,所以我错过了什么?
噢!
建议:了解 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