Filtern Sie E-Mails, indem Sie mit procmail meinen Namen in „An“ enthalten
-
12-12-2019 - |
Frage
Mit procmail möchte ich alle eingehenden E-Mails, die nicht meinen Namen („John Doe“) im Feld „An“ enthalten, in den Ordner „Junk“ verschieben.
Die folgende Regel scheint jedoch keine Wirkung zu haben, obwohl ich den regulären Ausdruck in Online-Test-Apps gründlich getestet habe, um sicherzustellen, dass er dem entspricht, was er sollte:
# Filter spam if the name "John Doe" is not in "To"
:0:
* ^(?!To:.*John\sDoe).*
.Junk/
Falls es von Interesse ist, meine gesamte Procmail-Regeldatei lautet:
# Filter mail using SpamAssassin
:0fw: spamassassin.lock
* < 256000
| /usr/bin/spamassassin
# Filter spam based on "Spam-Level"
:0:
* ^X-Spam-Level: \*\*
.Junk/
# Filter spam if the name "John Doe" is not in "To"
:0:
* ^(?!To:.*John\sDoe).*
.Junk/
Warum funktioniert meine Regel nicht?
Vielen Dank für jede Hilfe!
Lösung
Weil Perl-Lookaheads nicht zum Regex-Repertoire von Procmail gehören.
Versuchen Sie stattdessen Folgendes.
:0
* ! ^To:.*John[ ]+Doe
.Junk/
Das Leerzeichen in [] sollte ein Leerzeichen und ein Tabulator sein;Die \s
Perlismus wird ebenfalls nicht unterstützt.
Möglicherweise ist es besser, Ihre E-Mail-Adresse als Filterkriterium zu verwenden und möglicherweise die ^TO_
Spezielles Makro zur Abdeckung von Cc:usw.Sie können Bcc immer noch nicht verarbeiten:Natürlich auf Ihr Konto.