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