Ubuntu 14.04 - Mailserver - Sieve Plugin
Da der Mailserver jetzt ja steht, versuche ich mal ein paar von diesen praktischen Plugins einzubauen. Als erstes nehme ich mir mal sieve vor.
Mit der Dovecot Erweiterung Sieve ist es möglich Mails bereits auf dem Webserver in Verzeichnisse sortieren zu lassen. Sieve ist eine Sprache zur Filterung von Mails. RFC 3028.
Folgendes installiert die Erweiterung:
apt-get install dovecot-sieve dovecot-managesieved
Für Sieve muss Dovecots LDA oder Dovecots LMTP verwendet werden.
LDA
Die Variante Sieve im LDA zu benutzen habe ich nicht getestet, sollte aber in etwa so funktionieren:
Postfix muss mitgeteilt bekommen dass man den Dovecot LDA verwenden möchte. Dazu trägt man folgendes in die /etc/postfix/main.cf ein:
mailbox_command = /usr/lib/dovecot/deliver
In der Datei /etc/dovecot/conf.d/15-lda.conf muss die Zeile für die mail_plugins einkommentiert und sieve hinzugefügt werden:
protocol lda {
# Space separated list of plugins to load
#(default is global mail_plugins).
mail_plugins = $mail_plugins sieve
}
LMTP
In der Datei /etc/dovecot/conf.d/20-lmtp.conf muss die Zeile für die mail_plugins einkommentiert und sieve hinzugefügt werden:
protocol lmtp {
postmaster_address = postmaster@meinedomain.de
mail_plugins = $mail_plugins sieve
}
Alle Plugins sind übrigens unter /usr/lib/dovecot/modules zu finden.
Sieve Konfiguration
Die Konfiguration von Sieve erfolgt in der Datei /etc/dovecot/conf.d/90-sieve.conf:
plugin {
# Benutzerspezifische Konfiguration
sieve = /var/vmail/%d/%n/dovecot.sieve
# Benutzerspezifische Konfigurationen
sieve_dir = /var/vmail/%d/%n/
#sieve_default = /var/vmail/%d/default.sieve
#sieve_global_dir = /var/vmail/%d/conf.d/sieve
}
Dateien in den Ordnern sieve_dir und sieve_global_dir müssen die Dateiendung .sieve haben, da sie sonst nicht erkannt werden. Der Parameter sieve_global_path ist übringes deprecated. Das Script unter sieve_default wird nur dann ausgeführt wenn kein benutzerspezifisches Script gefunden wird.
Sieve Scripts
Ein paar Beispielscripts sind z.B. im Dovecot Wiki zu finden. Im Prinzip sieht der Aufbau der Datei so aus, dass am Anfang die nötigen Plugins referenziert werden und dann eine if/elsif/else Konstruktion folgt.
require ["fileinto", "envelope"];
# Mail von einem Bestimmten Absender
if envelope :is "from" "someone@domain.de" {
# In der Ordner "Someone" auf Ebene der INBOX verschieben
fileinto "Someone";
}
elsif envelope :is "from" "other@domain.de" {
# In einen Unterordner von INBOX
fileinto "INBOX.Test";
} elsif ... {
[...]
} else {
keep;
}
Nach dem Ändern eines Scripts muss Dovecot übringens nicht neu gestartet werden (wäre auch ziemlich sinnfrei).
Sieve Remote Management
Der Port für das Remote Management der Sieve Regeln muss in der Datei /etc/dovecot/conf.d/20-managesieve.conf festgelegt werden. Standard ist 4190.
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
Zum Schluss noch Dovecot und ggf. Postfix neu starten
sudo service dovecot restart
sudo service postfix restart