Humboldt-Universität zu Berlin - Mathematisch-Naturwissenschaftliche Fakultät - Rechnerbetriebsgruppe

Verwendungshinweise und Beispiele zur sieveshell

Verwendungshinweise sieveshell 

Für alle Nutzer, die weder mit KMail noch mit Roundcube E-Mails lesen, gibt es auf den LINUX-Rechnern das Programm sieveshell , mit dessen Hilfe man seine Sieve-Scripte verwalten kann (Download, Upload, Editieren, Aktivieren). Das Programm wird wie folgt aufgerufen:
 

sieveshell --user=<login-account> --tls mailbox.informatik.hu-berlin.de


Das Subkommando help gibt eine kurze Übersicht über die Subkommandos des Programms.
 

Supported Features

DOVECOT Sieve stellt folgende sieve-Features zur Verfügung:

fileinto, reject, envelope, encoded-character, vacation, subaddress, comparator-i, ascii-numeric, relational, regex, imap4flags, copy, include, variables, body, enotify, environment, mailbox, date, index, ihave, duplicate, mime, foreverypart, extracttext, editheader, imapflags, notify .

Für die Verwaltung steht auf dem Mailserver ein ManageSieve-Server zur Verfügung. Der ManageSieve-Server unterstützt "SSL/TLS". Er ist über die Ports 4190(default) und 2000 erreichbar.

Kochrezepte für sieve-Filterregeln

Der Mailfolder-Separator ist "/". Bei der Formulierung der Filterregeln für das System "sieve" ist zu beachten, dass Namen für E-Mailboxen nicht mit "~/" oder "/" beginnen dürfen. Die E-Mailboxen befinden sich immer auf dem Mailserver.

Beispiele für .dovecot.sieve

Beispiel 1: Speichern der SPAM-Mail in einer separaten E-Mailbox und alle anderen Mails in der Standard-E-Mailbox ablegen
require "fileinto";
# SPAM in Mailfolder "SPAM"
if header :contains "X-Spam-Flag" "YES" { fileinto "SPAM"; stop; }
# implizites keep
oder

require "fileinto";
# SPAM in Mailfolder "SPAM"
if header :contains "subject" "***SPAM***" { fileinto "SPAM"; stop; }
# implizites keep

Beispiel 2: Löschen der SPAM-Mail und alle anderen Mails in der Standard-E-Mailbox ablegen

if header :contains "X-Spam-Flag" "YES" { discard; stop; }
# implizites keep
# SPAM Mails von "informatik.hu-berlin.de" werden auch mit "SPAM"-Kennzeichnung angenommen:
  # SPAM sofort loeschen
if allof ( header :contains "X-Spam-Flag" "YES" ,
not address :domain :contains "from" "informatik.hu-berlin.de" ) { discard; stop; }
# implizites keep
Beispiel 3: Speichern der SPAM-Mail in einer separaten E-Mailbox, streichen von Fehler-Mails des Mailsystems, weiterleiten der restlichen E-Mail an eine andere E-Mail-Adresse. Das Weiterleiten von SPAM wird verhindert! E-Mails können verloren gehen, wenn der neue Empfänger eine Absenderprüfung vornimmt.

require "fileinto";
# SPAM in E-Mailbox "SPAM"
if allof ( header :contains "X-Spam-Flag" "YES" ,

not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }

# nachfolgende Regeln verhindern E-Mailzyklen, Fehler-Mails werden geloescht
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
"*MAILER-DAEMON@*.informatik.hu-berlin.de*" ]
        { discard; stop; }
# und den Rest weiterleiten
redirect "mustermann@musterdomain.de";

oder mit anderer Syntax


require "fileinto";
# SPAM in E-Mailbox "SPAM"
if allof ( header :contains "X-Spam-Flag" "YES" ,

not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }

# nachfolgende Regeln verhindern Mailzyklen, Fehler-Mails werden geloescht
if anyof ( header :matches "from" "*MAILER-DAEMON@informatik.hu-berlin.de*",
           header :matches "from" "*MAILER-DAEMON@*.informatik.hu-berlin.de*")
        { discard; stop; }
# und den Rest weiterleiten
redirect "mustermann@musterdomain.de";
 

Beispiel 4: Löschen von SPAM-Mail, Fehler-Mails des Mailsystems werden in einer separaten E-Mailbox abgelegt, die restlichen E-Mails werden an eine andere E-Mailadresse weitergeleitet und in die Standard-E-Mailbox kopiert. E-Mails können verloren gehen, wenn der neue Empfänger eine Absenderprüfung vornimmt.

require "fileinto";
# SPAM sofort loeschen
if allof ( header :contains "X-Spam-Flag" "YES" ,

not address :domain :contains "from" "informatik.hu-berlin.de" ) { discard; stop; }

# nachfolgende Regel verhindert Mailzyklen, Mails in E-Mailbox "MAIL-ERRORS"
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
"*MAILER-DAEMON@*.informatik.hu-berlin.de*" ]
        { fileinto "MAIL-ERRORS"; stop; }
# und in INBOX-E-Mailbox kopieren
keep;
# eigener SPAM loeschen
if header :contains "X-Spam-Flag" "YES" { discard; stop; }
# und den Rest weiterleiten
redirect "yyy@xxx.de";


Beispiel 5: Speichern der SPAM-Mail in einer separaten E-Mailbox, ablegen aller anderen E-Mails in der Standard-E-Mailbox, erzeugen einer Vacation-Nachricht. SPAM-Mail wird vor dem Senden der Vacation-Mail aussortiert. E-Mails können verloren gehen, wenn der neue Empfänger eine Absenderprüfung vornimmt.

require "fileinto";
require "vacation";
require "include";
# SPAM in E-Mailbox "SPAM"
if allof ( header :contains "X-Spam-Flag" "YES" ,

not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }

# nachfolgende Regel verhindert Mailzyklen, Fehler-Mails werden geloescht
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
"*MAILER-DAEMON@*.informatik.hu-berlin.de*" ]
        { fileinto "MAIL-ERRORS"; stop; }
# Fuer alle E-Mails mit der Zieladresse musterfrau@informatik.hu-berlin.de bzw. isolde.musterfrau@informatik.hu-berlin.de
# wird eine Vacation-Mail erzeugt. Ein Absender erhaelt nur einmal eine Vacation-Mail. Nach 7 Tagen wird beim Eintreffen
# einer E-Mail vom gleichen Absender noch einmal eine Vacation Mail erzeugt.
if not header :contains "Precedence" ["bulk","list"] {
    # keine Vacation-Mail fuer Listen
    vacation
        :days 7
        :addresses ["musterfrau@informatik.hu-berlin.de","isolde.musterfrau@informatik.hu-berlin.de"]
        :subject "Out of office reply"
        "Sorry, I'm away.
         I'll read your message when I get around to it.";
}
# Der obige Nachrichtentext darf keine Umlaute enthalten.
#
# Wenn notwendig nachfolgende Umleitung aktivieren
# redirect "xxxxxxxxxx@informatik.hu-berlin.de";
#
# Alle E-Mails durch weiteres Skript bearbeiten (Bsp.: "default" ! Alternativen: "dovecot",... ):
# include :personal "default";
#
# Alle E-Mails werden in der Standard INBOX gespeichert.
keep ;

Beispiel 6: SPAM-Mail mit der Absenderadresse "informatik.hu-berlin.de" wird gespeichert, andere SPAM-Mail und Fehlermeldungen werden gelöscht, alle anderen Mails weitergeleitet. E-Mails können verloren gehen, wenn der neue Empfänger eine Absenderprüfung vornimmt.

require "fileinto";
#
# SPAM-Mail loeschen
if allof ( header :contains "X-Spam-Flag" "YES" ,

not address :domain :contains "from" "informatik.hu-berlin.de" ) { discard; stop; }

#
# informatik-SPAM speichern, Fehlermeldungen löschen
#
if header :contains "X-Spam-Flag" "YES" { fileinto "SPAM-local"; stop; }
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
"*MAILER-DAEMON@*.informatik.hu-berlin.de*" ]
        { discard; stop; }
# Adresse durch die Zieladresse ersetzen !!!
redirect "mustermann@musterdomain.de";
#

Beispiel 7: SPAM-Mails werden gelöscht. Informatik-SPAM-Mails und Fehlermeldungen werden lokal gespeichert. Alle anderen Mails werden weitergeleitet und lokal gespeichert. Die weitergeleiteten Mails werden umgeschrieben, so dass als Absender der lokale Nutzer und als ReplyTo der ursprüngliche Absender erscheinen. Dadurch werden fast alle E-Mails weitergeleitet.

require "fileinto";
require "enotify";
require "regex";
require "envelope";
# nachfolgende zwei Zeilen sind fuer die Mailumleitung notwendig
require "variables";
require "include";
#
# SPAM-Mail loeschen
if allof ( header :contains "X-Spam-Flag" "YES" ,
not address :domain :contains "from" "informatik.hu-berlin.de" ) { discard; stop; }
#
# Informatik-SPAM und Fehlermeldungen speichern und nicht weiterleiten
#
if header :contains "X-Spam-Flag" "YES" { fileinto "SPAM-informatik"; stop; }
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
"*MAILER-DAEMON@*.informatik.hu-berlin.de*" ]
        { fileinto "MAIL-ERRORS"; stop; }
#
# Umleitung an andere Mailadresse
# in der nachfolgenden Zeile meinen Nutzernamen eintragen
set "global.username" "<Lokaler Nutzername>";
# in der nachfolgenden Zeile Zieladresse eintragen
set "global.sendto" "<Zieladresse>";
include :global "umleitung";
#
# E-Mail lokal behalten
keep;
#

 

Sieve-Regeln für neu eingerichtete Nutzer (ab 25.6.2017)

Für jeden neuen Account werden folgendene vier Sieve-Files bereitgestellt:

default: Dieses File wird standardmäß aktiviert. Die Regeln im "local"-File werden berücksichtigt.

#
# default
#
require "fileinto";
require "include";
#
# SPAM in Mailfolder "SPAM"
if allof ( header :contains "X-Spam-Flag" "YES" ,
                 address :domain :contains "from" "mustermann@informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
if allof ( header :contains "X-Spam-Flag" "YES" ,
                 not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
#
include :personal "local";
#
keep;


local: Hier kann der Nutzer Sieve-Filterregeln eintragen, die E-Mails in lokalen Mailboxen ablegen. Dieses File enthält im Anfangszustand nur Muster, wird aber trotzdem von allen anderen drei Sieve-Files benutzt.

#
#       local
#
#       Ablegen von E-Mails in lokalen Mailboxen, es erfolgen keine weiteren Aktionen
#
require "fileinto";
#
# if header :contains "subject" "Newsletter" { fileinto "Newsletter"; stop; }
# if header :contains "from" "Newsletter.de" { fileinto "Tagesspiegel"; stop; }
#
# if address :matches "from" "fax@*" { fileinto "SPAM" ; stop; }
#       weiterleiten an lokale E-Mail-Adresse
# if header :matches "from" "*@buxdehude.de" { redirect "musterfrau@informatik.hu-berlin.de"; keep; stop; }


vacation: Dieses Sieve-File sollte aktiviert werden, wenn eine Vacation-Nachricht versendet werden soll. Die Regeln in dem local.sieve-Regeln werden berücksichtigt und können eine Vacation-Mail verhindern.

#
#       vacation
#
#       Tue Jun 6 07:59:26 CEST 2017
require "fileinto";
require "enotify";
require "regex";
require "envelope";
require "variables";
require "include";
require "vacation";
#
#       SPAM-Mail wird im Mailfolder "SPAM" ablegen, diese Regel muss bei Mail-Umleitung aktiviert sein!!!!!!
#
 
if allof ( header :contains "X-Spam-Flag" "YES" ,
             address :domain :contains "from" "mustermann@informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
if allof ( header :contains "X-Spam-Flag" "YES" ,
             not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
#
 
include :personal "local";
 
#
#       Fuer alle E-Mails mit der Zieladresse
#             mustermann@informatik.hu-berlin.de oder Max.Mustermann@informatik.hu-berlin.de
#       wird eine Vacation-Mail erzeugt.
#       Ein Absender erhaelt nur einmal eine Vacation-Mail. Nach 7 Tagen wird beim Eintreffen
#       einer E-Mail vom gleichen Absender noch einmal eine Vacation Mail erzeugt.
 
if not header :contains "Precedence" ["bulk","list"] {
             # keine Vacation-Mail fuer Listen
             vacation
             :days 7
             :addresses ["mustermann@informatik.hu-berlin.de","Max.Mustermann@informatik.hu-berlin.de"]
             :subject "Out of office reply"
             "Sorry, I'm away.
             I'll read your message when I get around to it.";
}
 
#
#
#       E-Mail trotzdem lokal behalten
keep;
 


weiterleitung: Dieses Sieve-File sollte aktiviert werden, wenn eine Weiterleitung von E-Mails an eine andere E-Mail-Adresse gewünscht wird. Der Nutzer muss lediglich die Ziel-Adresse in der Zeile 'set "global.sendto" "mustermann@musterdomain.de"; ' anpassen. Es erfolgt eine Umschreibung der Header, so daß als Absenderadresse die lokale Adresse des Nutzers und als Reply-Adresse die ursprüngliche Absenderadresse erscheinen. Die Regeln in dem local.sieve-File werden berücksichtigt und können eine Weiterleitung verhindern.

#
#       weiterleitung
#
#       Tue Jun 6 07:59:26 CEST 2017
#
#       Weiterleitung an eine andere E-Mail-Adresse
#
# Achtung!! Wenn Mailweiterleitung aktiviert ist, kann der Empfang von E-Mails bei einigen E-Mail-Providern,
#       z.B. dlr.de, gmx.de, web.de, nicht garantiert werden, da diese E-Mail-Provider eine
#       Absenderverifikation durchfuehren und die weitergeleitete E-Mail dann nicht vom
#       E-Mail-Server des Absenders kommt!!!!!
#       Dadurch koennen E-Mails verloren gehen!!!!!
#
#
require "fileinto";
require "enotify";
require "regex";
require "envelope";
require "variables";
require "include";
#
# SPAM-Mail wird im Mailfolder "SPAM" ablegen, diese Regel muss bei Mailweiterleitung aktiviert sein!!!!!!
#
if allof ( header :contains "X-Spam-Flag" "YES" ,
             address :domain :contains "from" "mustermann@informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
if allof ( header :contains "X-Spam-Flag" "YES" ,
             not address :domain :contains "from" "informatik.hu-berlin.de" ) { fileinto "SPAM"; stop; }
#
#
include :personal "local";
#
#       Fehlermeldungen duerfen nicht weitergeleitet werden!!!!! (Gefahr von Zyklen)
#
if header :matches "from" ["*MAILER-DAEMON@informatik.hu-berlin.de*",
                   "*MAILER-DAEMON@*.informatik.hu-berlin.de*"]
             { fileinto "MAIL-ERRORS"; stop; }
#
#       E-Mail trotz Weiterleitung auch im Original lokal behalten
keep;
#
#       Alle anderen E-Mails werden hier weitergeleitet.
#
#       in der nachfolgenden Zeile muss der lokale Nutzernamen eingetragen sein
set "global.username" "mustermann";
#       in der nach nachfolgenden Zeile muss die Zieladresse eingetragen werden
set "global.sendto" "mustermann@musterdomain.de";
include :global "umleitung";