来自一家知名组织的垃圾邮件,该组织出售大量仿冒品,从无人机到 Roombas 等各种产品,使用 、 和 字段中的随机域From:
,Message-ID:
所有Reply-To:
域
都不同,甚至没有共同的尾随xyz.com
。(非垃圾邮件倾向于共享至少和.
的域名。)Message-ID:
Reply-To:
~/.procmailrc 中的配方可以检测到此类垃圾邮件,然后将其转发到垃圾邮件文件夹吗?
喜欢带有命名捕获组的正则表达式?
关于用'A'或'a'链接动作的东西?
递归调用procmail,如其手册页所建议的那样?
将邮件标题传递给以具有更好字符串处理的语言编写的脚本的“过滤器”?
例如:namebrandwigs.com、mysuburbankitchen.com、aliyun.com。
From [email protected] Wed Mar 17 09:27:54 2021
Return-Path: <[email protected]>
X-Original-To: ---
Delivered-To: ---
Received: from mysuburbankitchen.com (unknown [5.253.84.113])
by --- (Postfix) with ESMTP id 332025E236
for <--->; Wed, 17 Mar 2021 09:27:53 -0500 (CDT)
To: ---
Subject: drone with new features
Message-ID: <[email protected]>
Date: Wed, 17 Mar 2021 08:13:03 +0100
From: "Jake Allen" <[email protected]>
Reply-To: [email protected]
MIME-Version: 1.0
X-Mailer-Sent-By: 1
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Status: RO
<html>
<head>
</head>
<body>
<span style="display: block; text-align: left;"><span style="display:
block; text-align: left;">Hi,<br /><br /><span>Hope all is well.</span><br
/>We are contacting you today to let you know that we have got the
following new drone, ready to ship to worldwide customers.<span><span><br
/><br /></span></span></span></span><span style="display: block;
text-align: left;"><span style="display: block; text-align:
left;"></span></span><span style="display: block; text-align: left;"><span
style="display: block; text-align: left;"><span style="display: block;
text-align: left;"></span></span></span><span style="display: block;
text-align: left;">Explore new places and amp up your videography skills
with the our F9 4K HD camera drone.
...
其他示例,格式类似,但消息正文中缺少可标记文本:
- 来自momentwatch.com / musicley.com的皮革按摩椅
- 来自 mtndewkid.com / myhondafitev.com / constructiongear.com 的 Roomba
- 来自 hairrehablondon.com / hairocean.com / hotmail.com 的视频投影仪
基于一些有限的例子,很难想出任何具体的东西可以在今天起作用并在明天继续起作用。如果您的实际问题真的是“如何防止来自 Procmail 的垃圾邮件”,那么显而易见、简单且有据可查的答案是“运行像 SpamAssassin 这样的全谱垃圾邮件过滤器并检查其结果”。即使那样,您的准确率也可能永远不会是 100%;但是 SpamAssassin 为您基本上配置并忘记的工具做得不错。它广泛依赖于为垃圾邮件发送者使用的 IP 地址、URL 和其他网络资源提供动态信誉信息的外部服务,因此实际上在幕后进行了大量操作。
SpamAssassin wiki 上的 UsedViaProcmail有更多说明。简而言之,一旦您安装并配置了 SpamAssassin,请尝试类似
仅当您发送到需要锁定的邮箱时,第二个冒号
:0:
才正确(例如 mbox 文件,但绝对不是 Maildir 目录;但根据您问题中的示例,您似乎在 mbox 上)。如果您经常收到大垃圾邮件,可能会删除大小条件* < 512000
或调整数量。SpamAssassin 标准 Procmail 样板包括一个锁定文件,这在您的个人系统上是不必要的,并且在共享主机上可能是可疑的,以及一些奇怪的货物邪教巫术围绕着断线From
,我认为这实际上是不正确的。如果您需要针对您提供的样本的特定建议,请理解,即使是经过深入研究且绝对真实的事实,可以让您完全相信不会出现误报而丢弃这些特定消息,这对于处理任何其他问题几乎毫无用处消息,和/或明天或下周过时。
这是一个 Procmail 配方,它实现了我认为您可能会问的内容。
它使用评分,这是一个有点晦涩但偶尔有用的功能。
From:
简而言之,如果存在带有域名的标头(因为总是存在),我们分配 1 分,然后如果Reply-To:
orMessage-Id:
标头在@
.我预测这会有相当高的误报率,但如果您收到大量带有这种特定模式的垃圾邮件,它可能会为您提供价值,特别是如果您可以将其与白名单结合使用。
我仍然建议您
suspicious
定期检查该文件夹,并将任何误报找出回您的常规收件箱。这是使用您提供的示例运行的演示,而交付
/dev/null
只是为了演示。一个具体的问题是这不允许子域命中。
Message-id: <[email protected]>
允许发件人并不难,From: real name <[email protected]>
但相反的情况要棘手得多,因为在一般情况下,您无法真正知道From: sender <[email protected]>
域名是labels.here
(例如在.com
和.fr
TLD 中)还是many.labels.here
(例如在.co.uk
等.com.au
顶级域名)甚至更长(视情况而定)k12.place.name.us
和日本的一些县等)。更详细地说,为第一个配方行上的第一个命中
1^0
分配一个1
分数,而不是为额外的命中分配额外的分数。令牌从匹配的字符串中\/
捕获它之后的字符串,即@
在标题中最后一个符号之后的所有内容。然后在以下配方行中使用该MATCH
变量来引用此捕获的字符串;该语法$\MATCH
产生一个与文字字符串匹配的正则表达式转义模式。随后的配方有一个$
标志告诉 Procmail 将任何变量(即$MATCH
)插入到配方条件中,并有一个-1^0
评分指令为条件的第一次命中减去一个,如果再次匹配则什么也不做。手册页解释了所有这些结构,但可能相当密集;或许还可以查看更密集的Procmail 快速参考,但或许也可以更快地阅读和理解。
我将此作为单独的答案发布,以免将此处的内容与我的其他答案混淆,这基本上试图阻止您仅使用 Procmail 创建自己的垃圾邮件过滤器。