Virtuelle Mailzustellung und Forwarding mit Postfix
Benjamin Wilfing
- webserver
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
Hi nochmal,
ich hoffe, mein Problem ist nicht zu speziell, um hier jemanden zu finden, der mir helfen kann.
gut, war es offensichtlich doch. ;-) Aber ich habe mir die Mühe gemacht, Stunden um Stunden in diversen Manpages und Howtos zu verbringen und das angelesene Wissen in eine sinnvolle Konfiguration umzusetzen -- und ich habe es tatsächlich geschafft, ein System aufzusetzen, das exakt meinen Anforderungen entspricht :-)
Hier auf Einzelheiten einzugehen, wie ich das Problem gelöst habe, erscheint mir allerdings nicht als sinnvoll, denn dazu müsste ich ziemlich weit ausholen. Ich habe mir deshalb schon überlegt, einen Feature-Artikel zu dem Thema zu schreiben. Ihr werdet also von mir hören. ;-)
Viele Grüße
Benjamin