丢弃不是来自我的内核-ML补丁邮件,发送给我或作为我邮件的回复?

时间:2014-06-02 14:23:56

标签: mutt procmail

由于linux内核邮件列表非常嘈杂,我想丢弃从LKML发送到我邮箱的所有邮件,但这些邮件不是来自我,也不是来自我或作为我的邮件的答案。我已经做了一些过滤,并将所有补丁邮件(包括主题开头的[PATCH)重定向到另一个收件箱,作为“普通”LKML邮件。但它仍然太多了。

如何使用procmail执行此操作?

我有什么atm:

:0
* ^Sender:\ linux-kernel-owner@vger\.kernel\.org
* (PATCH|patch)
$MAILDIR/ml.kernel_org.linux-kernel.patches/

1 个答案:

答案 0 :(得分:1)

这里真正的挑战是明确如何可靠地识别回复你所写内容的消息。您是否满意排除To:Cc:自己的邮件?

:0
* ^Sender: linux-kernel-owner@vger\.kernel\.org\>
* ! ^From: Your Self <you@example\.net>
* ! ^TO_you@example\.net\>
/dev/null

(显然,编辑地址以匹配您的邮件客户端真正放置的地址)。

或许你有一个虚荣域,在这种情况下(正确构建的)回复在References:开头会有一个容易识别的你的Message-Id吗?

:0
* ^Sender: linux-kernel-owner@vger\.kernel\.org\>
* ! ^From: Your Self <you@example\.net>
* ! ^TO_you@example\.net\>
* ! ^References:[  ]*<[^<>@]*@yourdomain\.example\.net>
/dev/null

(方括号内的空格应该是制表符和空格)。

或者您可以在References:中的任何位置扩展一下以查找您的域名,如果您愿意,还可以包含对自己的回复的回复。

或者您可以保留所有外发邮件ID的本地副本,并在References:中查找它们,但这已经是一项重大工作,如果您不能使用,我只会指出这种情况任何上述内容。 (我相信它之前已被更详细地描述过,可能在Procmail mailing list上。)

顺便说一句,我会将“补丁”规则更改为仅检查Subject:行。任何其他标题中的“补丁”匹配极有可能是误报。如果你想检查身体,你需要额外的标志,也许是这样的:

:0
* ^Sender: linux-kernel-owner@vger\.kernel\.org\>
{
  :0
  * ! B ?? \<patch\>
  * ! ^Subject:(.*\<)?patch\>
  { }  # empty "then", just so we can continue to "else"
  :0E
  $MAILDIR/ml.kernel_org.linux-kernel.patches/

  # While we are inside these braces, let's continue with other LKML stuff
  :0
  * ! ^From: Your Self <you@example\.net>
  * ! ^TO_you@example\.net
  /dev/null

  # Any additional LKML recipes? Add them here

  # Anything which falls through here is regular LKML
  :0
  $MAILDIR/ml.kernel_org.linux-kernel/
}

(显然可以通过多种不同的方式进行重构。请记住De Morgan's laws NOT (A OR B)<=> NOT A AND NOT B。)

作为一项安全措施,您可能希望查找实际上带有补丁作为附件的消息,而不是过滤关于此类消息的讨论?这也可能变得非常复杂,因为有许多不同的方法可以将补丁表示为MIME附件(有些也是完全在线发送,在常规text/plain部分中以其他文本形式发送)但这不是也是不可逾越的,只是重大的苦差事。