有没有办法procmail
(或其他方法?)来搜索from:
和to:
字段都包含相同地址的电子邮件?是否可以在不需要对菜谱中的每个电子邮件地址进行硬编码的情况下完成?
基本上我试图找到发件人将邮件发送到他们自己的地址然后密件抄送其他人的电子邮件。通常我会使用notmuch
并且对此感到满意,但它无法实现我在这里想要实现的目标。notmuch
可以一起工作procmail
,所以我希望procmail
真正了解的人可以提供帮助,从而使我无需学习全新的过滤系统来完成这件事。
答案1
这是可能的,尽管它需要一些相当晦涩的 Procmail 功能,当然,您需要了解您要实现的目标。
:0
* ^From:[ ]*\/[^ ].*
* $ ^To:[ ]*$\MATCH
{ ... actions ... }
捕获\/
运算符将匹配的字符串收集到特殊变量中MATCH
。在下一行,我们在To:
标头中搜索相同的字符串。其中$MATCH
包含捕获的字符串,$\MATCH
包含一个正则表达式,其中字符串中的任何正则表达式特殊字符都已被转义以便按字面匹配。配方上需要修饰符$
,以便允许将 Procmail 变量插值到正则表达式中。
这使用通常的[ ]*
(空格或制表符,零个或多个)来跳过冒号后的空格,然后抓取从第一个非空格字符开始的所有内容。
实际上,这意味着From:
和To:
标头必须具有相同的内容。如果发件人输入不同的“真实姓名”(技术上这只是一条评论),则此配方将无法匹配。例如,
From: Myself <[email protected]>
To: Everyone <[email protected]>
在这里,电子邮件终端是相同的,但整个字段是不同的。如果您需要应对这种情况,也许可以更改正则表达式以匹配<
之前的第一个\/
,但这显然取决于您需要匹配的精确字符串;有许多可能的变化。