Kategorien
Geeky In eigener Sache

Postfix + Procmail + Sieve + Cyrus (Filter funktionieren nicht)

Für die Nachwelt und was man eventuell machen muss damit Sieve-Filter mit Procmail zusammenarbeiten. Danke für einen Teil der Lösung hier und mögest du in der Hölle schmoren für dein Posting hier. Ersteres Posting brachte mich auf den richtigen Pfad und letzteres hat es so weit kommen lassen, dass nichts mehr funktionierte bei den Filtern.

Die Geschichte
Unser Server ist letzte Woche umgezogen was relativ reibungslos funktionierte. Doch einen Tag später funktionierten die serverseitigen (sieve) Emailfilter nicht mehr, so dass jeder User seine Mails immer in die Inbox zugestellt bekam. Das Irre daran war, dass unser Mailserver (Cyrus) in jeder Mail trotzdem den Sieve-Header hinterlies … aber eben nichts passierte. Keine Fehlermeldungen, gar nichts.

Wie es dazu kam
Bonsay bemerkte, dass die Seite zum Konfigurieren der Filter (Squirrelmail mit Avelsieve Plugin) nicht mehr funktionierte. Den Grund dafür kenne ich bis heute nicht (denn es ging ein paar Stunden vorher noch), aber ein Update auf die neueste Version von Avelsieve half. Wie dem auch sei … im Zusammenhang mit dem Fehler durchforstete ich unser Log (bis dahin gingen die Sievefilter noch) und fand zahlreiche Zeilen wie diese hier:

lmtpunix[31955]: verify_user(sebbi) failed: Mailbox does not exist

Kann nicht gut sein, dachte ich mir … also habe ich geforscht woran das lag und es lag an Procmail. In der globalen Konfigurationsdatei stand:

:0w
| $DELIVERMAIL -a $LOGNAME -m $LOGNAME.$FOLDER

# Klappt nicht? Gut, dann in die Inbox
:0w
| $DELIVERMAIL -a $LOGNAME $LOGNAME

Die Fehler kamen von der ersten Zeile und so habe ich ein wenig nachgeforscht und in einem Artikel (oben verflucht) etwas gesehen und bei beiden Zeilen -m user.$LOGNAME (mal mit, mal ohne $FOLDER) eingetragen.

:0w
| $DELIVERMAIL -a $LOGNAME -m user.$LOGNAME.$FOLDER

# Klappt nicht? Gut, dann in die Inbox
:0w
| $DELIVERMAIL -a $LOGNAME -m user.$LOGNAME

Die Fehler waren verschwunden, aber die Sieve-Filter funktionierten wenig später nicht mehr. In einen kausalen Zusammenhang habe ich beide Ereignisse erst heute bringen können …

Die Lösung
… denn – oh wunder! – gibt man dem „deliver“ von Cyrus einen festen Ordner (in diesem Fall die Inbox) mit, dann können die Sieve-Filter daran NICHTS MEHR ÄNDERN! … wer hätte es gedacht ;-) Also zurück zu obiger Konfiguration und damit die „Mailbox does not exist“ Fehler weggehen folgende Änderung:

:0w
* FOLDER ?? [a-z.]
| $DELIVERMAIL -a $LOGNAME -m user.$LOGNAME.$FOLDER

# Klappt nicht? Gut, dann in die Inbox
:0w
| $DELIVERMAIL -a $LOGNAME $LOGNAME

Das heißt nun also, dass die Mails in einem bestimmten Ordner landen, wenn irgendein Procmailfilter zugeschlagen hat (und damit $FOLDER einen Wert hat) und falls dem nicht so ist, dann soll Cyrus entscheiden in welche Mailbox/Ordner die Mail kommt.

Voila! Problem gelöst … aber gedauert hat es, bis ich dahinter gekommen bin … nicht mehr feierlich. Fehlkonfigurationen ergeben nunmal keine Fehlermeldungen und so gibt es auch keine Hinweise auf die mögliche Ursache eines Problems. Hoffentlich hilft dieser Artikel jemandem oder wenigstens mir, wenn ich das nächste Mal einen Mailserver einrichten muss ;-)