neunzehn83.de

Ein Mann, ein Blog, kein Plan.

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.

  1. 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
  2. Dovecot 1.2 von den Backports installieren

    sudo apt-get -t lenny-backports install dovecot-common dovecot-pop3d dovecot-imapd
  3. Dovecot-Config anpassen

    sudo vi /etc/dovecot/dovecot.conf
    Änderungen sind FETT dargestellt
    protocols = imap pop3 pop3s imaps managesieve
    protocol lda {
        [...]
        mail_plugins = sieve
    }
  4. Avelsieve für Squirrelmail installieren

    sudo apt-get install avelsieve

So weit, so einfach. Die individuellen Filterregeln werden immer im Home-Verzeichnis des Mail-Users abgelegt. Das ist bei Syscp /var/customers/mail/kunde/mail@example.org

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.

Sieve

Geschrieben am Montag, 07. Dezember 2009 und abgelegt unter Webtechnik.