in Mailserver

Serverseitige E-Mail Filter mit Sieve

E-Mails über den E-Mail – Client filtern ist sehr praktisch. Aber noch viel praktischer ist, die E-Mails schon auf dem Server vorzufiltern.

Das Problem:
Filterregeln des E-Mail-Clients greifen natürlich nicht, wenn man sein IMAP – Postfach mobil mit dem Smartphone abruft.

Die Lösung:
Serverseitig die E-Mail Filter mit Sieve – Scripten. Eingehende E-Mails werden also noch während der Zustellung in das eigentliche Postfach einem Regelwerk unterzogen und entsprechend verarbeitet. Ich beschreibe kurz eine Möglichkeit, mit ManageSieve und Thunderbird E-Mails schon auf dem Server zu filtern und zu sortieren.

Voraussetzungen:
Damit das funktioniert muss der entsprechende Mailserver natürlich Sieve unterstützen. Besser sogar noch, wenn der Server ManageSieve unterstützt.
Hat man keinen eigenen Mailserver, erfragt man die Funktionalität am besten bei seinem Provider. Alternativ kann man das auch einfach mit Telnet/Netcat vom lokalen Rechner aus testen:

~ # nc mail.domain.tld 4190
nc: using stream socket
"IMPLEMENTATION" "Dovecot Pigeonhole"
"SIEVE" "fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave duplicate"
"NOTIFY" "mailto"
"SASL" "PLAIN LOGIN"
"STARTTLS"
"VERSION" "1.0"
OK "Dovecot ready."

Der Name der Domain (mail.domain.tld) und der Port 4190 müssen natürlich passen. 4190 ist der Standard-Port. Ältere Installationen benutzen auch gerne Port 2000.

Erhält man so eine (oder eine ähnliche Ausgabe), dann unterstützt der Mailserver ManageSieve. (weiter: „Einrichtung von Sieve Filter-Regeln„)

Ihr könnt euren Server auch hier testen:

Die Einrichtung:

Administratoren eigener Mailserver können bei Bedarf die Funktionalität im Mailserver integrieren. Im dovecot – Mailserver kann man das wie folgt machen:
dovecot Konfigurationsdatei bearbeiten:

${EDITOR} /etc/dovecot/dovecot.conf

Konfigurationsdatei auf folgende Einträge überprüfen:

protocols = imap pop3 sieve
...
...
plugin {
  quota = maildir
  # Achtung, Pfad ggf. anpassen
  sieve = /var/vmail/%d/%n/.sieve
}
...
...
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  mail_plugin_dir = /usr/lib/dovecot/
  mail_plugins = sieve quota
}
 
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
  service_count = 1
}
service managesieve {
  process_limit = 1024
}
protocol sieve {
  managesieve_max_line_length = 65536
  mail_max_userip_connections = 10
}

Sicherstellen kann man die Konfiguration mit Telnet oder Netcat. Weitere Details zur Konfiguration kann man hier finden.

Einrichtung von Sieve Filter – Regeln:

Wenn sichergestellt ist, dass der Mail – Server das ManageSieve unterstützt kann der Thunderbird vorbereitet werden, um anschließend die Regeln zu definieren.
Als externer Client bietet der Thunderbird das Add-on „Sieve“ zur Installation an.

Achtung: Seit Thunderbird 24.0 funktioniert das im offiziellen Repository enthaltene Plugin nicht mehr! Man muss stattdessen auf die aktuelle Entwicklerversion ausweichen. Diese findet man hier.

Nach der erfolgreichen Installation des Add-ons stehen uns unter den Filter-Optionen 2 neue Punkte zur Verfügung:

  • Sieve Filter (M)…
  • Sieve Filter Einstellungen

In den Einstellungen kann man die Einstellungen für den E-Mail-Server vornehmen. Insbesondere der Port für Sieve und unter „Security“ die Einstellung ‚TLS erzwingen‘ erfordern hier Aufmerksamkeit. (TLS sollte unbedingt eingeschaltet sein!) Wenn die Einstellungen entsprechend vorgenommen wurden kann man sich dem Definieren der Regeln widmen.

Die Regeln:

Regeln in Sieve werden immer nach dem Motto

wenn (‚Bedingung‘)

dann { ‚Aktion'; }

oder { ‚andere Aktion‘ }

erstellt. Dafür stehen eine Reihe von Kontrollfunktionen und Anweisungen zur Verfügung. Die wohl einfachste Regel ist in der Form zu finden:

require ["fileinto];
if address "From:" "email@adresse.tld" 
  {
  fileinto "Ordner";
}
else {
  keep;
}

Diese Regel prüft die eingehenden E-Mails auf die Bedingung
ist der Absender („From:“) gleich „email@adresse.tld“
und verschiebt bei positivem Ergebnis die Mail in den Ordner fileinto „Ordner“
oder stellt die Mails normal „else { keep; }“ dem Postfach normal zu.

Es gibt sehr viele Einsatzmöglichkeiten für diese Form der E-Mail Filterung:

  • Spam – E-Mails aussortieren
  • Newsletter oder Mailinglisten Mails in Unterordner sortieren
  • Mails von bestimmten Absendern gesondert behandeln
  • Mail – Weiterleitungen für bestimmte Adressen (Absender oder Empfänger) einrichten

Eine ziemlich gute Beschreibung zu den verschiedenen Regeln kann man hier finden. Ein tolles PDF mit sämtlichen Funktionen kann man HIER kostenfrei runterladen.

Ich werde mich in einem zukünftigen Beitrag genauer zu den Regeln auslassen.

Schreibe einen Kommentar

Kommentar