由于linux内核邮件列表非常嘈杂,我想丢弃从LKML发送到我邮箱的所有邮件,但这些邮件不是来自我,也不是来自我或作为我的邮件的答案。我已经做了一些过滤,并将所有补丁邮件(包括主题开头的[PATCH
)重定向到另一个收件箱,作为“普通”LKML邮件。但它仍然太多了。
如何使用procmail执行此操作?
我有什么atm:
:0
* ^Sender:\ linux-kernel-owner@vger\.kernel\.org
* (PATCH|patch)
$MAILDIR/ml.kernel_org.linux-kernel.patches/
答案 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
部分中以其他文本形式发送)但这不是也是不可逾越的,只是重大的苦差事。