Versiebt

Mein Webhoster Manitu hat ein neues Webhosting-Paket mit vielen Verbesserungen und eines davon ist, dass Mailfilter nun nicht mehr auf procmail basieren sondern auf Sieve. Und obwohl es ein Konvertierungsskript gibt das procmail-Rezepte auf Sieve umstellen soll funktioniert das nicht so wie es sein sollte. Man merkt das an den Fehlermeldungen im Sieve-Log und daher ist es Zeit sich dieses Themas mal manuell zu bearbeiten.

Wir reden hier von serverseitiger Mail-Filterung bei der der Mail-Server sich die Mail anschaut und entsprechend eines Regelwerkes in Ordner sortiert. Nicht zu verwechseln mit den clientseitigen Mail-Filtern die nur laufen wenn z.B. Euer Thunderbird aktiv ist. Bislang hatte ich einige Rezepte in procmal und wie oben erwähnt funktioniert die automatische Umstellung eigentlich nicht, also habe ich das mal manuell umgestellt. Das hier soll als einfaches Beispiel dienen, wie man von procmail nach Sieve umstellen kann.

Procmail1 ist regelbasiert und die Filter-Kriterien sind als „reguläre Ausdrücke“ definiert. Sieve2 ist eine Filter-Spache welche zwar bei Bedarf auch „reguläre Ausdrücke“ kann, aber auch schon mit Stringvergleichen arbeiten kann. In den folgenden Beispielen nehme ich nun einfach meine Promail-Regeln und zeige wie ich sie in Sieve umgesetzt habe.

Filtern nach Empfänger

Da ich oft Paypal verweende landen die Mails von Paypal bei mir in einem IMAP Ordner der Paypal heißt. In Procmail sieht das so aus:

Das „:0“ in der ersten Zeile kündigt den Start eineer neuen Regel an. Zeilen mit dem Sternchen am Anfang definieren eine Regel, hier also dass der „From“-Heder irgendwo die Mail Adresse „service@paypal.de“ enthält, wobei der „.“ mit einem Backslash „escaped“ wurde, denn ein einzelner „.“ in einer Regex steht für jedes beliebige Zeichen. In der letzten Zeile steht dann das Ziel der Mail, der Ordner „Paypal“ der hier mit einem „.“ am Anfang stehen muss.

In Sieve sieht diese Regel nun etwas anders aus:

Wir gucken nach Adressen und zwar in „from“ sollte „service@paypal.de“ stehen, also hier als String und nicht als regulärer Ausdruck, daher muss ich den „.“ auch nicht „escapen“. Wenn die Bedingung zutrifft, dann wird im Block zwischen den geschweiften Klammern angegeben, was zu tun ist, in dem Fall also die Mail im Ordner „Paypal“ ablegen.

Mails nach Schlüseslwörtern filtern

Wenn man z.b. was bei Ebay kauft, dann kommt erst mal die Bestellbestätigung und dann eine Versandnachricht usw. Alles was mit Vesand zu tun hat will ich automatisch in einen Ordner „Warten_auf“ sortierten. In Procmal sieht das so aus:

In Procmail haben wir hier jeweils zwei Bedingungen und die Handlungsanweisung wird nur dann ausgeführt, wenn beide Bedingungen zutreffen (logisches UND). Wir gucken also einmal nach „Bestllunge zugestellt“ und das andere mal nach „Update zur Bestellung“. In Sieve löst man so ein logisches UND mit dem Konstrukt „allof“:

Hier sind die Procmal-UNDs mit „allof“ umgsestzt und wir schauen nun mit „:contains“ nach Sub-Strings in der Adresse und dem Subject. Abgelegt wird das dann in „Warten_auf“ und danach heißt es „stop“ um die Bearbeitung dieser Mail abzubrechen. Denn der nächste Filter sortiert Mails wieder in den Ordner „Ebay“ und würde dann eine Mail die eigentlich schon in „Warten_auf“ liegt hier nochmals ablegen.

Hier ist ein logisches ODER mit dem Ausdruck „anyof“ implementiert, sprich die Aktion wird ausgeführt wenn die Mail-Absender Adresse „ebay@ebay.com“ enthält ODER „@members.ebay.com“.

Mailinglisten

Ich habe auch einen Newsletter bei den Krautreportern abonniert. Um diese Mails auszufiltern nutzte ich in Procmail folgendes Konstrukt:

Hier werden also alle Mails gefiltert die im Header „List-Unsubscribe“ den Begriff „krautreporter“ stehen haben. In Sieve sieht das dann so aus:

Das „if“-Statement ist also mehr oder weniger selbterklärend, wir nehmen den Header „List-Unsubsckribe“ und schauen ob in dieser Zeile auch „krautreporter“ steht.

Abschließende Hinweise

Diese Regeln habe ich nach den Filter-Regeln die Manitu voreingestellt hat in die Sieve-Regeln geschrieben. Damit sind dann auch schon notwendige Imports wie

require [„date“, „editheader“, „envelope“, „fileinto“, „imap4flags“, „mailbox“, „regex“, „reject“, „variables“];

erlledigt. Die Manitu-Regeln kümmern sich um Spam-Filterung, meine Regeln kümmern sich um das was ich gezielt in eine Ordnerstruktur sortiert haben möchte.

  1. Procmail (Wikipedia) ↩︎
  2. Sieve (RFC5228) ↩︎

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert