Procmail: 同じアドレスから送信されたメールを検索しますか?

Procmail: 同じアドレスから送信されたメールを検索しますか?

とフィールドの両方に同じアドレスが含まれているprocmailメールを検索する方法 (または他の方法) はありますか? また、レシピですべてのメール アドレスをハードコードしなくても検索できますか?from:to:

基本的に、送信者が自分のアドレスにメールを送信し、他の全員に BCC するメールを見つけようとしています。通常は を使用しnotmuch、それで満足していますが、ここで実現しようとしていることはできません。ただしnotmuch、 と連携して動作することはできます。そのため、非常に詳しい人が助けてくれて、この 1 つのことを行うためにまったく新しいフィルタリング システムを学ぶ必要がなくなることをprocmail期待しています。procmail

答え1

これは可能ですが、かなりわかりにくい Procmail 機能が必要であり、もちろん、何を達成しようとしているのかを理解する必要があります。

:0
*   ^From:[     ]*\/[^  ].*
* $ ^To:[   ]*$\MATCH
{ ... actions ... }

キャプチャ\/演算子は、一致する文字列を特殊変数 に収集しますMATCH。次の行では、To:ヘッダー内で同じ文字列を検索します。 には$MATCHキャプチャされた文字列が含まれ、$\MATCHには正規表現が含まれます。この文字列内の正規表現の特殊文字は、文字どおりに一致するようにエスケープされています。Procmail$変数を正規表現に補間できるようにするには、レシピに修飾子が必要です。

これは通常の[ ]*(スペースまたはタブ、0 個以上) を使用してコロンの後の空白をスキップし、最初の非空白文字からすべてを取得します。

実際には、これはFrom:To:ヘッダーの内容が同一でなければならないことを意味します。送信者が別の「実名」(技術的には単なるコメント)を入力した場合、このレシピは一致しません。たとえば、

From: Myself <[email protected]>
To: Everyone <[email protected]>

ここでは、電子メールの終端は同じですが、フィールド全体が異なります。このシナリオに対処する必要がある場合は、正規表現を変更して、<その前の最初の文字列まで一致させるとよいでしょう\/。ただし、これは一致させる必要のある正確な文字列によって決まります。さまざまなバリエーションが考えられます。

関連情報