Gibt es eine Möglichkeit procmail
(oder etwas anderes?), nach E-Mails zu suchen, bei denen die Felder from:
und to:
beide dieselbe Adresse enthalten? Und ist dies möglich, ohne dass jede einzelne E-Mail-Adresse in einem Rezept fest codiert werden muss?
Im Grunde versuche ich, E-Mails zu finden, bei denen der Absender die Mail an seine eigene Adresse schickt und dann alle anderen per BCC weiterleitet. Normalerweise verwende ich notmuch
und bin damit zufrieden, aber das, was ich hier erreichen möchte, funktioniert damit nicht. Ich notmuch
kann aber mit zusammenarbeiten, procmail
also hoffte ich, dass mir jemand, der sich procmail
wirklich gut auskennt, helfen und mir so das Erlernen eines ganz neuen Filtersystems für diese eine Sache ersparen könnte.
Antwort1
Dies ist möglich, erfordert allerdings einige eher obskure Procmail-Funktionen und Sie müssen natürlich verstehen, was Sie erreichen.
:0
* ^From:[ ]*\/[^ ].*
* $ ^To:[ ]*$\MATCH
{ ... actions ... }
Der \/
Capture-Operator sammelt die übereinstimmende Zeichenfolge in der speziellen Variable . In der nächsten Zeile suchen wir im Header MATCH
nach derselben Zeichenfolge . Dabei enthält die erfasste Zeichenfolge einen regulären Ausdruck, bei dem alle regulären Sonderzeichen in der Zeichenfolge maskiert wurden, um eine wörtliche Übereinstimmung zu gewährleisten. Der Modifikator ist im Rezept erforderlich, um die Interpolation von Procmail-Variablen in den regulären Ausdruck zu ermöglichen.To:
$MATCH
$\MATCH
$
Dabei wird das übliche [ ]*
(Leerzeichen oder Tabulator, Null oder mehr) verwendet, um Leerzeichen nach dem Doppelpunkt zu überspringen, und dann wird alles ab dem ersten Zeichen erfasst, das kein Leerzeichen ist.
In der Praxis bedeutet dies, dass die Header From:
und To:
identische Inhalte haben müssen. Wenn der Absender einen anderen „echten Namen“ eingibt (der technisch gesehen nur ein Kommentar ist), wird dieses Rezept nicht übereinstimmen. Zum Beispiel:
From: Myself <[email protected]>
To: Everyone <[email protected]>
Hier ist das E-Mail-Ende identisch, aber das gesamte Feld ist anders. Wenn Sie mit diesem Szenario zurechtkommen müssen, ändern Sie vielleicht den regulären Ausdruck, damit er bis zum ersten <
vor dem passt \/
, aber das hängt natürlich von den genauen Zeichenfolgen ab, die Sie abgleichen müssen; es gibt viele mögliche Variationen.