Home.

Technik-Blog

Willkommen auf meinem
Notiz - Blog
Blog

Kmoser's Tech-Blog

Samstag
14
Juni 2014

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.

Sieve

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 

Thunderbird Add-On

Für Thunderbird gibt es ein Add-On mit dessen Hilfe man die Regeln auf dem Server bearbeiten kann. Das Add-On heißt "Sieve".

Allerdings muss man das Nightly Build verwenden, da das offizielle Add-On nicht funktioniert. Das Plugin gibt es hier: https://github.com/thsmi/sieve/blob/master/nightly/README.md

Hat man dieses Installiert steht ein neuer Reiter in den Kontoeinstellungen zur Verfügung auf dem man erst mal einstellen muss, dass derMailserver Sieve unterstützt.

Hat man das gemacht kann man über "Neu" Sieve Scripts anlegen. Das Editieren ist ein Traum da man einen Code Editor mit Syntax Highlightning und Syntaxprüfung zur Verfügung hat.

Thunderbird Add-On Sieve