SMTP Sieve-Interpreter Entwicklung eines Sieve-Interpreters als Studienarbeit Vortrag von Dilyan Palauzov dilyan.palauzov@aegee.org Juli 2007
Übersicht Probleme Ziele Die Idee zur Lösung Vorstellung von Sieve Implementierungdetails Fazit
Spamcop Dynamische Liste von Servern die Spam verschicken Ein Server taucht in Spamcop auf, wenn er Mails an bestimmten Addressen (honeypots) verschickt, mind. 2x in 24h Mails von spamcop-gelisteten Servern konnten abgelehnt werden, statt als Spam bewertet, im Falle von @uni-mb.si, @ru.nl, @uu.nl, @lopez.ru Gegen Spamcop hilft nur Grey-Listing.
Problem Mailing Listen Spam wird an der Adresse mailing- list@example.com geschickt Die Mail wird nicht auf die Liste zugelassen Löschen der Mail ist keine gute Idee: Der richtige Absender konnte falsche Absenderadresse gewählt haben Bouncen ist keine gute Idee: Die Mail kann in Spamtrap/Honeypot enden und der bouncing Server wird in Spamcop schwarz-gelistet. Was soll man mit der Mail machen?
Problem Normale Empfänger Ein Nicht-Spam endet im Spam-Folder / “false positive” Der Empfänger kümmert sich nicht darum => Informationsverlust Der Absender kriegt keine Antwort Der Absender verringert sein Vertrauen im Adressat (wegen 3.)
Ziele Zuverlässigere Mails Vermeidung des Auftauchens in Schwarz-Listen durch Verminderung der Bounces Verminderung des “false positive” Effekts Erweiterung der Mächtigkeit einer Mailadresse, unabhängig von Mailbox Software
Die Idee zur Lösung Nicht erwünschte Emails werden vom Server während des SMTP Dialogs abgelehnt, je nach Benutzereinstellungen
Die Idee Zur Problem Mailing Listen: Welche Mails die für eine Liste nicht zulässig sind, lässt sich während des SMTP Dialog feststellen. Die Mails kriegen ein REJECT und erzeugen später keine Bounces. Zur Problem Normale Empfänger: Der jeweilige Empfänger bestimmt, welche Mails Spam sind. Je nach Benutzereinstellungen werden diese Nachricht abgeleht, ohne zu verschwinden.
Was ist Sieve? Von IETF entwickelte Sprache zur Steuerung von ankommenden Mails Je nach Maileigenschaften, kann die Nachricht kopiert, vernichtet, abgelehnt, gebounced, umgeleitet, oder eine Benachrichtigung darüber erzeugt werden. Standardisiert die Vacation/Out-of-office Verfahren Wird bereits durch Werkzeuge unterstützt
Mail Filters (Milters) Sieve Absender SMTP MTA SMTP MTA Wenn ein Milter die Mail nicht mag: SMTP Reject Virus Scanner Mail Filters (Milters) SPAM Scanner Wenn von allen Miltern OK, dann... Sieve Filter SMTP MTA Empfänger SMTP / LMTP
Beispiel Sieve Script für Mailing List If “X-Spam-Level” :contains “++++” refuse “this message was evaluated as spam and was not delivered, you can contact us via...”; If :size > 1024k refuse “Mails bigger than 1MB are not permitted on this mailing list”; If “Sender” not in “peter”, “maaike”, “wiebke”, “tobias” refuse “you are not authorized to send mails to .... from the address ...”;
Beispiel Sieve Script für normalen Empfänger if “X-Spam-Level” :contains “++++++++++” refuse “This was evaluated as spam, contact me via http://...”; if “X-Spam-Level” :contains “+++++” fileinto “Spam”; if :header “From” :is “mutter@example.int” SMS schicken; if :header “From” :is “chef@example.int” fileinto “Arbeit”; if :header “From” :is “vater@example.int” vacation “Mir geht es gut, bin gesund und lerne fleißig”;
Vor- und Nachteile Nachteile Manche Benutzer werden sich ärgern, dass ihre Mails nicht durchkommen Vorteile Auflösen den Spam-Foldern Verringerte Effekte von false positive Mehr Möglichkeiten den Mailbox zu personalisieren
Implementierung Es soll ein Sieve Interpreter programmiert weden, der während des SMTP Dialogs wirkt Als Erweiterung für sendmail/postfix (milter API) Auf Basis von Stone's libsieve2 z.Z nicht thread-safe Alternativ auf Basis von cyrus' libsieve Kein Interpreter, sondern Compiler, thread unsafe Optional: Generieren von Scripten für Mailing Listen