Sieve Mailfilter unter Debian Lenny mit Syscp und Dovecot
Mit Sieve können Serverseitig Filterregeln für E-Mails angelegt werden. So lassen sich z.B. Spam-eMails automatisch in einen SPAM-Ordner verschieben oder automatisch löschen. Um eine Sieve-Regel zu erstellen, braucht man entweder einen Mail-Client mit Sieve-Unterstützung (z.B. Mozilla Thunderbird mit den Sieve-Plugin) oder einen Webmailer mit Sieve-Plugin (z.B. Squirrelmail mit avelsieve).
Voraussetzungen: Debian Lenny mit installiertem Syscp und Dovecot als MDA.
Die Dovecot-Version in Debian Lenny ist 1.0. Sieve ist erst ab Dovecot 1.1 fester Bestandteil - um mit Dovecot 1.0 Sieve zu nutzen, muss man Dovecot mit einem Patch neu kompilieren oder einen standalone managesieve-Server, wie z.B. pysieved verwenden.
Glücklicherweise ist Dovecot 1.2 als lenny-backport verfügbar. Und genau diese Version werden wir benutzen.
-
Lenny-Backports in die sources.list aufnehmen
sudo vi /etc/apt/sources.list
Folgende Zeile hinzufügen:deb http://www.backports.org/debian lenny-backports main contrib non-free
Anschließend den Backports-Key hinzufügen & sourcen neu einlesen:sudo wget -O - http://backports.org/debian/archive.key | sudo apt-key add - sudo apt-get update
-
Dovecot 1.2 von den Backports installieren
sudo apt-get -t lenny-backports install dovecot-common dovecot-pop3d dovecot-imapd
-
Dovecot-Config anpassen
sudo vi /etc/dovecot/dovecot.conf
Änderungen sind FETT dargestelltprotocols = imap pop3 pop3s imaps managesieve protocol lda { [...] mail_plugins = sieve }
-
Avelsieve für Squirrelmail installieren
sudo apt-get install avelsieve
Wenn jetzt in diesem Verzeichnis die Sieve-Filterregeln abgelegt würden, könnte man diese als IMAP-Ordner abonnieren, was aber nicht wirklich funktionieren kann. Deswegen legen wir alle Mailordner in ein weiteres Unterverzeichnis "mail". Dazu müssen wir die SQL-Queries von Dovecot anpassen.
Datei: /etc/dovecot/dovecot-sql.conf öffnen. Die Zeilen mit password_query und user_query durch folgendes ersetzen:
password_query = "SELECT username AS user, password_enc AS password, CONCAT(homedir,maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, concat('maildir:',homedir,maildir,'mail/' ) AS userdb_mail, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE username = '%u' OR email = '%u'" user_query = "SELECT CONCAT(homedir,maildir) AS home, concat('maildir:',homedir,maildir,'mail/' ) AS mail, uid, gid, CONCAT('maildir:storage=', (quota*1024)) as quota FROM mail_users WHERE username = '%u' OR email = '%u'"
Nach einem Restart von Dovecot (sudo /etc/init.d/dovecot restart) sollte auf Port 2000 TCP der Sieve-Server lauschen. Überprüfen kann man das z.B. mit nmap:
nmap localhost
> 2000/tcp open callbook
In Squirrelmail unter dem Menüpunkt "Filters" kann man jetzt eine Sieve-Filterregel erstellen.