Um diese Site zu betrachten, müssen Sie JavaScript aktivieren.

SecurityGateway für E-Mail-Server v12.0

Navigation: Sicherheit > Sieve-Skripte

Erstellen von Sieve-Skripten

Scrollen Zurück Oberste Ebene Weiter Mehr

Diese Seite bietet, neben den Seiten Sieve-Skripte und Sieve-Erweiterungen für SecurityGateway, einen grundlegenden Überblick über die Sieve-Filtersprache für E-Mail und ihre Implementation in SecurityGateway. Der erste Abschnitt dieser Seite gibt einen Überblick über die grundlegenden Bestandteile eines Sieve-Skripts. Der nächste Abschnitt bietet einen Überblick über verschiedene Struktur-Elemente der Sprache. Es folgen Übersichten über die Standard-Befehle für Steuerung, Test und Aktionen, die unterstützt werden.  Und schließlich finden sich am Ende der Seite mehrere Beispiel-Skripte, aus denen Sie Anregungen entnehmen können.

Falls Sie an weiteren Informationen über Sieve interessiert sind, sollten Sie die, allerdings in englischer Sprache verfügbaren, offiziellen Dokumente auf der Website der IETF online einsehen: Sieve: An Email Filtering Language (RFC-5228), Sieve's Copy Extension (RFC 3894), Sieve's Body Extension (RFC-5173), Sieve's Reject Extension (RFC-5429), Sieve's Variables Extension (RFC-5229) und Spamtest and VirusTest Extensions (RFC-3685).

Sie können auch unter www.mdaemon.com/Support/ die neuesten Optionen für technische Unterstützung und Hilfe zu SecurityGateway erhalten. Hierzu gehören die telefonische Unterstützung, Unterstützung per E-Mail, eine Wissensdatenbank, oft gestellte Fragen (FAQ), Foren und anderes mehr.

Bestandteile eines Sieve-Skripts

Ein Sieve-Skript besteht aus vier grundlegenden Bestandteilen:

1.Anforderungen—In diesem Teil werden die Sieve-Erweiterungen definiert, die für ein bestimmtes Skript erforderlich sind. Werden in einem Skript Befehle benutzt, die zu einer optionalen Erweiterung gehören, so müssen alle betroffenen optionalen Erweiterungen zwingend mithilfe des Befehls require am Beginn des Skripts bezeichnet und einbezogen werden. An das Ende der Parameter, die auf den Befehl require folgen, muss ein Strichpunkt gesetzt werden.

Beispiele:

require "securitygateway";

-und-

require ["securitygateway", "fileinto"];

2.Bedingungen—In diesem Teil des Skripts werden die Komponenten bezeichnet, nach denen Sie in einer Nachricht suchen wollen. Es werden auch die anzuwendenden Such- und Vergleichsverfahren bestimmt.

Beispiele:

if size :over 1M

-und-

if header :contains ["to", "cc"] "Frank Thomas"

3.Aktionen—Hier werden die Aktionen und Befehle festgelegt, die ausgeführt werden, falls die oben bestimmten Bedingungen das Ergebnis True erbringen. Jede Aktion muss durch einen Strichpunkt abgeschlossen sein, und jede Gruppe von Aktionen muss in geschweifte Klammern ("{" und "}") gesetzt sein.

Beispiele:

if size :over 1M { discard; }

-und-

if header :contains ["to", "cc"] "Frank Thomas" {

bayes-learn "spam";

fileinto "spam";

}

4.Kommentare—Sie können zu Erläuterungszwecken Kommentare in Ihre Sieve-Skripte einfügen, etwa, als Gedächtnisstütze für den Zweck des Sieve-Skripts oder aus sonstigen Gründen. Es sind zwei Arten von Kommentaren zugelassen: einzeilige und mehrzeilige Kommentare. Einzeilige Kommentare beginnen mit "#" und Enden am Zeilenende (also beim nächsten CRLF). Mehrzeilige Kommentare beginnen mit "/*", können sich über mehrere Zeilen erstrecken, und enden mit "*/".

Beispiele:

# Nachrichten über 1 MB werden verworfen

if size :over 1M { discard; }

-und-

if header :contains "from" "Frank Thomas" {

/* Frank Thomas sendet uns überwiegend Spam, deswegen verschiebt

dieses Skript automatisch alle von ihm erhaltenen Nachrichten

in die Quarantäne der Benutzer. */

fileinto "spam";

}

Struktur-Elemente

Strings

Text-Strings oder Zeichenketten beginnen und enden mit je einem Anführungs- und Schlusszeichen. Ein Beispiel: "Frank Thomas".

In Anführungs- und Schlusszeichen gesetzte Texte dürfen ihrerseits umgekehrte Schrägstriche (Backslashes) und Anführungs- und Schlusszeichen nur enthalten, wenn diesen Zeichen ein weiterer Backslash vorangestellt wird. Es werden daher in einem solchen String \\ als \ und \" als " behandelt. Anderen Zeichen soll in den Strings kein Escape-Zeichen vorangestellt werden.

Listen von Strings

Falls Sie in einem Skript eine Gruppe von Strings nutzen möchten, trennen Sie jeden in Anführungs- und Schlusszeichen gesetzten String durch ein Komma ab, und setzen sie die gesamte Gruppe in eckige Klammern.

Ein Beispiel:

if header :contains ["to", "cc"] ["me@xyz.com", "you@xyz.com", "us@xyz.com"]

Der im Beispiel genannte Test zeigt das Ergebnis True , falls entweder die Kopfzeile To oder die Kopfzeile CC eine der drei aufgeführten Adressen enthält.

Kopfzeilen

Die Namen von Kopfzeilen dürfen keinen Doppelpunkt enthalten.

Ein Beispiel:

if header :is "to:" (unzulässig)

if header :is "to" (zulässig)

Listen von Tests

Ähnlich wie Gruppen von Strings, können auch Gruppen von Tests in ein Skript eingefügt werden, indem die Gruppe in runde Klammern gesetzt wird. Diese Vorgehensweise ist bei Nutzung der Test-Befehle allof und anyof bisweilen nötig, da sie logischen "UND"- und "ODER"-Ausdrücken entsprechen.

Ein Beispiel:

if anyof (size :over 1M, header :contains "subject" ["big file", "mega file"])

{

discard;

}

Parameter und Vergleichsoperatoren

Zu den meisten Befehlen gehört mindestens ein Parameter oder Argument, der festlegt, wie genau der Befehl verfahren soll. Es sind mehrere Arten von Parametern verfügbar, wie etwa Positions-Parameter, getaggte Parameter und optionale Parameter. Getaggte Parameter und Vergleichsoperatoren wird beispielsweise ein Doppelpunkt vorangestellt. :contains, :is, :matches, :over und :under sind Beispiele für getaggte Parameter. Einige getaggte Parameter sind auf bestimmte Befehle beschränkt. Weitere Informationen über die verschiedenen Typen von Parametern enthält RFC-5228.

Aktionen

Jede Aktion muss durch einen Strichpunkt abgeschlossen werden, und jede Gruppe von Aktionen muss in geschweifte Klammern gesetzt werden.

Ein Beispiel:

if header :contains ["to", "cc"] "Frank Thomas" {

bayes-learn "spam";

fileinto "spam";

}

Steuerbefehle

Die Sieve-Sprache kennt drei Steuerbefehle:

require

Dieser Steuerbefehl wird am Anfang eines Skripts eingesetzt und bestimmt, welche optionalen Erweiterungen in dem Skript verwendet werden.

Ein Beispiel:

require ["securitygateway", "fileinto"];

if / elsif / else

Der Befehl if ist der wichtigste Steuerbefehl. Obwohl es, technisch gesehen, drei in Wechselbeziehung stehende Befehle gibt, können elsif und else nicht unabhängig von if verwendet werden. Tritt if in einem Skript auf, so wird die zugehörige Bedingung darauf hin geprüft, ob sie wahr ist. Ist dies der Fall, so werden die hiermit verknüpften Aktionen ausgeführt.

Ergibt die Prüfung nach if das Ergebnis falsch, so wird als nächstes elsif geprüft. Ergibt elsif das Ergebnis wahr, so werden die hiermit verknüften Aktionen ausgeführt. Ergibt auch die Prüfung nach elsif das Ergebnis falsch, so wird der Vorgang mit dem jeweils nächsten Befehl elsif fortgesetzt, bis nach einer Prüfung das Ergebnis wahr eintritt.

Ergeben alle Prüfungen nach if und elsif das Ergebnis falsch, und folgt ein Befehl else, so werden die mit diesem Befehl verknüpften Aktionen ausgeführt.

stop

Der Befehl stop beendet die Verarbeitung des Skripts.

Test-Befehle

Nachfolgend sind die Standard-Test-Befehle beschrieben, die die Sieve-Implementation von SecurityGateway unterstützt. Die Befehle body und envelope sind jedoch Erweiterungen; falls Sie einen dieser Befehle in einem Skript verwenden wollen, müssen Sie sie mithilfe des Befehls require einbinden. Es stehen in der Erweiterung securitygateway noch zahlreiche weitere Test-Befehle zur Verfügung. Sie sind auf der Seite Sieve-Erweiterungen für SecurityGateway beschrieben.

address

Durch diesen Befehl können Sie eine Kopfzeile auswerten, wobei die Auswertung auf eine in der Kopfzeile enthaltene E-Mail-Adresse beschränkt wird und sonstige Inhalte der Kopfzeile, wie etwa allgemeine Texte und Namen, außer Betracht bleiben. Enthält beispielsweise die Kopfzeile "to" den Text "Frank Thomas" <frank@example.com>, so würde die Prüfung header :is "to" "frank@example.com" ein negatives Ergebnis erbringen. Die Prüfung address :is "to" "frank@example.com" würde hingegen ein positives Ergebnis erbringen, weil hierbei nur die Adresse ausgewertet und berücksichtigt wird.

Für diesen Befehl stehen auch drei optionale getaggte Parameter zur Verfügung: ":localpart", ":domain" und ":all". Der Parameter :localpart wertet nur den linken Teil der Adresse aus (im Beispiel oben "frank" aus "frank@example.com"), der Parameter :domain wertet nur die Domäne einer Adresse aus (im Beispiel "example.com"), und :all wertet die gesamte Adresse aus. Werden keine Parameter angegeben, so wird per Voreinstellung :all genutzt.

Ein Beispiel:

require "fileinto";

if address :domain :is "from" "spammer.com" {

fileinto "spam";

}

allof

Hierdurch wird eine logische UND-Verknüpfung hergestellt. Alle geprüften Bedingungen müssen wahr sein, damit die verknüpfte Aktion ausgeführt wird.

Ein Beispiel:

if allof (header :contains "from" "J.Lovell", header :contains "to" "Bubba")

{

fileinto "spam";

}

anyof

Hierdurch wird eine logische ODER-Verknüpfung hergestellt. Es muss eine beliebige der geprüften Bedingungen wahr sein, damit die verknüpfte Aktion ausgeführt wird.

Ein Beispiel:

if anyof (size :over 1M, header :contains "subject" "große Dateianlage")

{

reject "Ich möchte keine Nachrichten, die behaupten, große Dateianlagen zu haben.";

}

body

Der Befehl body ist eine optionale Erweiterung. Um sie in einem Skript zu nutzen, müssen Sie daher den Befehl require "body" an den Beginn des Skripts setzen. Der Befehl wertet den Nachrichtentext einer Nachricht aus. Nähere Informationen hierzu erhalten Sie in dem Artikel Sieve's Body Extension (RFC-5173).

Ein Beispiel:

require ["body", "fileinto"];

if body :text :contains "Geheim-Formel" {

fileinto "admin";

}

envelope

Der Befehl envelope ist eine optionale Erweiterung. Um sie in einem Skript zu nutzen, müssen Sie daher den Befehl require "envelope" an dem Beginn des Skripts setzen. Der Befehl wertet die Inhalte des SMTP-Umschlags SMTP MAIL From und RCPT To aus; hierzu müssen als Parameter "from" und "to" eingesetzt werden.

Ein Beispiel:

require "envelope";

if envelope :is "from" "MrsFrank@company.com" {

redirect "frankshome@example.com";

}

exists

Diese Prüfung ergibt "wahr", falls die in den Parametern angegebenen Kopfzeilen in der Nachricht vorhanden sind. Es müssen jeweils alle angegebenen Kopfzeilen vorhanden sein.

Beispiele:

if exists "x-custom-header" {

redirect "admin@example.com";

}

-und-

if not exists ["from", "date"] {

discard;

}

false

Diese Prüfung ergibt immer das Ergebnis "falsch".

header

Diese Prüfung ergibt "wahr", falls der Inhalt der angegebenen Kopfzeile mit den angegebenen Bedingungen übereinstimmt. Wird kein Vergleichsoperator angegeben, so wird per Voreinstellung :is genutzt.

Ein Beispiel:

require "fileinto"

if header :is "x-custom-header" "01" {

fileinto "admin";

}

not

Die Verwendung dieses Befehls in Verbindung mit einer anderen Prüfung bedeutet, dass das Ergebnis der Prüfung umgekehrt sein muss, damit die mit der Prüfung verknüpfte Aktion ausgeführt wird. Beispielsweise bedeutet die Prüfung if not exists ["from", "date"] { discard; }, dass die Aktion discard ausgeführt wird, falls eine Nachricht die Kopfzeilen "from" und "date" nicht beide enthält. Würde in dem Beispiel der Befehl not weggelassen werden, so würde die Nachricht gelöscht werden, falls die Kopfzeilen beide existierten.

size

Zu dem Befehl size gehören die getaggten Parameter ":over" und ":under", nach denen jeweils ein numerischer Wert folgen muss. Diese Parameter bestimmen, ob die Größe einer Nachricht über oder unter dem angegebenen Wert liegen muss, damit die Prüfung das Ergebnis "wahr" erbringt. Um zu bestimmen, dass der Wert in Megabyte angegeben ist, können Sie dem Wert ein M anfügen, für Kilobyte ein K, und für Byte wird kein Buchstabe angefügt.

Ein Beispiel:

if size :over 500K {

discard;

}

spamtest

Der Befehl spamtest ist eine optionale Sieve-Erweiterung, die in dem Dokument Spamtest and VirusTest Extensions (RFC-3685) auf der Website ietf.org näher beschrieben ist. Dieses Dokument enthält Einzelheiten zu dieser Erweiterung.

true

Diese Prüfung ergibt immer das Ergebnis "wahr".

virustest

Der Befehl virustest ist eine optionale Sieve-Erweiterung, die in dem Dokument Spamtest and VirusTest Extensions (RFC-3685) auf der Website ietf.org näher beschrieben ist. Dieses Dokument enthält Einzelheiten zu dieser Erweiterung.

vnd.mdaemon.ai.prompt

Dieser Test wird im Rahmen der KI-Einstufung verwendet. Er ruft einen zuvor konfigurierten KI-Prompt auf (diese Prompts werden unter Sicherheit > KI-Einstufung > KI-Prompts definiert). Dieser Prompt übermittelt den Nachrichteninhalt an ein KI-Modell und erhält als Antwort die Einstufung.

Syntax: vnd.mdaemon.ai.prompt [MATCH-TYPE] <prompt-name> <expected-response>

prompt-name (String) - Name eines konfigurierten KI-Prompts.

expected-response (String) - Wert, mit dem die KI-Antwort abgeglichen werden soll.

Unterstützte Vergleichsoperatoren (Match Types):

:is - Genaue Übereinstimmung der gesamten Zeichenkette (des gesamten Strings) - dies ist die Voreinstellung.

:contains - Teilweise Übereinstimmung der Zeichenkette.

:matches - Abgleich unter Zuhilfenahme von Jokerzeichen (* und ? sind zulässig).

Erfordert: vnd.mdaemon.ai

Gültig in Phase: Ereignis DATA und danach (nachdem der Nachrichteninhalt verfügbar ist).

Überlegungen zur Leistung

Wichtig: Die KI-Prompts werden synchron ausgeführt, und die Ausführung findet während der Verarbeitung der Nachrichten statt. Um Verzögerungen in der Zustellung von Nachrichten zu vermeiden, berücksichtigen Sie folgende Anforderungen:

Gestalten Sie Prompts so, dass diese schnell Ergebnisse melden - Fassen Sie Prompts präzise, und nutzen Sie effiziente KI-Modelle.

Legen Sie angemessene Timeouts fest - Konfigurieren Sie für die verwendeten KI-Modelle Timeouts, nach denen die Vorgänge wegen Zeitüberschreitung abgebrochen werden. So verhindern Sie eine unbegrenzte Blockierung.

Vermeiden Sie thinking-Modi - Verwenden Sie keine KI-Modelle mit erweiterten Modi "thinking" oder "reasoning" (z.B., o1, o3, o1-pro), da diese die Antwortzeit erheblich verlängern.

Nutzen Sie selektive Bedingungen - Kombinieren Sie diesen Test mit anderen Sieve-Testbefehlen. Sie begrenzen so die Fälle, in denen KI-Modelle aufgerufen werden. Ein Beispiel hierzu:

require ["vnd.mdaemon.ai", "spamtest"];

# KI nur für Nachrichten nutzen, die grundlegende Spam-Prüfungen bestehen

if allof(spamtest :value "lt" :comparator "i;ascii-numeric" "5",

        not header :contains "subject" "unsubscribe") {

   if vnd.mdaemon.ai.prompt :is "PhishingCheck" "YES" {

       discard;

   }

}

Anforderungen an die Konfiguration

Bevor Sie diesen Test in Sieve-Regeln verwenden können, müssen Sie in der Webschnittstelle von SecurityGateway folgende Konfigurationsschritte ausführen:

1.KI-Modelle (Sicherheit > KI-Einstufung > KI-Modelle)

oKonfigurieren Sie die Verbindung mit einem zu OpenAI kompatiblen KI-Modell.

oKonfigurieren Sie Endpunkt-URL, Namen des Modells und API-Schlüssel.

oKonfigurieren Sie die Einstellungen für den Timeout.

2.KI-Prompts (Sicherheit > KI-Einstufung > KI-Prompts)

oErstellen Sie einen Prompt mit einem eindeutigen Namen (auf diesen beziehen sich die Sieve-Regeln).

oVerknüpfen Sie den Prompt mit einem konfigurierten KI-Modell.

oDefinieren Sie eine Vorlage für den Prompt, die die Nachrichten-Variablen enthält.

oKonfigurieren Sie die Auswertung der Antworten.

Der Name des Prompts, der im Sieve-Test angegeben wird, muss dem Namen eines konfigurierten Prompts genau entsprechen.

Beispiele:

Phishing-Erkennung

Es sollen ausgefeilte Phishing-Versuche erkannt und die Nachrichten betreffendenfalls in Quarantäne gegeben werden:

require "vnd.mdaemon.ai";

if vnd.mdaemon.ai.prompt :is "PhishingCheck" "YES" {

   quarantine "KI hat möglichen Phishing-Versuch erkannt";

}

 

Einstufung von Inhalten mithilfe von Jokerzeichen

Es sollen Nachrichten in Kategorien unterteilt und in die entsprechenden Ordner sortiert werden:

require ["vnd.mdaemon.ai", "fileinto"];

if vnd.mdaemon.ai.prompt :matches "CategoryClassifier" "SPAM*" {

   fileinto "Junk";

} elsif vnd.mdaemon.ai.prompt :matches "CategoryClassifier" "MARKETING*" {

   fileinto "Marketing";

}

 

Erkennung wichtiger Nachrichten

Es sollen Nachrichten gekennzeichnet werden, die sofortige Bearbeitung erfordern:

require ["vnd.mdaemon.ai", "imap4flags"];

if vnd.mdaemon.ai.prompt :contains "UrgencyLevel" "HIGH" {

   addflag "\\Flagged";

   addheader "X-Priority" "1";

}

 

Analyse der Stimmungslage

Es sollen Nachrichten auf Grundlage der durch die KI in ihnen erkannten Stimmungslage geroutet werden:

require "vnd.mdaemon.ai";

if vnd.mdaemon.ai.prompt :is "SentimentAnalysis" "NEGATIVE" {

   addheader "X-Kunden-Stimmung" "Negativ";

   redirect "kunden-support@example.com";

}

 

Erkennung von Complianceverstößen

Es sollen Nachrichten identifiziert werden, die möglicherweise sensitive Informationen enthalten:

require "vnd.mdaemon.ai";

if vnd.mdaemon.ai.prompt :contains "ComplianceCheck" "PII" {

   addheader "X-Contains-PII" "Yes";

   redirect "compliance@example.com";

}

 

vnd.mdaemon.display_name_protection

Der Schutz der Anzeigenamen prüft, ob die Anzeigenamen von Absendern (die der Absenderkopfzeile From entnommen werden) den Namen geschützter Benutzer ähneln, da dies auf Angriffe mit vorgetäuschten Identitäten hinweisen kann. Ein Ähnlichkeitsschwellwert (0.0-1.0) bestimmt, wie groß die Ähnlichkeit sein muss, damit eine Entsprechung erkannt wird. Je höher der Wert ist, desto stärker muss die Ähnlichkeit sein. Der Standard-Wert beträgt 1.0. Die Prüfung ergibt true (wahr), falls die Ähnlichkeit des Anzeigenamen eines Absenders mit dem Namen eines geschützten Benutzers den Ähnlichkeitsschwellwert übersteigt und kein Ausschluss besteht. In den anderen Fällen ergibt die Prüfung false (unwahr).

Dieser Test enthält eine zweistufige Prüfung auf Ausschlüsse:

Nach Domänen getrennte Ausschlussliste für Absender: Nachrichten von Absendern auf dieser Liste werden nie durch die Funktion zum Schutz der Anzeigenamen wegen Verdachts einer vorgetäuschten Identität gekennzeichnet. Dieser Ausschluss ist unabhängig vom Ähnlichkeitsgrad wirksam. Jokerzeichen sind zulässig (z.B., *@company.com, benutzer*@domain.com). Diese Liste wird in den Einstellungen für den Schutz der Anzeigenamen unter "Nachrichten, nicht prüfen, falls sie von den nachfolgend aufgeführten E-Mail-Adressen aus versandt werden" konfiguriert.

Persönliche Adresslisten der Benutzer: Der Test kennzeichnet solche Absender nicht, die in der persönlichen Adressliste eines geschützten Benutzers erfasst sind. Dieser Ausschluss wirkt nur auf Nachrichten, die an den betreffenden Benutzer gerichtet sind.

Syntax: vnd.mdaemon.display_name_protection [:nicknames] [Schwellwert]

Gültig in Phase: Ereignis DATA und danach (nachdem die Kopfzeilen der Nachricht verfügbar sind).

:nicknames (optional): Wenn dieser Parameter angegeben ist, werden Spitznamen und Verniedlichungsformen erkannt. Allgemein übliche Varianten von Vornamen werden dann als Übereinstimmungen gewertet. Einige Beispiele hierzu, die jeweils als übereinstimmend gewertet werden: "Bob Smith" und "Robert Smith", "Matt Jones" und "Matthew Jones", "Fritz Mayer" und "Friedrich Mayer", "Willi Berger" und "Wilhelm Berger", "Susi Müller" und "Susanne Müller". Diese Option hilft bei der Erkennung von vorgetäuschten Identitäten, bei denen informelle Varianten von Namen eingesetzt werden.

Schwellwert (optional): Dies ist eine Dezimalzahl zwischen 0.0 und 1.0, die den Ähnlichkeitsschwellwert bestimmt (Voreinstellung: 1.0) Je höher der Schwellwert liegt, desto genauer größer muss die Ähnlichkeit sein, damit sie als vorgetäuschte Identität gewertet wird.

Beispiele

Es sollen Nachrichten mit vorgetäuschten Identitäten abgewiesen werden; der Ähnlichkeitsschwellwert soll der Voreinstellung entsprechen:

require "securitygateway";

if vnd.mdaemon.display_name_protection {

   reject "Spoofing im Anzeigenamen erkannt";

}

 

Es sollen Spitznamen und Verniedlichungsformen als informelle Varianten von Namen erkannt und als Übereinstimmung gewertet werden:

require "securitygateway";

if vnd.mdaemon.display_name_protection :nicknames "0.85" {

   reject "Spoofing im Anzeigenamen erkannt";

}

 

Es soll ein strikterer Ähnlichkeitsschwellwert (0.90) verwendet werden; Nachrichten sollen nicht abgewiesen sondern in Quarantäne gegeben werden:

require "securitygateway";

if vnd.mdaemon.display_name_protection "0.90" {

   fileinto "spam";

}

 

Es sollen striktere Richtlinien für externe Absender gelten, die Nachrichten über Freemail-Anbieter versenden; Spitznamen und Verniedlichungsformen sollen erkannt werden:

require "securitygateway";

if allof (vnd.mdaemon.sender_is_free_email,

         vnd.mdaemon.display_name_protection :nicknames "0.85") {

   reject "Mögliche vorgetäuschte Identität bei Nachricht von einem Freemail-Anbieter";

}

 

Es soll in Grenzfällen eine Kopfzeile mit einer Warnung eingefügt werden:

require "securitygateway";

if vnd.mdaemon.display_name_protection "0.75" {

   addheader "X-Possible-Spoofing" "Ähnlichkeit im Anzeigenamen erkannt";

}

 

vnd.mdaemon.sender_is_free_email

Dieser Test prüft, ob die E-Mail-Adressen von Absendern (die der Absenderkopfzeile From entnommen werden) zu Freemail-Anbietern gehören, wie etwa Gmail, Yahoo, Hotmail, Outlook, ProtonMail usw. Die Prüfung ergibt true (wahr), falls die Domäne des Absenders einem bekannten Freemail-Anbieter entspricht. In den anderen Fällen ergibt die Prüfung false (unwahr).

Syntax: vnd.mdaemon.sender_is_free_email

Gültig in Phase: Ereignis DATA und danach (nachdem die Kopfzeilen der Nachricht verfügbar sind).

Keine Parameter.

Freemail-Anbieter, die durch diesen Test erkannt werden

Dieser Test erkennt die großen Freemail-Anbieter. Hierzu gehören:

Gmail (gmail.com, googlemail.com)

Yahoo Mail (yahoo.com und regionale Varianten)

Outlook/Hotmail (hotmail.com, outlook.com, live.com, msn.com)

ProtonMail (protonmail.com, proton.me)

iCloud (icloud.com, me.com, mac.com)

AOL (aol.com)

sowie zahlreiche weitere (GMX, Mail.com, Zoho, Yandex, Mail.ru, FastMail, Tutanota, etc.)

Beispiele

Es sollen Nachrichten für weitere Prüfung gekennzeichnet werden, die über Freemail-Anbieter versandt wurden:

require "securitygateway";

if vnd.mdaemon.sender_is_free_email {

   addheader "X-Free-Email-Provider" "Yes";

}

 

Es sollen striktere Richtlinien für externe Absender gelten, die Nachrichten über Freemail-Anbieter versenden:

require "securitygateway";

if allof (vnd.mdaemon.sender_is_free_email,

         not vnd.mdaemon.display_name_spoofed "0.90") {

   reject "Mögliche vorgetäuschte Identität bei Nachricht von einem Freemail-Anbieter";

}

Aktions-Befehle

Nachfolgend sind die Standard-Aktions-Befehle beschrieben, die von SecurityGateway unterstützt werden. Die Befehle fileinto und reject sind jedoch Erweiterungen; falls Sie einen dieser Befehle in einem Skript verwenden wollen, müssen Sie sie mithilfe des Befehls require einbinden. Es stehen in der Erweiterung securitygateway noch zahlreiche weitere Aktions-Befehle zur Verfügung. Sie sind auf der Seite Sieve-Erweiterungen für SecurityGateway beschrieben.

fileinto

Der Aktions-Befehl fileinto ist eine optionale Erweiterung. Um sie in einem Skript zu nutzen, müssen Sie daher den Befehl require "fileinto" an den Beginn des Skripts setzen. Zu diesem Befehl gehören zwei Parameter: "spam" und "admin". "spam" verschiebt die Nachricht in die Quarantäne des Benutzers, und "admin" verschiebt sie in die Administrative Quarantäne.

Ein Beispiel:

require "fileinto";

if header :contains "from" "Frank Thomas" {

fileinto "spam";

}

discard

Durch diesen Befehl wird eine Nachricht ohne weiteres gelöscht. Es werden auch keine Statusnachrichten über den Löschvorgang versandt.

Ein Beispiel:

if size :over 2M { discard; }

keep

Diese Aktion bewirkt, dass die Nachricht an dem Standard-Speicherort gespeichert wird.

redirect

Dieser Befehl leitet die Nachricht an die in dem zugehörigen Parameter angegebene Adresse um, wobei der Nachrichtentext und die bestehenden Kopfzeilen nicht geändert werden. Dieser Befehl unterstützt auch die optionale Erweiterung :copy, die bewirkt, dass eine Kopie der Nachricht an die angegebene Adresse gesandt, die Nachricht selbst aber nicht umgeleitet wird. Es sind dann zusätzlich zum Versand der Kopie weitere Aktionen möglich.

Ein Beispiel:

require "copy";

if header :contains "subject" "Antwort auf XYZ" {

redirect :copy "offers@example.com";

bayes-learn "ham";

}

reject

Der Aktions-Befehl reject ist eine optionale Erweiterung. Um sie in einem Skript zu nutzen, müssen Sie daher den Befehl require "reject" an den Beginn des Skripts setzen. Dieser Befehl bewirkt, dass die Nachricht während der SMTP-Verbindung mit einem Antwortkode 5xx angewiesen wird; dabei kann eine kurze, im Parameter angegebene Meldung übermittelt werden.

Ein Beispiel:

require "reject";

if size :over 5M {

reject "Empfang nicht möglich! Diese Nachricht ist zu groß.";

}

vnd.mdaemon.securewebmsg

Dieser Aktions-Befehl bewirkt, dass eine Nachricht mithilfe des SecurityGateway-Portals für Sichere Nachrichten versandt wird.

Ein Beispiel:

require ["securitygateway","reject","fileinto","envelope","body","regex"];

if allof(header :matches "subject" "[Sichere Nachricht]*")

{

vnd.mdaemon.securewebmsg;

}

vnd.mdaemon.securewebmsg

Dieser Aktionsbefehl bewirkt den Versand einer Nachricht über das SecurityGateway-Portal für Sichere Nachrichten. Eine solche Nachricht wird nicht direkt über SMTP versandt sondern in der Datenbank von SecurityGateway gespeichert. Der Empfänger wird per E-Mail benachrichtigt und erhält eine Verknüpfung mit deren Hilfe er sich die Nachricht in einem Webbrowser sicher anzeigen lassen kann. Diese Aktion ermöglicht die Ende-zu-Ende-Verschlüsselung und die sichere Übermittlung für sensible Kommunikationsinhalte mit Dritten, die möglicherweise nicht über eine sichere E-Mail-Infrastruktur verfügen. Typische Anwendungsfälle sind die Data Leak Prevention (das Verhindern von Datendiebstahl), der sichere Versand geheimhaltungsbedürftiger oder sensibler Informationen sowie die Einhaltung von Complianceanforderungen.

Diese Aktion steht nur in den Regeln des Inhaltsfilters und der Data Leak Prevention (Aktion "Als sichere Web-Nachricht senden")und in manuell erstellten Sieve-Skripten zur Verfügung.

Syntax: vnd.mdaemon.securewebmsg

Parameter: keine

Erfordert: securitygateway

Gültig in Phase: Jederzeit während der Verarbeitung von Nachrichten.

Funktionsweise

Wenn diese Aktion für eine Nachricht ausgeführt wird, dann:

wirkt die Aktion nur auf Nachrichten, die an externe (nicht-lokale) Empfänger versandt werden. Nachrichten an lokale Empfänger werden dagegen normal zugestellt.

erhält der Empfänger per E-Mail eine Benachrichtigung mit einer sicheren Verknüpfung, mit deren Hilfe er im Webportal von SecurityGateway Zugriff auf die vollständige Nachricht erhält.

wird für den Empfänger automatisch ein Benutzerkonto für externe Benutzer erstellt, falls für den Empfänger noch kein solches Benutzerkonto besteht und falls die automatische Erstellung von Benutzerkonten für die betreffende Domäne aktiv ist.

greifen die Empfänger mithilfe eines Webbrowsers auf die Nachrichten zu und durchlaufen hierzu eine Anmeldung (Prüfung per E-Mail, Kennwort oder Mehr-Faktor-Authentifizierung).

wird der Nachrichteninhalt in der Datenbank von SecurityGateway verschlüsselt gespeichert und über HTTPS übermittelt.

Anforderungen an die Konfiguration

Bevor Sie diese Aktion verwenden können, muss das Portal für sichere Nachrichten konfiguriert werden:

Sichere Nachrichten aktivieren - Sie müssen sichere Nachrichten für die Domäne des Absenders aktivieren (Einstellungen/Benutzer > Sichere Nachrichten > Konfiguration)

Einstellungen für externe Benutzer - Sie müssen die Regeln für die Erstellung von Benutzerkonten für externe Benutzer und die Anforderungen für Anmeldung und Echtheitsbestätigung konfigurieren.

Zugriff auf das Portal - Sie müssen sicherstellen, dass das Webportal von SecurityGateway für externe Empfänger erreichbar ist.

Vorlagen für die Benachrichtigung - Sie können wahlweise die E-Mail-Vorlagen für die Benachrichtigungen anpassen.

Beispiele

require ["securitygateway","reject","fileinto","envelope","body","regex"];

if allof(header :matches "subject" "[Sichere Nachricht]*")

{

vnd.mdaemon.securewebmsg;

}

Versand als sichere Nachricht bei sensiblen Schlüsselwörtern

Es sollen Nachrichten automatisch über das Portal für sichere Nachrichten versandt werden, falls sie sensible Schlüsselwörter enthalten:

require "securitygateway";

if header :contains "subject" ["vertraulich", "privat", "sensitiv"] {

   vnd.mdaemon.securewebmsg;

}

Versand als sichere Nachricht in Abhängigkeit von der Domäne des Empfängers

Es sollen Nachrichten an bestimmte externe Domänen automatisch über das Portal für sichere Nachrichten versandt werden:

require "securitygateway";

if address :domain :is "to" ["mitbewerber.com", "externer-partner.net"] {

   vnd.mdaemon.securewebmsg;

}

Versand als sichere Nachricht bei großen Dateianlagen

Es sollen Nachrichten mit großen Dateianlagen automatisch über das Portal für sichere Nachrichten versandt werden, um Größenbegrenzungen für E-Mail-Nachrichten zu vermeiden:

require ["securitygateway", "fileinto"];

if size :over 10M {

   vnd.mdaemon.securewebmsg;

}

Versand als sichere Nachricht aufgrund von Compliance-Anforderungen

Es sollen Nachrichten automatisch über das Portal für sichere Nachrichten versandt werden, um die Einhaltung von gesetzlichen Anforderungen sicherzustellen:

require "securitygateway";

# Nachrichten über Portal für sichere Nachrichten versenden, die möglicherweise personenbezogene Daten enthalten

if header :contains "X-Contains-PII" "Yes" {

   vnd.mdaemon.securewebmsg;

}

Versand als sichere Nachricht bei bestimmten Absendern

Es sollen Nachrichten von bestimmten internen Absendern automatisch über das Portal für sichere Nachrichten versandt werden:

require "securitygateway";

if address :is "from" ["vorstand@example.com", "rechtsabteilung@example.com", "personalabteilung@example.com"] {

   vnd.mdaemon.securewebmsg;

}

Kombination mit weiteren Aktionen

Sie können die Aktion für sichere Nachrichten mit weiteren Aktionen kombinieren:

require "securitygateway";

if header :contains "subject" "vertraulich" {

   addheader "X-Sensitive-Content" "Yes";

   vnd.mdaemon.securewebmsg;

}

Sieve-Beispielskripte

Alle Nachrichten abweisen, deren Betreffzeile "[SPAM]" enthält

require "reject";

if header :contains "subject" "[SPAM]"

{

reject "Ich will Ihren Spam nicht haben";

}

Alle Nachrichten an einen bestimmten Vor- und Nachnamen abweisen

require ["securitygateway","reject"];

if header :contains "to" "Vor- und Nachname"

{

bayes-learn "spam";

reject "Ich will Ihren Spam nicht haben";

}

Benutzerdefiniertes Bayes'sches automatisches Lernverfahren

require ["securitygateway","comparator-i;ascii-numeric"];

if allowlisted

{

bayes-learn "ham";

}

elsif anyof(blocklisted,spamtotal :value "gt" :comparator "i;ascii-numeric" "20.0")

{

bayes-learn "spam";

}

Treffer aus DNSBL in Graue Liste eintragen

require "securitygateway"];

if not lookup "rblip" "all" {greylist;}

Administrator benachrichtigen, wenn große Nachrichten eingehen

require ["securitygateway"];

if size :over 1M

{

alert text:

To: admin@company.mail

From: postmaster@$RECIPIENTDOMAIN$

Subject: Nachricht des Inhaltsfilters von SecurityGateway

X-Attach-Msg: No

$RECIPIENT$ hat eine Nachricht empfangen, die größer als 1MB ist.

.

;

}

Als sichere Nachricht senden, falls die Betreffzeile mit "[Sichere Nachricht]" beginnt

require ["securitygateway","reject","fileinto","envelope","body","regex"];

if allof(header :matches "subject" "[Sichere Nachricht]*")

{

vnd.mdaemon.securewebmsg;

}