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!

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top