Benjamin Wilfing: Virtuelle Mailzustellung und Forwarding mit Postfix

Beitrag lesen

Hi Forum,

ich hoffe, mein Problem ist nicht zu speziell, um hier jemanden zu finden, der mir helfen kann.

Ich bin zur Zeit damit beschäftigt, meinen Mailserver mit diversen Filterfunktionen auszustatten (unter anderem ein Spamfilter und ein Virenscanner) welche mailboxspezifisch individuell ein- bzw. abschaltbar sind. Gelöst habe ich dies mit einer Konstruktion aus Postfix/Courier-IMAPd und amavisd-new/Spamassassin/ClamAV. Die Mailzustellung durch Postfix erfolgt komplett virtuell, die User existieren in einer MySQL-Datenbank. Es existieren desweiteren ein Systembenutzer sowie -gruppe »vmail« (UID/GID 1022), in dessen Homeverzeichnis sämtliche Mailboxen liegen. Hier der entsprechende Auszug aus der /etc/postfix/main.cf:

virtual_uid_maps = static:1022
virtual_gid_maps = static:1022
virtual_mailbox_base = /home/vmail

Der Mailfluss ist wie folgt: Postfix nimmt auf dem Standardport 25 Verbindungen an und gibt alle Mails an amavisd-new weiter, welcher auf 127.0.0.1:10024 lauscht. Die Mails werden durch den amavisd auf Viren/Spam untersucht, Header modifiziert und danach wieder an Postfix übergeben, welcher zusätzlich auf 127.0.0.1:10025 lauscht und die Mails dann an die IMAP-Ordner ausliefert.

So weit, so gut. Der Virenscanner sowie der Spamfilter verrichten ihre Arbeit auch tadellos. Jetzt stehe ich allerdings vor folgendem Problem: die durch Spamassassin mit X-Spam-Headern versehene Mails sollen ab einem bestimmten - durch den User und pro Mailbox einstellbaren - Wert in einen »Spamverdacht«-IMAP-Ordner der entsprechenden Mailbox verschoben werden. Bisher landen als Spam erkannte Mails einfach in einem Quarantäneverzeichnis (/var/amavis/quarantine), wodurch man sie später nicht mehr der richtigen Mailbox zuordnen kann (Stichwort »False Positives« -- ein Spamfilter kann sich schließlich mal irren und ich möchte Mailverlust um jeden Preis verhindern).

Normalerweise würde man zu diesem Zweck ja procmail verwenden, blöderweise erlaubt es Postfix' Virtual Delivery Agent aber nicht, Mails über procmail, .forward-Dateien oder Mailinglistenprogramme weiterzuverarbeiten -- das kann nur der lokale Delivery Agent.

Hat vielleicht jemand eine Idee, wie man das möglichst elegant lösen kann? Optimal wäre eine Lösung mit procmail bzw. etwas Vergleichbarem, denn wenn es irgendwie möglich ist, hätte ich natürlich auch gerne mailboxspezifische Filterregeln, um nicht nur erkannten Spam, sondern auch beliebige andere Mails zu filtern und richtig einzusortieren.

Viele Grüße
 Benjamin