Sieve ist eine Programmiersprache, die zur E-Mail-Filterung verwendet werden kann. Ihre Entstehung verdankt sie dem CMU Cyrus Project, den Erstellern des Cyrus IMAP-Servers.
Die Sprache ist nicht an ein bestimmtes Betriebssystem oder eine E-Mail-Architektur gebunden. Es erfordert die Verwendung von RFC 2822-kompatiblen Nachrichten, sollte sich aber ansonsten auf andere Systeme verallgemeinern, die diese Kriterien erfüllen. Die aktuelle Version der Basisspezifikation von Sieve ist in RFC 5228 (Januar 2008) beschrieben.
Sprache [ edit ]
Sieve ist eine datengesteuerte Programmiersprache, ähnlich wie frühere E-Mail-Filtersprachen wie procmail und maildrop und ältere zeilenorientierte Sprachen wie sed und AWK: Es gibt Bedingungen an, die abgeglichen werden sollen, und Aktionen, die beim Abgleich übernommen werden.
Dies unterscheidet sich von allgemeinen Programmiersprachen dadurch, dass sie stark eingeschränkt ist - der Basisstandard hat keine Variablen und keine Schleifen (erlaubt aber bedingte Verzweigungen), verhindert durchgehende Programme und beschränkt die Sprache auf einfache Filtervorgänge. Obwohl Erweiterungen entwickelt wurden, um die Sprache um Variablen und in begrenztem Umfang von Schleifen zu erweitern, ist die Sprache immer noch stark eingeschränkt und daher geeignet, vom Benutzer erstellte Programme als Teil des Mail-Systems auszuführen.
Es gibt auch eine Reihe von Einschränkungen für die Grammatik der Sprache, um die Komplexität beim Parsen der Sprache zu reduzieren. Die Sprache unterstützt jedoch auch die Verwendung mehrerer Methoden zum Vergleichen von lokalisierten Zeichenfolgen und ist vollständig Unicode-fähig .
Die Sieve-Skripts können von einem GUI-basierten Regel-Editor erstellt oder direkt mit einem Text-Editor eingegeben werden.
Die Skripte werden serverabhängig an den Mailserver übertragen. Mit dem ManageSieve-Protokoll (definiert in RFC 5804) können Benutzer ihre Sieve-Skripts auf einem Remote-Server verwalten. Mail-Server mit lokalen Benutzern können zulassen, dass die Skripts in z. eine .sieve-Datei in den Heimatverzeichnissen der Benutzer.
Geschichte [ edit ]
Die Sprache wurde im (jetzt veralteten) RFC 3028 vom Januar 2001 von Tim Showalter standardisiert.
Erweiterungen [ edit ]
Die IETF-Sieve-Arbeitsgruppe [1] hat die Basisspezifikation im Jahr 2008 (RFC 5228) aktualisiert und folgende Erweiterungen in den Status des vorgeschlagenen Standards gebracht:
- RFC 5173 - Body; ermöglicht es einem Skript, den Hauptteil einer Nachricht zu testen, nicht nur den Header.
- RFC 5229 - Variablen; erlaubt dem Skript, Werte in Variablen zu speichern und abzurufen.
- RFC 5230 - Vacation; gibt eine Aktion zum Senden einer Antwort an den Absender, dass der Empfänger möglicherweise nicht anwesend ist.
- RFC 5231 - Beziehungstests; definiert numerische Tests, so dass ein Skript ein Feld auf einen numerischen Wert testen kann und anhand der Anzahl der Vorkommen eines Feldes testen kann.
- RFC 5232 - IMAP4flags; ermöglicht es einem Skript, IMAP-Flags einer Nachricht zu testen und festzulegen.
- RFC 5233 - Subaddress; ermöglicht ein Skript, um Subadressen der Form "user+detail@domain.example" zu testen.
- RFC 5235 - Spamtest und Virustest; ermöglicht die Schnittstelle eines Skripts zur implementierungsabhängigen Nachrichtenfilterung.
- RFC 5260 - Date und Index Extensions.
- RFC 5293 - Editheader; Ermöglicht einem Skript das Hinzufügen und Löschen von Nachrichtenkopffeldern.
- RFC 5429 - Ablehnen; ermöglicht das Ablehnen von Nachrichten entweder auf LMTP / SMTP-Ebene oder mit einem MDN oder DSN.
- RFC 5435 - Notifications; Ermöglicht einem Skript das Auslösen externer Benachrichtigungen über E-Mails.
- RFC 5436 - E-Mail-Benachrichtigungen; spezifiziert Benachrichtigungen per E-Mail.
- RFC 5437 - XMPP-Benachrichtigungen; spezifiziert Benachrichtigungen über XMPP.
- RFC 5490 - Prüfen; Mailboxstatus und Zugriff auf Mailbox-Metadaten.
- RFC 5703 - MIME-Teiletests, Iteration, Extraktion, Ersatz und Gehäuse
Eine Reihe weiterer Erweiterungen wird von der Sieve-Arbeitsgruppe noch entwickelt.
Beispiel [ edit ]
Dies ist ein Beispielsiebskript:
# Siebfilter # Deklarieren Sie die Erweiterungen, die von diesem Skript verwendet werden. # erfordern ["fileinto", "reject"]; # Nachrichten, die größer als 100 KB sind, werden mit einer Fehlermeldung zurückgewiesen # wenn Größe: über 100K { ablehnen "Tut mir leid, ich akzeptiere keine Mails mit einer Größe von mehr als 100 KB. Bitte laden Sie größere Dateien auf einen Server und senden Sie mir einen Link. Vielen Dank."; } # Mails aus einer Mailingliste werden im Ordner "Mailingliste" abgelegt. # elsif Adresse: is ["From", "To"] "mailinglist@blafasel.invalid" { fileinto "INBOX.mailinglist"; } # Spam-Regel: Die Nachricht enthält meine Adresse nicht in An, CC oder Bcc # Kopfzeile oder Betreff ist etwas mit "Geld" oder "Viagra". # elsif anyof (nicht adresse: all: enthält ["To", "Cc", "Bcc"] "me@blafasel.invalid", header: passt zu "Subject" ["*money*","*Viagra*"]) { fileinto "INBOX.spam"; } # Behalte den Rest. # Dies ist nicht erforderlich, da es eine "implizite Aufbewahrungsregel" gibt # sonstiges behalten; }
No comments:
Post a Comment