我正在尝试编辑我的 .procmailrc 文件以摆脱垃圾邮件。
该帐户来自我学校的CS部门,部门内的所有电子邮件都有带括号的主题,例如:
[专业] 一些科目
或者:
[本科生] 其他科目
我收到了很多没有被过滤器捕获的垃圾邮件,但几乎所有垃圾邮件都不包含括号。我想将这些电子邮件移动到垃圾邮件文件夹中,但无法找出正则表达式。有任何正则表达式大师可以提供帮助吗?
Subject:
不包含左方括号的标头的简单 Procmail 配方很简单
:0 # Add a second colon if the spam box is an mbox folder
* ^Subject:[^[]*$
spam
这只是检查一个左方括号并忽略您可能收到仅包含右方括号的合法邮件的可能性(我认为它本身就是垃圾邮件)。
...但为了完整起见,我会提到,如果你想要一个右方括号,那是一种特殊情况,需要在字符类中进行特定排序(就像破折号需要先或最后才能消除歧义一个字符范围)。这种类型的常见字符类是[^][]
包含右方括号和左方括号的否定字符类。他们需要完全按照这个顺序才能工作;在任何其他位置,右方括号将关闭字符类。(你也不能在其中进行反斜杠转义;字符类中的反斜杠是文字。)
您可以.procmailrc
按特定顺序进行设置,以帮助完成您想要的。procmail
读取procmailrc
并停止匹配第一个配方。因此,您可以在文件开头进行所有常规处理,并在最后添加类似于以下内容的内容。
此示例测试主题是否存在[
并保留这些消息。任何与任何其他配方不匹配且主题中不包含 a[
的邮件都将被移动到spam-probably
(该示例使用一个good
文件夹来保存邮件,并使用一个spam-probably
文件夹将不匹配的邮件移动到 - 调整名称以适合您的设置)
:0: # keep mail with [ in 'good' folder
* ^Subject:.*\[
good
:0: # move unmatched to 'spam-probably' folder
spam-probably
注意:由于配方中没有条件行spam-probably
,procmail 会将以前未与配方匹配的所有消息移动到spam-probably
文件夹中。根据您想要匹配的紧度或松度,您实际上regexs
可以选择数十种来完成您的主题匹配。[
查看将完成您需要并根据需要替换的正则表达式。