Sieve-Erweiterungen für SecurityGateway |
Scrollen Zurück Oberste Ebene Weiter Mehr |
Um die in SecurityGateway enthaltenen Sieve-Erweiterungen in einem Skript zu nutzen, müssen Sie an den Beginn des Skripts den folgenden Befehl require stellen:
require “securitygateway”;
Die Prüfung ip kann zu einem beliebigen Zeitpunkt während des SMTP-Vorgangs durchgeführt werden (also während jeder Ereignisgruppe).
•cidr—Der zweite Parameter ist die IP-Adresse oder das Muster, das mit der IP-Adresse des Clients verglichen wird. Es kann eine bestimmte IP-Adresse, ein Adressbereich in CIDR-Schreibweise (z.B. 10.0.0.0/24 ) oder ein Muster mit Jokerzeichen: ? (1 beliebiges Zeichen), * (kein Zeichen oder ein oder mehrere beliebige Zeichen), # (mindestens eine Ziffer) sein (z.B. 10.*.*.* ).
Beispiel-Kode: if not ip :cidr "10.0.0.0/24" { greylist; }
•public—Wahr, falls die IP-Adresse des Clients nicht zu einem privaten Subnetz nach RFC-1918 gehört, keine Loopback-Adresse und keine durch DHCP automatisch vergebene Adresse ist, ansonsten falsch (127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 169.254.0.0/16).
Beispiel-Kode: if ip “public” { greylist; }
•private—Logisches Gegenteil von public.
•ssl—Wahr, falls der Client erfolgreich eine verschlüsselte Verbindung (über SSL) aufgebaut hat.
•des—Wahr, falls der Client ein Mailserver der Domäne ist.
Es hängt vom ersten Parameter ab, wann die Prüfung lookup aufgerufen werden kann:
•ptr—Ist dies der erste Parameter, so kann die Prüfung lookup jederzeit durchgeführt werden. Der zweite Parameter kann ein normaler getaggter Parameter oder "resolves", "resolvestoclient" oder "error" sein.
•resolves—Wahr, falls der PTR-Eintrag existiert.
•resolvestoclient—Wahr, falls sich der PTR-Eintrag richtig auflösen lässt, also eine Abfrage des A-Eintrags für den PTR-Host die IP-Adresse des Clients ergibt.
•error—Wahr, falls ein vorübergehender Fehler in der DNS-Abfrage aufgetreten ist.
•helo—Ist dies der erste Parameter, so kann die Prüfung lookup erst bei oder nach Gabe des Befehls HELO durchgeführt werden. Der zweite Parameter kann “resolves”, “resolvestoclient” oder “error” sein.
•resolves—Wahr, falls der HELO-Parameter eine gültige IP-Adresse oder ein gültiger Hostname ist.
•resolvestoclient—Wahr, falls der HELO-Parameter richtig ist, also eine Abfrage des A-Eintrags für den Parameter die IP-Adresse des Clients ergibt.
•error—Wahr, falls ein vorübergehender Fehler in der DNS-Abfrage aufgetreten ist.
•mail—Ist dies der erste Parameter, so kann die Prüfung lookup erst bei oder nach Gabe des Befehls MAIL durchgeführt werden. Der zweite Parameter kann “resolves”, “resolvestoclient” oder “error” sein.
•resolves—Wahr, falls die Domäne aus MAIL FROM eine gültige Domäne ist.
•resolvestoclient—Wahr, falls die Domäne aus MAIL FROM richtig ist, also eine Abfrage des A-Eintrags der Domäne aus MAIL FROM die IP-Adresse des Clients ergibt.
•error—Wahr, falls ein vorübergehender Fehler in der DNS-Abfrage aufgetreten ist.
•spf—Ist dies der erste Parameter, so kann die Prüfung lookup erst bei oder nach Gabe des Befehls MAIL durchgeführt werden. Der zweite Parameter kann “pass”, “fail” oder “error” sein.
•pass—Wahr, falls für den Absender das SPF-Ergebnis pass, lautet; falsch, bei Ergebnis neutral oder fail.
•fail—Wahr, falls die SPF-Prüfung für den Absender fehlschlägt; falsch bei Ergebnis neutral oder pass.
•error—Wahr, falls bei der Verarbeitung ein Fehler aufgetreten ist (meist ein Fehler in der DNS-Abfrage).
•rblip—Ist dies der erste Parameter, so kann die Prüfung lookup jederzeit durchgeführt werden. Der zweite Parameter kann “all”, “any oder “error” sein.
•all—Wahr, falls die IP-Adresse des Clients alle Abfragen von Sperrlisten für DNS bestanden hat.
•any—Wahr, falls die IP-Adresse des Clients mindestens eine Abfrage einer Sperrliste für DNS bestanden hat.
•error—Wahr, falls bei der Verarbeitung ein Fehler aufgetreten ist (meist ein Fehler in der DNS-Abfrage).
•rblhdr—Ist dies der erste Parameter, so kann die Prüfung lookup erst bei oder nach Gabe des Befehls DATA durchgeführt werden. Der zweite Parameter kann “all”, “any oder “error” sein.
•all—Wahr, falls die Received-Kopfzeilen alle Abfragen von Sperrlisten für DNS bestanden haben.
•any—Wahr, falls die Received-Kopfzeilen mindestens eine Abfrage einer Sperrliste für DNS bestanden haben.
•error—Wahr, falls bei der Verarbeitung ein Fehler aufgetreten ist (meist ein Fehler in der DNS-Abfrage).
Die Prüfung port kann jederzeit durchgeführt werden. Der einzige Parameter ist die Port-Nummer, die mit dem Port verglichen wird, zu dem der Client tatsächlich eine Verbindung hergestellt hat.
Beispiel-Kode: if port 25 { greylist; }
Es hängt vom ersten Parameter ab, wann die Prüfung auth aufgerufen werden kann:
•succeeded—Wahr, falls die Echtheitsbestätigung erfolgreich war. Ist dies der erste Parameter, so kann die Prüfung auth bei Gabe des Befehls AUTH oder später durchgeführt werden.
•match—Wahr, falls die Echtheitsbestätigung erfolgreich ist und die Adresse aus MAIL FROM mit dem Benutzerkonto übereinstimmt, das sich angemeldet hat. Ist dies der erste Parameter, so kann die Prüfung auth bei Gabe des Befehls MAIL oder später durchgeführt werden.
Die Prüfung verify prüft Adressen auf Gültigkeit (vgl. Datenquellen für Benutzerprüfung). Anders als die anderen Prüfungen wir diese Prüfung immer durchgeführt, selbst dann, wenn sie nicht in einem Sieve-Filter enthalten ist. Es wird jede Adresse aus einem Befehl MAIL FROM und RCPT TO geprüft, und die Ergebnisse werden zwischengespeichert. Es hängt vom ersten Parameter ab, wann die Prüfung verify aufgerufen werden kann:
•from—Wahr, falls die Adresse aus MAIL FROM eine gültige lokale Adresse ist. Ist dies der erste Parameter, so kann die Prüfung verify bei oder nach Gabe des Befehls MAIL durchgeführt werden.
•fromdomain—Wahr, falls die Adresse aus MAIL FROM zu einer gültigen lokalen Domäne gehört. Ist dies der erste Parameter, so kann die Prüfung verify bei oder nach Gabe des Befehls MAIL durchgeführt werden.
•fail_from—Wahr, falls bei der Prüfung der Adresse aus MAIL FROM ein Fehler aufgetreten ist. Ist dies der erste Parameter, so kann die Prüfung verify bei oder nach Gabe des Befehls MAIL durchgeführt werden.
•to—Wahr, falls die Adresse aus RCPT TO eine gültige lokale Adresse ist. Ist dies der erste Parameter, so kann die Prüfung verify bei oder nach Gabe des Befehls RCPT durchgeführt werden.
•todomain—Wahr, falls die Adresse aus RCPT TO zu einer gültigen lokalen Domäne gehört. Ist dies der erste Parameter, so kann die Prüfung verify bei oder nach Gabe des Befehls RCPT durchgeführt werden.
•fail_to—Wahr, falls bei der Prüfung der Adresse aus RCPT TO ein Fehler aufgetreten ist. Ist dies der erste Parameter, so kann die Prüfung verify bei oder nach Gabe des Befehls RCPT durchgeführt werden.
Die Prüfung dkim vergleicht die Ergebnisse der Prüfung über DomainKeys Identified Mail (DKIM) und kann erst bei Gabe des Befehls DATA durchgeführt werden.
•pass—Wahr, falls die Nachricht mithilfe von DKIM signiert ist und die Signatur erfolgreich geprüft wurde.
•fail—Wahr, falls die Prüfung über DKIM das Ergebnis hard fail erbringt (ADSP-Option muss aktiv sein).
•error—Wahr, falls bei der Verarbeitung der DKIM-Signatur ein Fehler aufgetreten ist.
Die Prüfung cbv kann bei Gabe des Befehls MAIL oder danach durchgeführt werden. Ohne Parameter ergibt sie das Ergebnis wahr, falls die Adresse aus MAIL FROM die Prüfung durch Rückruf besteht.
•error—Wahr, falls bei der Prüfung durch Rückruf ein Fehler aufgetreten ist.
Die Prüfung spamtotal vergleicht die Nachrichten-Bewertung und kann während jeder Ereignisgruppe durchgeführt werden. Sie soll in den meisten Fällen jedoch als letzter Filter in der Ereignisgruppe DATA eingesetzt werden, damit alle anderen Filter bereits abgearbeitet und ihre Ergebnisse in die Nachrichten-Bewertung eingeflossen sind.
Die Prüfung spamtotal hat nur einen Parameter, den Schwellwert. Ist die Nachrichten-Bewertung größer oder gleich dem Schwellwert, ergibt sie das Ergebnis wahr, ansonsten falsch.
Die Prüfung OutbreakProtection kann nur in der Ereignisgruppe DATA durchgeführt werden. Ohne Parameter ergibt sie das Ergebnis wanr, falls die Outbreak Protection eine Nachricht als Spam, vireninfiziert oder Massennachricht einstuft.
•spam—Wahr, falls die Outbreak Protection die Nachricht als Spam einstuft.
•virus—Wahr, falls die Outbreak Protection die Nachricht als vireninfiziert einstuft.
•phish—Wahr, falls die Outbreak Protection die Nachricht als Phishing-Nachricht einstuft.
•suspect—Wahr, falls die Outbreak Protection die Nachricht als spamverdächtig einstuft.
•bulk—Wahr, falls die Outbreak Protection die Nachricht als Massennachricht einstuft.
•error—Wahr, falls während der Verarbeitung durch die Outbreak Protection ein Fehler aufgetreten ist.
Diese Prüfung hat aus Gründen der Abwärtskompatibilität einen Alias: exempt. Es hängt vom ersten Parameter ab, wann diese Prüfung durchgeführt werden kann:
•all—Vorgehensweise wie ohne Parameter; ergibt wahr, falls der Client in einer Freigabeliste eingetragen ist. Diese Prüfung kann jederzeit aufgerufen werden und greift auf die jeweils verfügbaren Informationen zurück. Wird sie etwa in der Ereignisgruppe IP (der ersten Ereignisgruppe) aufgerufen, so werden nur IPs auf der Freigabeliste und Hosts, deren PTR-Eintrag übereinstimmt, verglichen.
•ip—Wahr, falls der Client in der Freigabeliste für IPs eingetragen ist. Kann jederzeit durchgeführt werden.
•host—Wahr, falls der Client in der Freigabeliste für Hosts eingetragen ist. Prüfung kann anhand von HELO-Parameter oder PTR-Host durchgeführt werden. Kann in Ereignisgruppe HELO oder später aufgerufen werden.
•mail—Wahr, falls MAIL FROM in der Freigabeliste für Adressen eingetragen ist. Kann in Ereignisgruppe MAIL oder später aufgerufen werden.
•from—Wahr, falls Kopfzeile From: in der Freigabeliste für Adressen eingetragen ist. Kann nur in Ereignisgruppe DATA aufgerufen werden.
Diese Prüfung hat aus Gründen der Abwärtskompatibilität einen Alias: blacklist. Parameter und Funktionsweise entsprechen der Prüfung allowlist, jedoch werden die Vergleiche mit den Sperrlisten vorgenommen.
Der Befehl error entspricht dem Befehl "reject", der in RFC-3028 definiert ist, hat jedoch zwei Parameter. Der erste Parameter ist der SMTP-Fehlerkode, und der zweite Parameter ist eine Textmeldung. Beide werden als Antwort auf den jeweils vom Client empfangenen Befehl gesendet.
Der Befehl disconnect entspricht dem Befehl “error”, er trennt schließt jedoch außerdem den TCP/IP-Socket. Die Vorgehensweise gleicht der Option zum Trennen der Verbindung in MD.
Der Befehl greylist aktiviert die Graue Liste.
Der Befehl dynamicscreen aktiviert den Dynamischen Filter.
Der Befehl tarpit aktiviert die Teergrube.
Der Befehl sign fügt der Nachricht eine Signatur-Kopfzeile hinzu. Der erste Parameter kann sein:
•dkim—Nachricht über DKIM signieren. Der zweite Parameter ist der Name des zu verwendenden Selektors.
Der Befehl throttle aktiviert die Bandbreitenbegrenzung. Der erste Parameter ist die Bandbreitenbegrenzung in Zeichen pro Sekunde.
Der Befehl ipshield aktiviert die IP-Abschirmung.
Der Befehl spamscore rechnet der Nachrichten-Bewertung der Nachricht den als ersten Parameter übergebenen Wert hinzu. Vgl. auch die Prüfung spamtotal.
Der Befehl tagheader stellt einer Kopfzeile der Nachricht eine Kennzeichnung voran. Der erste Parameter ist die zu ändernde Kopfzeile. Der zweite Parameter ist der Text, der in den Wert der Kopfzeile eingefügt werden soll.
Der Befehl addheader fügt der Nachricht eine neue Kopfzeile hinzu. Der erste Parameter ist der Name der neuen Kopfzeile. Der zweite Parameter ist ihr Wert.
Der Befehl removeheader entfernt eine Kopfzeile aus der Nachricht. Der erste Befehl ist die zu entfernende Kopfzeile.
Der Befehl alert sendet eine Nachricht. Der einzige Parameter ist ein Nachrichtentext, einschließlich der Kopfzeilen für Absender, Empfänger, Betreff und sonstiger etwa benötigter Kopfzeilen. In dem gesamten Text werden Makros ausgewertet und umgesetzt.
Der Befehl changesender wird verwendet, um den Inhalt des Befehls SMTP MAIL FROM zu ändern, den SecurityGateway bei Zustellung einer Nachricht verwendet. Dieser Befehl kann beispielsweise eingesetzt werden, wenn Domänennamen verwendet werden, die nur intern gültig sind und für den Versand von Nachrichten an Empfänger außerhalb dieser internen Domäne geändert werden müssen.
Ein Beispiel:
require ["securitygateway", "envelope"];
if envelope :matches "From" "frank@interne.mail"
{
changesender "frank@example.com";
}
•Das Skript muss im Verzeichnis "Ausführbare Dateien für Sieve-Skripte" abgelegt sein. Dieses Verzeichnis kann auf der Seite Einstellungen » System » Verzeichnisse konfiguriert werden. Das Sieve-Schlüsselwort "execute" kann sowohl als Aktions-Befehl als auch als Test-Befehl verwendet werden.
•Der erste Parameter ist der Name des Skripts. Dateien der Typen .bat, .exe und PowerShell werden unterstützt.
•Der zweite Parameter sind die Argumente, die dem Prozess übergeben werden. Die Sieve-Variable message_filename wird durch den vollständigen Pfad zur RFC822-Quelle der jeweils gerade verarbeiteten Nachricht ersetzt.
Ein Beispiel:
require ["securitygateway","relational","comparator-i;ascii-numeric"];
execute "Test.ps1" "-msg '${message_filename}'";
Der Text des PowerShell-Skripts, das den Dateinamen jeder verarbeiteten Datei protokolliert, lautet...
param
(
[string]$msg = ""
)
Add-Content -Path "c:\verarbeitete_dateien.txt" -Value $msg
Write-Host $msg