Procmail:尋找從相同位址傳送到相同位址的電子郵件?

Procmail:尋找從相同位址傳送到相同位址的電子郵件?

有沒有辦法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]>

在這裡,電子郵件終端是相同的,但整個欄位是不同的。如果您需要應對這種情況,也許可以更改正規表示式以匹配<之前的第一個\/,但這顯然取決於您需要匹配的精確字串;有許多可能的變化。

相關內容