diplomarbeit - Hochschule Furtwangen
diplomarbeit - Hochschule Furtwangen
diplomarbeit - Hochschule Furtwangen
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
ANGEN<br />
WIRTSCHAFT<br />
NCES<br />
Fachhochschule <strong>Furtwangen</strong><br />
Fachbereich Informatik<br />
Studiengang Computer Networking<br />
DIPLOMARBEIT<br />
OPEN SOURCE ANTISPAM UND<br />
ANTIVIRUS LÖSUNG FÜR KLEINE UND<br />
MITTELSTÄNDISCHE UNTERNEHMEN<br />
vorgelegt im<br />
Wintersemester 2004/2005<br />
von<br />
Adrian Woizik<br />
<br />
Erstprüfer:<br />
Zweitprüfer:<br />
Prof. Dr. Christoph Reich<br />
Fachhochschule <strong>Furtwangen</strong><br />
Dipl.-Inform. Med. Tobias Häcker<br />
Thinking Objects Software GmbH<br />
Anmeldedatum: 01. September 2004<br />
Abgabedatum: 31. März 2005
Eidesstattliche Erklärung<br />
Ich erkläre hiermit an Eides statt, dass ich die vorliegende Diplomarbeit selbstständig<br />
und ohne unzulässige fremde Hilfe angefertigt habe. Die verwendeten<br />
Quellen und Hilfsmittel sind vollständig zitiert.<br />
<strong>Furtwangen</strong>, den 31. März 2005<br />
Adrian Woizik
Kurzfassung<br />
E-Mail hat für Unternehmen in der heutigen Zeit an Bedeutung gewonnen.<br />
Heutzutage gilt die E-Mail-Infrastruktur eines Unternehmens als geschäftskritisch<br />
und wird dementsprechend hochverfügbar realisiert. Neben den Vorteilen<br />
der E-Mail Kommunikation lässt der damit verbundene Spamanteil die<br />
Kosten ansteigen.<br />
Der zunehmende Anteil an Spam und Viren in E-Mails zwingt Unternehmen,<br />
sich mit dieser Problematik zu befassen. Besonders bei der Spamabwehr<br />
versuchen viele Hersteller kostenpflichtige Lösungen anzubieten, die oft auf<br />
schon vorhandenen Konzepten aus dem Open-Source-Bereich basieren. Vor<br />
allem kleinere und mittelständische Unternehmen scheuen die hohen Kosten,<br />
die mit dem Kauf und dem Betrieb solch kommerzieller Lösungen anfallen.<br />
Als Alternative bietet sich hier eine auf Open-Source basierende Implementation<br />
an. Die Installation und Konfiguration ist jedoch für die Administratoren<br />
eines Unternehmens eine anspruchsvolle und zeitintensive Aufgabe. Gerade<br />
die Komplexität beim Zusammenspiel der einzelnen Abwehrmethoden birgt<br />
die Gefahr, dass das System unter hoher Last den Anforderungen einer erfolgreichen<br />
E-Mail Kommunikation nicht mehr gerecht wird.<br />
Die vorliegende Diplomarbeit beschreibt die grundlegenden Werkzeuge, um<br />
eine zentrale Spam- und Virenfilterung einzurichten. Sie identifiziert die dabei<br />
entstehenden rechtlichen Probleme und zeigt Lösungsmöglichkeiten auf. Außerdem<br />
werden die Methoden der Spambekämpfung erläutert. Die gewählte<br />
Lösung wird von der Auswahl der Komponenten, über das E-Mail Konzept<br />
bis zur Implementierung genau beschrieben. Um am Ende ein kostenloses<br />
Testsystem als Basis anbieten zu können, wurden ausschließlich Open-Source-<br />
Produkte verwendet. Die implementierte Lösung vereinfacht den Betrieb und<br />
die Konfiguration einer zentralen Spam- und Virenfilterung erheblich und<br />
lässt sich mit geringem Aufwand in eine bestehende E-Mail-Infrastruktur einbinden.
Inhaltsverzeichnis<br />
Kurzfassung<br />
i<br />
1 Einleitung 1<br />
1.1 Hintergrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />
1.2 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />
1.3 Aufbau der Diplomarbeit . . . . . . . . . . . . . . . . . . . . . . 2<br />
1.4 Betreuer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />
1.5 Danksagung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />
2 Grundlagen 5<br />
2.1 Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
2.2 Rechtliche Voraussetzung . . . . . . . . . . . . . . . . . . . . . . 5<br />
2.3 SMTP-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
2.4 Mail / MIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
2.5 Begriffsbestimmung Spamarten . . . . . . . . . . . . . . . . . . . 15<br />
3 Methoden der Spam- und Virenerkennung 21<br />
3.1 Methoden der Spammer . . . . . . . . . . . . . . . . . . . . . . . 21<br />
3.2 RBL – Echtzeit Ausschlussliste . . . . . . . . . . . . . . . . . . . 23<br />
3.3 Greylisting – Graue Listen . . . . . . . . . . . . . . . . . . . . . . 23<br />
3.4 Fehlerhafte SMTP-Implementierung . . . . . . . . . . . . . . . . 24<br />
3.5 Verteilte Prüfsummen-Verfahren . . . . . . . . . . . . . . . . . . 25<br />
3.6 Regular Expression - Regulärer Ausdruck . . . . . . . . . . . . . 26<br />
3.7 Bayes – Statistische Analyse . . . . . . . . . . . . . . . . . . . . . 26<br />
3.8 Weitere Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />
3.9 Virenfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />
4 Implementierung 31<br />
4.1 Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
4.2 Mail Transfer Agent . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
4.3 Antivirus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />
4.4 Antispam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />
5 Erweiterungen 45<br />
5.1 Statistische Auswertung . . . . . . . . . . . . . . . . . . . . . . . 45<br />
5.2 Quarantäne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
iv<br />
Inhaltsverzeichnis<br />
5.3 Spam / Ham Training . . . . . . . . . . . . . . . . . . . . . . . . 48<br />
5.4 Regel Aktualisierung . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />
6 Tests 51<br />
6.1 Lasttest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />
6.2 Langzeittest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />
6.3 Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />
6.4 Spam / Ham Erkennung . . . . . . . . . . . . . . . . . . . . . . . 55<br />
7 Resümee 57<br />
Quellenverzeichniss 61<br />
Abkürzungen 65<br />
Glossar 67<br />
A Konfiguration 69<br />
A.1 exim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />
A.2 Spam/Ham training . . . . . . . . . . . . . . . . . . . . . . . . . 80
Abbildungsverzeichnis<br />
2.1 Spam Aufkommen der Jahre 2003/2004 - Quelle: Messagelabs<br />
Ltd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
2.2 Spam Kategorien - Quelle: Brightmail Logistics and Operational<br />
Center (BLOC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
4.1 Konzept der Architektur . . . . . . . . . . . . . . . . . . . . . . . 33<br />
4.2 acl_rcpt_check Konzept. . . . . . . . . . . . . . . . . . . . . . . . 37<br />
4.3 acl_content_check Konzept. . . . . . . . . . . . . . . . . . . . . . 40<br />
5.1 RRD Grafik Exim Statistk . . . . . . . . . . . . . . . . . . . . . . 46<br />
5.2 Userinterface Quarantäne . . . . . . . . . . . . . . . . . . . . . . 47<br />
6.1 Mail Durchsatz durch Mail submitting. . . . . . . . . . . . . . . 52<br />
6.2 Statistik des Langzeittests. . . . . . . . . . . . . . . . . . . . . . . 54
Kapitel 1<br />
Einleitung<br />
1.1 Hintergrund<br />
Kein anderes Medium bietet heutzutage eine einfachere Möglichkeit, zeitnahe<br />
und effizient geschäftskritische Informationen mit Kunden und Partnern<br />
auszutauschen. Für viele Firmen hängt der Erfolg von einer funktionierenden<br />
E-Mail-Infrastruktur ab. Gleichzeitig werden die Mail-Adressen jedoch mit einer<br />
stetig steigenden Anzahl von Spam- und Virenmails überhäuft. Bei der<br />
Sortierung seiner Mailbox verliert der Mitarbeiter kostbare Arbeitszeit. Nachdem<br />
mittlerweile der Anteil an Spam-Mails auf 81,4% [ML05] angestiegen ist<br />
und die Viren eine Zunahme von über 50% [SO04] aufweisen, kommen Unternehmen<br />
nicht umher, eine zentrale Spam- und Virenfilterung zu verwenden.<br />
Zur Umsetzung einer zentralen Spam- und Virenfilterung bieten sich verschiedene<br />
Lösungmöglichkeiten an. Diese reichen von einer einfachen schwarzen<br />
Liste mit gesperrten IP-Addressen von Mailsendern bis hin zur umständlichen<br />
statistischen Analyse des Mailinhalts. Viele kommerzielle Produkte versuchen<br />
die einzelnen Methoden zu kombinieren, um eine bessere Trefferquote zu erreichen.<br />
Dieses perfekte Zusammenspiel der einzelnen Methoden wird meist<br />
nur in Form von Enterprise-Lösungen angeboten, die für die kleinen und mittelständischen<br />
Unternehmen eine vergleichsweise hohe Investitionsbelastung<br />
bedeuten.
2 Kapitel 1. Einleitung<br />
1.2 Zielsetzung<br />
Ziel dieser Diplomarbeit ist die Konzeption und Bewertung eines Antispam/Antivirus<br />
Mailgateways, welches den notwendigen Installations- und<br />
Verwaltungsaufwand verringert und dabei für das Unternehmen ohne laufenden<br />
Lizenzkosten zu betreiben ist. Neben dem konzeptionellen Teil soll eine<br />
Implementierung in Form einer Testinstallation entstehen, die im weiteren<br />
Verlauf als kostenlose Installationsbasis dienen soll.<br />
1.3 Aufbau der Diplomarbeit<br />
Die vorliegende Diplomarbeit ist in folgende Kapitel gegliedert:<br />
Kapitel 1 beschreibt die Hintergründe und Zielsetzung der vorliegenden Diplomarbeit.<br />
Kapitel 2 schildert die zum Verständnis der Arbeit nötigen Protokollgrundlagen.<br />
Neben dem SMTP-Protokoll wird auf rechtliche Aspekte und Begriffe<br />
im Zusammenhang mit unerwünschten Massenmails eingegangen.<br />
Kapitel 3 baut auf den gesetzten Grundlagen auf und veranschaulicht die einzelnen<br />
Methoden zur Spamabwehr. Dabei werden die einzelnen Methoden<br />
bewertet und ein Erfahrungsbericht mit kommerziellen Produkten<br />
angefügt.<br />
Kapitel 4 verdeutlicht die im Rahmen der Diplomarbeit entstandene Implementierung.<br />
Dabei wird auf die Konzeptionierung und das Zusammenspiel<br />
der gewählten Komponenten eingegangen.<br />
Kapitel 5 beschreibt die Erweiterungen der Implementierung und zeigt, mit<br />
welchen Methoden ein System für ein Unternehmen einsatzfähig wird.<br />
Kapitel 6 stellt die während der Testphase der Software gewonnenen Ergebnisse<br />
vor. Im Besonderen enthält dieses Kapitel eine kritische Betrachtung<br />
der Performance unter hoher Last.<br />
Kapitel 7 fasst das Ergebnis zusammen und beschreibt den Verlauf der Diplomarbeit.
1.4. Betreuer 3<br />
1.4 Betreuer<br />
Erstbetreuer:<br />
Prof. Dr. Christoph Reich<br />
<br />
Fachhochschule <strong>Furtwangen</strong><br />
<strong>Hochschule</strong> für Technik und Wirtschaft<br />
Gerwigstraße 11<br />
78120 <strong>Furtwangen</strong><br />
Zweitbetreuer:<br />
Dipl.-Inform. Med. Tobias Häcker<br />
<br />
Thinking Objects Software GmbH<br />
Lilienthalstraße 2/1<br />
70825 Stuttgart-Korntal<br />
1.5 Danksagung<br />
Ich möchte mich an dieser Stelle bei Herr Prof. Dr. Christoph Reich und Herr<br />
Dipl.-Inform. Med. Tobias Häcker für die Betreuung meiner Diplomarbeit bedanken.<br />
Außerdem bedanke ich mich bei den Mitarbeitern der Thinking Objects<br />
GmbH und der Topalis AG, insbesondere bei Andreas Schlenk, die mir<br />
viele neue Denkanstöße zur Optimierung dieser Arbeit gegeben haben. Desweiterem<br />
möchte ich all jenen danken, die durch ihre fachliche und persönliche<br />
Unterstützung zum Gelingen dieser Diplomarbeit beigetragen haben.
Kapitel 2<br />
Grundlagen<br />
2.1 Übersicht<br />
Im folgendem Kapitel wird auf die rechtlichen Rahmenbedingungen einer Antispam<br />
und Antivirus Lösung in Unternehmen eingegangen. Hierfür werden<br />
rechtliche Abhandlungen zusammgefasst und erläutert. Desweiteren wird das<br />
SMTP-Protokoll in Grundzügen vorgestellt und es folgt eine Übersicht über<br />
die häufigsten Spam Begriffe und deren Herkunft. Im weiterem Verlauf wird<br />
der Begriff Mail als Synonym für E-Mail verwendet.<br />
2.2 Rechtliche Voraussetzung<br />
Der Einsatz einer zentralen Spam- und Virenfilterung muss sich an die rechtlichen<br />
Vorgaben halten. Hierbei müssen verschiedene Voraussetzungen in einem<br />
Unternehmen beachtet werden. Wie in [JK04] dargestellt, besteht das<br />
Hauptproblem für ein Unternehmen in einer erlaubten Privatnutzung der E-<br />
Mail-Infrastruktur des Unternehmens.<br />
Bei einer erlaubten Privatnutzung findet das Telekommunikationsgesetze<br />
(TKG) anwendung, insbesondere muss das Telekommunikationsgeheimniss<br />
gewahrt werden. Ebenso muss der Schutz der Datenintegrität nach § 303a<br />
Strafgesetzbuch (StGB) beachtet werden. Dies bedeutet, dass die E-Mail nicht<br />
in ihrem Inhalt verändert werden darf. Das Unternehmen gilt durch die Privatnutzung<br />
als Telekommunikationsanbieter und darf ohne Einwilligung des<br />
Empfängers keine Maßnahmen zur Filterung ergreifen.<br />
Bei einer Virenfilterung ist dies allerdings nicht der Fall. Die Datenschutzgesetze<br />
von Bund und Ländern (§9 BDSG) verpflichten datenverarbeitende Stellen<br />
(in diesem Fall die Unternehmen) zur Gewährleistung von Datenschutz und<br />
-sicherung. Aus diesem Grund sind Unternehmen sogar verpflichtet, für einen<br />
funktionierenden Virenfilter zu sorgen (BDSG §9 Rn. 19.).
6 Kapitel 2. Grundlagen<br />
2.2.1 Telekommunikationsgesetz<br />
Nach §85 TKG sind Anbieter, die einen Telekommunikationsdienst erbringen,<br />
zur Wahrung des Telekommunikationsgeheimnises verpflichtet. Dies bedeutet<br />
im Falle einer erlaubten Privatnutzung im Unternehmen, dass sich die Firma<br />
nach §206 Abs. 2 Nr. 2 StGB strafbar macht, wenn sie eine E-Mail an zentraler<br />
Stelle löscht oder unterdrückt.<br />
Diese Problematik kann ein Unternehmen zwar durch den Ausschluss der Privatnutzung<br />
umgehen, allerdings mit dem Nachteil, dass die private E-Mail-<br />
Kommunikation zu externen Webmailern verlagern wird. An dieser Stelle<br />
kann ein Unternehmen keinen Einfluss mehr auf die Aktualität der Virenfilter<br />
nehmen. Die Viren somit damit durch einen verschlüsselten HTTPS-Tunnel in<br />
das Unternehmensnetzwerk gelangen.<br />
Eine zentrale Erkennung beziehungsweise Filterung von Spam und Viren ermöglicht<br />
folgende Szenarien:<br />
• Löschung Mails, die Spam oder Viren enthalten, werden am zentralen<br />
Gateway gelöscht. Sofern dies für den Benutzer nicht transparent oder<br />
sogar ohne seine Einwilligung geschieht, macht sich das Unternehmen<br />
strafbar. Eine Ausnahme stellt die bereits angesprochene Virenfilterung<br />
dar, da hier die Datenschutzgesetze beachtet werden müssen.<br />
• Blockierung Bei der Blockierung wird meist der Empfänger periodisch<br />
über zurückgehaltene Mails informiert. Die Mails werden dabei in einer<br />
Quarantäne aufbewahrt, bis sich der Benutzer dazu entscheidet, die<br />
Mails zu bearbeiten oder zu löschen. Hierbei dürfen die Mails nicht automatisch,<br />
nach einer gewissen Vorhaltezeit, aus der Quarantäne entfernt<br />
werden, dies würde der Löschung, mit all ihren Problemen entsprechen.<br />
Die Quarantäne muss dabei vom Benutzer zugänglich sein und darf<br />
nicht durch einen Administrator verwaltet werden. Eine sogenannte<br />
“catch-all” 1 Quarantäne, darf daher nicht verwendet werden.<br />
• Kennzeichnung Bei der Kennzeichnung wird ein für den Benutzer nicht<br />
sichtbarer Header eingefügt, der über die Klassifizierung informiert.<br />
Diese Methode hat sich als am rechtlich unbedenklichsten erwiesen, da<br />
sie dem Benutzer die Wahl lässt, eine Filterung an seinem Mail-Client<br />
vorzunehmen. Der Benutzer kann dabei auch den Grad der Filterung<br />
definieren.<br />
Eine weitere Form der Kennzeichnung ist das “Tagging” 2 , hierbei<br />
wird der Subject-Header der Mail um eine Zeichenkette, zum Beispiel<br />
“[SPAM]” erweitert. Dies ermöglicht den Empfänger eine einheitliche<br />
Kontrolle, ist rechtlich aber als Verstoß gegen die Datenintegrität zu werten,<br />
da eine Änderung des Inhalts vorgenommen wird.<br />
1 alle Mails werden hierbei in das selbe Postfach zugestellt<br />
2 aus dem Englischen: “to tag” - etwas markieren
2.2. Rechtliche Voraussetzung 7<br />
• Ablehnung Hierbei werden positive erkannte Mails noch während der<br />
SMTP-Transaktion abgelehnt. Ein legitimer Sender wird dadurch über<br />
den Fehler informiert und kann mittels eines anderem Mediums Kontakt<br />
mit dem Empfänger aufnehmen. Dies kann ebenfalls als rechtlich<br />
unbedenklich angesehen werden, da der Absender über den Misserfolg<br />
unterrichtet wird und weitere Schritte einleiten kann, um den Kontakt<br />
herzustellen. Im Gegensatz zu den Non-Delivery-Reports, die erst nach<br />
der eigentlichen SMTP-Prozedur stattfinden, wird hierbei auch gewährleistet,<br />
dass keine gefälschten Absenderinformationen zum Spammen<br />
genutzt werden.<br />
2.2.1.1 TKÜV – Telekommunikations-Überwachungsverordnung<br />
Die erlaubte Privatnutzung in einem Unternehmen kann zu einem weiteren<br />
negativen Aspekt führen. Am 1.1.2005 ist die Telekommunikationsrichtlinie<br />
zur Überwachung von Telekommunikationsdiensten (insbesondere E-Mail) in<br />
Kraft getreten. Diese zwingt jeden Telekommunikationsdienstleister zur Vorhaltung<br />
technischer Maßnahmen zur Überwachung des E-Mail-Verkehrs.<br />
Da sich die Diplomarbeit aber mit einer Lösung für kleine und mittelständische<br />
Unternehmen befasst, ist nicht zu erwarten, dass die von der TKÜV geforderten<br />
1.000 Teilnehmer erreicht werden. Sollte dies eines Tages der Fall sein,<br />
empfiehlt es sich, die Privatnutzung der E-Mail-Infrastruktur zu untersagen.<br />
2.2.1.2 Bestrebungen der Regierung<br />
Die Bundesregierung verfasste am 18. Februar 2005 einen Gesetzesentwurf<br />
[SG05], der als Antispam-Gesetz vorgestellt wurde. Hierbei droht dem Absender<br />
eine Geldbuße von bis zu 50.000 e, wenn der Versuch unternommen<br />
wird, die Identität zu verschleiern. Zudem sieht das Gesetz vor, dass bei Massenmails<br />
der Charakter einer E-Mail durch die Betreffzeile erkennbar gemacht<br />
werden muss.<br />
Ziel dieses Entwurfes scheint die Legalisierung von Spam zu sein. Er unterteilt<br />
den Spam in vorschriftsmäßig versendeten und illegal manipulierten Spam,<br />
sieht aber keine Möglichkeit für das Unterdrücken der Spam-Mails, durch<br />
den Telekommunikationsanbieter vor. Die Verabschiedung würde dazu führen,<br />
dass Spammern das Recht zugesprochen wird, ihre legal gekennzeichneten,<br />
unerwünschten Massenmails zustellen zu dürfen.<br />
Dieses Problem ist auch für den Verband der deutschen Internetwirtschaft e.V.<br />
(http://www.eco.de (02.2005)) relevant. Der Verband vereinbarte eine Positivliste<br />
für deutsche Direktvertriebler, die dazu dienen soll, legalen Spam<br />
unbehelligt durch die Vielzahl an Spamfiltern zu transportieren.<br />
Derzeit stellt sich dieses Antispam-Gesetz der Regierung als zahnloser Tiger<br />
dar, der das Spamaufkommen der Providern nicht vermindert und somit die
8 Kapitel 2. Grundlagen<br />
Mailinfrastruktur nicht entlasten wird. Auch wird dem Bürger keine Möglichkeit<br />
gegeben, sich gegen Spammer gerichtlich zur Wehr zu setzen. Es bleibt zu<br />
hoffen, dass dieser Entwurf in seiner jetzigen Form, nicht verabschiedet wird.<br />
2.3 SMTP-Protokoll<br />
Simple Mail Transfer Protocol (SMTP) wurde erstmals 1982 im RFC821 [JP82]<br />
definiert, 2001 wurde dieser RFC durch RFC2821 [JK01] ersetzt. RFC2821 veränderte<br />
keine Funktionen und dient hauptsächlich zur Klärung, der in die<br />
Jahre gekommenen RFC821 und der bis dahin eingeführten Erweiterungen.<br />
In beiden RFCs wird lediglich der Transport einer E-Mail definiert. Auf die<br />
Struktur und den Aufbau einer E-Mail wird zu einem späterem Zeitpunkt in<br />
diesem Kapitel eingegangen.<br />
SMTP soll sicher stellen, dass Mails zuverlässig und effizient den Empfänger<br />
erreichen. Sender und Empfänger müssen sich dabei nicht im gleichen Netzwerk<br />
befinden. Gegebenenfalls wird die Mail über ein Relay oder Gateway in<br />
ein anderes Netzwerk übermittelt.<br />
2.3.1 Das SMTP Konzept<br />
2.3.1.1 Grundkonzept<br />
Soll eine Nachricht versendet werden, ist der Client dafür verantwortlich, die<br />
Nachricht an einen (oder mehrere) SMTP-Server zu senden oder eine Fehlermeldung<br />
zurück zu liefern.<br />
Mit Hilfe des Namens der Zieldomain identifiziert der SMTP-Client die Adresse<br />
der zu dieser Domain gehörigen SMTP-Server. Dieser SMTP-Server lässt<br />
sich unter anderem über den MX-Record der Ziel-Domain abfragen. Sollte<br />
kein MX-Record vorhanden sein, wird der A-Record ausgewertet. Der identifizierte<br />
Host kann bereits das Ziel der E-Mail sein, oder aber erst ein zwischengeschalteter<br />
MX-Host, der die Mail weiter zustellt. Bei letzterem unterscheidet<br />
man zwischen:<br />
• Relay (d.h. nach dem Empfang der Nachricht übernimmt der Server die<br />
Rolle des SMTP-Clients, um die Nachricht weiterzuleiten) und<br />
• Gateway (d.h. nach dem Empfang wird die Nachricht mit einem anderen<br />
Protokoll weiterversendet - auch hier wird das Gateway für den darauf<br />
folgenden Zielrechner zum Client)<br />
Ein Relay- oder Gateway-Server, der die Nachricht entgegen nimmt, übernimmt<br />
die oben beschriebene Verantwortung des Clients, die Nachricht an<br />
einen oder mehrere SMTP-Server zu senden oder eine Fehlermeldung für Sender<br />
zu generieren.
2.3. SMTP-Protokoll 9<br />
Zu dem SMTP-Server auf dem identifizierten Host baut der SMTP-Client<br />
einen 2-Wege-Übertragungskanal auf: der Client schickt SMTP-Kommandos<br />
an den Server, die dieser beantwortet. Abgesehen von speziellen Erweiterungen<br />
und dem DATA-Kommando muss der Server nach jedem Kommando erst<br />
antworten, bevor der Client einen neuen Befehl absetzen kann. Sollte der Server<br />
PIPELINING unterstützen, kann der Client MAIL FROM: und RCPT TO:<br />
in einem Block senden. Der Client muss danach auf die Antwort der einzelnen<br />
gesendeten Kommandos warten.<br />
Nach dem Verbindungsaufbau und dem Handshake sendet der Client meistens<br />
eine E-Mail. Geht die Nachricht an mehrere Empfänger, so kann über das<br />
Protokoll sichergestellt werden, dass lediglich eine Kopie an einen Ziel- oder<br />
Zwischenhost versendet wird. Der Server liefert eine Antwort, ob das Kommando<br />
erfolgreich war, weitere Kommandos erwartet werden, oder ob temporäre<br />
beziehungsweise permanente Fehler auftraten. Nach dem Versand einer<br />
Mail kann der Client einen Verbindungsabbau initiieren oder weitere Mails,<br />
über die bestehende Verbindung senden.<br />
Weiterhin kann der Client – statt eine Mail zu verschicken – verschiedene<br />
Hilfsdienste des Servers (verifizieren von E-Mail-Adressen, ermitteln von<br />
Empfängern einer Mailingliste) nutzen, sofern diese implementiert und freigeschalten<br />
sind.<br />
2.3.1.2 Das Erweiterungskonzept<br />
1993 wurde SMTP, durch RFC1425 [JK93], um ein “Service Extension”-<br />
Konzept erweitert. Dieses erlaubt die dynamische Erweiterung von SMTP um<br />
zusätzliche Funktionalität. Client und Server können sich darauf einigen, diese<br />
zu verwenden sofern sie von Beiden unterstützt werden. Aktuelle SMTP-<br />
Implementierungen müssen den grundlegenden Extension-Mechanismus unterstützen,<br />
auch wenn sie keine Erweiterungen anbieten.<br />
Mit Hilfe des “Service Extension”-Modell wurden beispielsweise folgende Erweiterungen<br />
Implementiert:<br />
• STARTTLS – Um eine verschlüsselte und authentifizierte Verbindung<br />
zu initiieren.<br />
• SMTP AUTH – Zur Authentifizierung des Clients.<br />
• PIPELINING – Um mehrere Befehle in einem Block senden zu können.<br />
2.3.2 Die SMTP-Prozeduren<br />
Nachfolgend werden relevante Prozeduren der SMTP Kommunikation beschrieben.<br />
Vertiefende Informationen sind der RFC zu entnehmen.
10 Kapitel 2. Grundlagen<br />
2.3.2.1 Sitzungsaufbau<br />
Eine SMTP-Sitzung wird initiiert, sobald der Client eine Verbindung zum Server<br />
aufbaut und letzterer mit einer positiven Nachricht antwortet. Der Server<br />
muss seine Bereitschaft mit einer 220 Nachricht signalisieren, bevor der Client<br />
sein erstes Kommando senden kann. Diese Nachricht wird im Allgemeinen<br />
auch “Banner” genannt. Hierbei enthält die Bannernachricht bereits Informationen,<br />
ob der Server in der Lage ist mit Protokoll Erweiterungen (ESMTP)<br />
umzugehen.<br />
2.3.2.2 Client Initiierung<br />
Nachdem der Client auf das Banner gewartet hat, muss sich dieser beim<br />
Server mit dem EHLO- oder mit dem veralteten HELO-Kommando vorstellen.<br />
Durch das EHLO gibt der Client dem Server gleichzeitig an, das dieser<br />
mit SMTP-Erweiterungen arbeiten kann. Sollte der Server nicht mit SMTP-<br />
Erweiterungen umgehen können, greift der Client auf das HELO-Kommando<br />
zurück. Hierbei übergibt der Client seinen Hostnamen als Parameter.<br />
Syntax:<br />
EHLO [hostname]<br />
HELO [hostname]<br />
2.3.2.3 Mail-Transaktion<br />
Zum Versenden einer Mail werden vom Client die folgenden Befehle in dieser<br />
Reihenfolge genutzt:<br />
• EHLO/HELO gibt das sendende System an.<br />
• MAIL FROM: gibt den Sender an, der bei einem späteren Fehler benachrichtigt<br />
wird.<br />
• RCPT TO:um den Empfänger anzugeben. Dieser Befehl kann mehrmals<br />
bei einer Mail vorkommen.<br />
• Mittels DATAgibt der Client bekannt, dass er die Mail senden möchte.<br />
Bei einer positiven Server-Antwort gelten alle darauf folgenden Zeilen<br />
als Mail-Daten. Die Dateneingabe kann mit einem einzelnem “.” in einer<br />
Zeile beendet werden. Sollte eine Zeile innerhalb der Mail mit einem<br />
Punkt beginnen, wird dieser mit einem weiteren Punkt maskiert. Die beendete<br />
Dateneingabe wird vom Server beantwortet. Im Fall einer positiven<br />
Antwort wird der Server für die weitere Zustellung verantwortlich.<br />
Der Server fügt eine Received-Header an den Beginn der Mail-<br />
Nachricht ein, der wenigstens den Client, den Server sowie den Zeitpunkt<br />
des Empfangs enthält. Hierdurch wird eine spätere Zurückverfolgung<br />
und Fehlersuche vereinfacht.
2.3. SMTP-Protokoll 11<br />
Syntax:<br />
EHLO <br />
MAIL FROM: <br />
RCPT TO: <br />
RCPT TO: <br />
RCPT TO: <br />
DATA<br />
[Mail-Header]<br />
[Body]<br />
.<br />
2.3.2.4 Kommandos zum Testen von Adressen<br />
Der Client kann sowohl User-Namen verifizieren (VRFY), als auch die Mitglieder<br />
einer Mailingliste in Erfahrung bringen (EXPN). Wenn der Client<br />
einen User verifizieren möchte, bekommt er im Erfolgsfall vom Server die<br />
Mailbox/E-Mail-Adresse des Users zurückgeliefert. Gibt es mehrere zutreffende<br />
Mailboxen (wenn zum Beispiel mehrere User mit dem gesuchten Nachnamen<br />
existieren), gibt der Server die Mehrdeutigkeit zurück und eventuell<br />
in weiteren Zeilen auch die in Frage kommenden Mailboxen (jede Zeile eine<br />
mögliche Adresse).<br />
Syntax:<br />
VRFY [string]<br />
Wird eine Mailingliste abgefragt, liefert der Server im Erfolgsfall eine mehrzeilige<br />
Antwort, die pro Zeile eine Mailbox (und wahlweise noch den Usernamen)<br />
enthält.<br />
Syntax:<br />
EXPN [string]<br />
Beide Befehle können an beliebiger Stelle, innerhalb des SMTP-Dialogs benutzt<br />
werden und haben keinen Einfluss auf die aktuelle Transaktion.<br />
2.3.2.5 Relaying<br />
Ein Relay-Server ist üblicherweise durch den DNS MX-Record das Ziel einer<br />
E-Mail-Domain. Der Relay-Server kann eine Mail akzeptieren oder ablehnen.<br />
Wenn er eine Mail akzeptiert, agiert der Relay-Server als Client gegenüber<br />
dem wahren Ziel-System. Bei einer fehlgeschlagenen Zustellung muss der<br />
Relay-Server den Absender über den Misserfolg durch einen “Non-Delivery-<br />
Report” informieren. Ein Relay-Server wird üblicherweise als Fallback im
12 Kapitel 2. Grundlagen<br />
DNS propagiert, so dass im Falle eines Ausfalls am Ziel-System die E-Mail<br />
weiterhin zugestellt werden kann.<br />
2.3.2.6 Mail Gateway<br />
Soll eine Mail über ein anderes Transport Protokoll als SMTP weitergeleitet<br />
werden, bezeichnet man den dafür zuständigen Server als Gateway-Server.<br />
Da die meisten proprietären Protokolle nicht öffentlich dokumentiert sind, gestaltet<br />
sich dies als äußerst komplex, sofern kein Gateway vom Hersteller angeboten<br />
wird.<br />
2.3.3 SMTP-Server Antworten<br />
Die Antworten des SMTP-Servers beginnen mit einer dreistelligen Zahl und<br />
einem beschreibenden Text. Die erste Ziffer gibt dabei an, ob das Kommando<br />
erfolgreich, erfolglos oder unvollständig war. Bereits durch die erste Ziffer<br />
kann ein Client über den darauf folgenden Schritt entschieden. Die zweite Ziffer<br />
dient zu einer spezifischeren Antwort, während die dritte Ziffer die kleinste<br />
Unterscheidung definiert.<br />
Die 5 Werte für die erste Ziffer sind:<br />
1xz - erfolgreiche vorläufige Antwort.<br />
Der Befehl wurde akzeptiert aber noch nicht ausgeführt. Anhand des<br />
genaueren Fehlercodes kann der Client entscheiden ob er den Befehl bestätigt<br />
oder einen Abbruch initiiert.<br />
2yz - erfolgreiche Antwort.<br />
Der Befehl wurde akzeptiert und erfolgreich ausgeführt. Ein neuer Befehl<br />
kann folgen.<br />
3yz - positive Zwischenantwort.<br />
Der Befehl wurde akzeptiert aber benötigt vor der endgültigen Ausführung<br />
noch weitere Informationen.<br />
4yz - temporärer Fehler.<br />
Der Befehl wurde akzeptiert aber wurde aufgrund eines temprären Fehlers<br />
nicht erfolgreich ausgeführt. Zu einem späteren Zeitpunkt könnte<br />
der Befehl erfolgrauch Ausgeführt werden.<br />
5yz - permanenter Fehler.<br />
Der Befehl wurde nicht akzeptiert.<br />
Nur drei dieser fünf Werte sind für diese Diplomarbeit relevant. Diese sind der<br />
2yz, 4yz und der 5yz Antwort Code.<br />
Die zweite Ziffer gibt eine genauere Beschreibung.
2.4. Mail / MIME 13<br />
x0z - signalisiert Syntax Fehler oder nicht implementierte Befehle.<br />
x1z - bezieht sich auf die Anforderung nach Information wie Status oder<br />
Hilfe.<br />
x2z - bezieht sich auf Übertragungskanäle<br />
x3z und x4z - nicht spezifiziert<br />
x5z - bezieht sich auf das Mail-System.<br />
Beispiel:<br />
S: 220 hq.netclue.de ESMTP Exim 4.43<br />
C: HELO <br />
S: 250 netclue.de Hello netclue.de [213.95.27.138]<br />
C: MAIL FROM:<br />
S: 250 OK<br />
C: RCPT TO:<br />
S: 550 unrouteable address<br />
C: QUIT<br />
S: 221 netclue.de closing connection<br />
2.4 Mail / MIME<br />
Das Format von E-Mails wurde 1982 durch die RFC822 [DC82] definiert. Das<br />
Message-Format ist dabei durch zwei Bestandteile gekennzeichnet. Als ersten<br />
Teil kommen die Mail-Header, deren Funktion weitestgehend bis heute gleich<br />
geblieben sind.<br />
Die wichtigsten Header sind hierbei:<br />
To:<br />
Cc: 3<br />
From:<br />
Date:<br />
Subject:<br />
Received:<br />
Empfänger einer E-Mail.<br />
weitere Empfänger einer E-Mail.<br />
Sender einer E-Mail.<br />
Zeitpunkt wann die E-Mail verfasst wurde.<br />
Betreff einer E-Mail.<br />
Statuszeile in der jeder sendende und empfangende Mailer,<br />
inklusive Zeitstempel, angegeben werden muss.<br />
Der Body, der den eigentlichen Inhalt darstellt, wird über eine Leerzeile vom<br />
Header getrennt.<br />
Die Header-Daten sind vom SMTP-Protokoll unabhängig. Daher sollte den<br />
Headern auch kein grosses Vertrauen entgegen gebracht werden.
14 Kapitel 2. Grundlagen<br />
2.4.1 MIME<br />
Diese Struktur der “ARPA Nachrichten” hat sich bis heute so gehalten und<br />
wurde 2001 durch die RFC2822 [RE01] erweitert. Hierbei wurden keine Funktionen<br />
verändert, sondern die Header an die aktuelle Nutzung angepasst.<br />
Eine der wichtigsten Neuerungen dabei war die Einführung von MIME (Multipurpose<br />
Internet Mail Extensions) durch die RFC2045 [PR01]. MIME bildet<br />
eine Struktur, um verschiedene Inhalte übertragen zu können. MIME ist<br />
hierbei ein Format, um nicht-ASCII-Zeichen, wie Videos, Bilder oder ähnliches<br />
über ein Textprotokoll, wie zum Beispiel E-Mail, zu übertragen. Hierfür<br />
wird der Mail-Body in mehrere Inhalte (contents) unterteilt und anhand des<br />
Content-Type-Headers entsprechend auf dem Client verarbeitet.<br />
Zur Übertragung über ein 7-Bit ASCII-Medium 4 werden hierfür die Daten mittels<br />
base64 [SJ03] kodiert.<br />
Bei der base64-Kodierung werden jeweils drei Bytes des Bytestroms (=24<br />
Bit) in vier 6-Bit-Blöcke aufgeteilt. Jeder dieser 6-Bit-Blöcke bildet zwischen 0<br />
und 63 einen Wert. Diese Zahlen werden anhand einer Umsetzungstabelle in<br />
“druckbare ASCII-Zeichen” umgewandelt und ausgegeben. Nach jeweils 64<br />
ausgegebenen Zeichen wird ein Zeilenumbruch eingefügt, welcher ansonsten<br />
für die Kodierung nicht von Belang ist.<br />
Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist, wird<br />
zur Kodierung mit Nullbytes aufgefüllt. Um dem Dekodierer mitzuteilen,<br />
wie viele Füllbytes angefügt wurden, werden die 6-Bit-Blöcke, die vollständig<br />
aus Füllbytes entstanden sind, mit ’=’ kodiert. Somit können am Ende einer<br />
Base64-kodierten Datei 0, 1 oder 2 ’=’-Zeichen auftreten.<br />
4 der kleinste gemeinsame Nenner bei SMTP
2.5. Begriffsbestimmung Spamarten 15<br />
2.5 Begriffsbestimmung Spamarten<br />
Vor einiger Zeit hätte an dieser Stelle noch die Erklärung von Spam-Mails<br />
erscheinen müssen. Doch angesichts des derzeitigen Spamaufkommens von<br />
81,4% [ML05] ist heute jedem Internetbenutzer Spam ein Begriff.<br />
Über die Entstehung des Begriffes streitet man sich in der Gemeinde. Als gesichert<br />
gilt, dass der Begriff durch einen Monty Python Sketch geprägt wurde.<br />
SPAM ist hierbei der Produktname fuer den “Spiced Ham” der Firma Hormel.<br />
Im besagten Sketch wird dabei für SPAM durch ein Lied so exzessiv geworben,<br />
dass man nur noch den Produktnamen versteht. Aus dieser Herkunft erklärt<br />
sich auch der Begriff “Ham”, der für legitime Mail steht und quasi das Gegenstück<br />
einer Spam-Mail darstellt.<br />
Den ersten Beleg [FH04] für die Beziehung des Begriffs mit unerwünschten<br />
Werbenachrichten stammt aus dem Usenet 5 . Am 13. April 1994 nutzte das Anwaltsbüro<br />
Canter & Siegel die einfache Verbreitungsmöglichkeit des Usenet<br />
um für ihr “Green Card Lottery” Geschäft zu werben. Da zu diesem Zeitpunkt<br />
der Begriff Spam schon durch MUD-Spieler 6 , für das “flooden” mit unnützen<br />
Informationen genutzt wurde, übernahm man den Begriff erst im Usenet und<br />
in der Folge auch für E-Mails mit vergleichbarem Charakter.<br />
Schon vor Canter & Siegel wurden E-Mails zu Werbezwecken genutzt. Damals<br />
wurde dafür der Begriff Spam noch nicht genutzt. Ein Beispiel ist in [FH04]<br />
geschildert, indem DEC 1978 die Möglichkeit des ARPA-Net nutze um für für<br />
ihre ARPA-Net Ünterstützung in ihren Produkten zu werben.<br />
2.5.1 Umfang des Spamaufkommens<br />
Seit dem Vorfall mit Canter & Siegel haben Spam-Mails rapide zugenommen.<br />
Die Zunahme wurde meist nur kurzfristig durch neue Gesetze verzögert. Wie<br />
in der Abbildung 2.1 zu sehen ist, wurde der Anstieg fast nur durch gesetzliche<br />
Verfahren in den Vereinigten Staaten von Amerika kurzfristig unterbrochen,<br />
konnte dabei aber nicht eine Verdoppelung des Spamaufkommens innerhalb<br />
des letzten Jahres auf 81,4% Anteil am gesamten E-Mail-Verkehr verhindern.<br />
2.5.2 UCE – Unsolicited Commercial E-Mail<br />
Als UCE werden E-Mails bezeichnet, die vom Empfänger unerwünschte<br />
Werbebotschaften enthalten. Diese E-Mails dienen in der Regel dazu kommerzielle<br />
Dienste oder Produkte anzubieten.<br />
An erster Stelle bei den kommerziellen E-Mails stehen Werbe-Mails für Produkte.<br />
Dazu zählen Online-Apotheken, die ihre potenzsteigernde Produkte<br />
5 ein weltweites elektronisches Netzwerk an Diskussionsforen<br />
6 Multi User Dungeons
16 Kapitel 2. Grundlagen<br />
Abbildung 2.1: Spam Aufkommen der Jahre 2003/2004 - Quelle: Messagelabs<br />
Ltd.<br />
an den Mann bringen wollen. Das erklärt vermutlich warum die Kategorie<br />
“Health” in Abbildung 2.2 nur an fünfter Stelle residiert. An zweiter Stelle stehen<br />
die “Financial” Werbe-Mails mit Kredit- und Investmentangeboten. Erst<br />
an dritter Stelle steht die Werbung für pornografische Inhalte.<br />
Trotz minimaler Durchdringungsquote 7 ist allen UCE gemeinsam, dass die<br />
Gewinnmargen so lukrativ sind, dass sich diese Massenmails lohnen. Die<br />
Durchdringungsquotebewegt sich dabei häufig im Promille-Bereich. Wie viele<br />
der Empfänger tatsächlich darauf reagiert ist allerdings unklar.<br />
2.5.2.1 Newsletter<br />
Im Gegensatz zu den UCE besteht bei Newslettern die Möglichkeit, dass sie<br />
vom Empfänger erwünscht sind. Daher müssen diese klar von Spam-Mails<br />
abgegrenzt werden.<br />
Zur Bestandpflege eines Newsletters bedienen sich die Anbieter folgender Methoden:<br />
• Opt-In – Der Interessent trägt seine E-Mail-Adresse über ein Webformular<br />
ein, um den Erhalt des Newsletters zu beantragen. Üblicherweise<br />
wird daraufhin eine Bestätigung über die Eintragung versandt. Diese<br />
Methode hat den Nachteil, dass Dritte sie mittels Adressfälschung missbrauchen<br />
können.<br />
7 tatsächlich zugestellte Mails
2.5. Begriffsbestimmung Spamarten 17<br />
Spam Kategorien (März 2004)<br />
1%<br />
2%<br />
5%<br />
6%<br />
7%<br />
7%<br />
7%<br />
5%<br />
25%<br />
20%<br />
Products<br />
Financial<br />
Adult<br />
Internet<br />
Health<br />
Scams<br />
Leisure<br />
Fraud<br />
Political<br />
Spiritual<br />
others<br />
15%<br />
Abbildung 2.2: Spam Kategorien - Quelle: Brightmail Logistics and Operational<br />
Center (BLOC)<br />
• Opt-Out – Deswegen wird zusätzlich zum Opt-In noch ein Opt-Out angeboten,<br />
in dem der Empfänger sich selbständig austragen kann. Häufig<br />
findet man falsche “remove me”-Links in Spam-Mails zur Adressenverifikation.<br />
• Confirmed Opt-In – Im Gegensatz zum Opt-In wird hier eine<br />
Bestätigungs-Mail mit einem eindeutigen Token versandt. Wenn der Interessent<br />
mit diesem Token sein Vorhaben bestätigt, wird er in die Datenbank<br />
aufgenommen. Diese Methode hat den Vorteil, dass sowohl das<br />
Interesse des Kunden überprüft wird, als auch die Zugehörigkeit zu der<br />
E-Mail-Adresse. Diese Methode nennt sich auch “Double Opt-In”, wobei<br />
dieser Begriff den falschen Eindruck erweckt, dass der Aufwand doppelt<br />
so hoch ist und daher das einfache Opt-In die bessere Methode wäre.<br />
Anbieter, die sich an das als sicher geltende Confirmed Opt-In halten, kämpfen<br />
derzeitig um eine Abgrenzung. So wurde eine Allianz der Direktmarketing-<br />
Unternehmen gegründet, die versucht, ihre Mitglieds-Unternehmen mit Hilfe<br />
einer Positivliste aus dem Wirkungsfeld der Filtermaßnahmen zu entfernen.<br />
Newsletter werden auch oft in Zusammenhang mit Gewinnspielen genutzt.<br />
Bei einer Beteiligung wird automatisch die Weitergabe der Daten an Dritte
18 Kapitel 2. Grundlagen<br />
akzeptiert. Laut einem Posting im Heise Forum [DL05] beträgt die Klickrate<br />
bei diesen Mails 3 - 7%.<br />
2.5.2.2 Scam – Betrug<br />
Der bekannteste Scam stammt von der sogenannten “Nigerian Connection”.<br />
Die Betrüger wurden durch den Erfolg der E-Mail, auf diese kostengünstige<br />
Form der Kontaktaufnahme aufmerksam. Der Betrug läuft dabei nach dem<br />
folgenden Schema ab:<br />
Der Empfänger erhält eine Mail, in der von einem größeren Geldbetrag geredet<br />
wird, der außer Landes geschafft werden muss. Da dieses Geld aber an den<br />
Behörden vorbei geschmuggelt werden soll, benötige man einen Mittelsmann<br />
im Ausland, der das Geld auf seinem Bankkonto zwischenlagert. An dieser<br />
Stelle wird dann der Empfänger aufgefordert mitzuhelfen und in Kontakt mit<br />
dem Absender zu treten. Natürlich müsse der Empfänger eine Vorauszahlung<br />
leisten, um die Gebühren und fiktiven Bestechungen zu bezahlen.<br />
Sollte der Empfänger darauf eingehen, wird dieser mit Verzögerungstaktiken<br />
und weiteren Vorauszahlungen hingehalten, bis dieser entweder kein Geld<br />
mehr zur Verfügung hat oder aufgibt (oder im schlimmsten Fall beides). Die<br />
”Nigerian Connection“ gilt als die bestorganisierte Betrüger-Organisation derzeit.<br />
Sie sitzt in Nigeria und arbeitet mit Landsleuten in den Zielländern zusammen,<br />
um ihren Betrug auszuführen. Selten wird seitens der nigerianischen<br />
Regierung oder Banken der Versuch unternommen, diese Organisation zu zerschlagen.<br />
Die Organisation verlässt sich auch darauf das die meisten Opfer<br />
sich nicht bei den Behörden melden, da sie nicht zugeben wollen, dass sie auf<br />
ein illegales Geschäft eingegangen sind.<br />
Diese Betrugsmethode wird nach dem relevanten Paragraphen im nigerianischen<br />
Strafgesetz buch außerhalb Europas auch “419 Scam” oder kurz “419”<br />
genannt.<br />
Die E-Mails variieren dabei sehr stark, was die Gründe für das Umschichten<br />
von Geldern angeht und werden stark an aktuelle Themen angepasst. So<br />
dauerte es keine 6 Tage, bis die “Nigerian Connection” ihren Inhalt auf die<br />
Tsunami-Katastrophe im Dezember 2004 angepasst hatten. In dem Fall wurde<br />
aber nicht mit einem illegalen Geschäft gelockt, sondern nur an die Spendenwilligkeit<br />
appelliert.<br />
2.5.3 UBE – Unsolicited Bulk E-Mail<br />
UBE (Unerwünschte Massenmails) bezeichnen Mails, die keinem direkten<br />
kommerziellen Erfolg dienen. Diese werden zum Verbreiten von Hoax-<br />
Meldungen 8 , zum manipulieren einer Meinung und zur Gewinnung von persönlichen<br />
Daten verwendet.<br />
8 falschen Informationen
2.5. Begriffsbestimmung Spamarten 19<br />
2.5.3.1 Politisch motivierter Spam<br />
Drei Tage vor den Europawahlen 2004 startete ein neues Ausmaß an politisch<br />
motivierten Spam. Der Wurmautor des Sober Wurms nutzte die infizierten<br />
Rechner, um seine rechtsradikalen Botschaften zu verteilen. Der Inhalt der<br />
Mails war dabei sehr kurz gehalten und versuchte scheinbar wahre Begebenheiten<br />
aufzuzeigen, in denen Ausländer als kriminell und gefährlich dargestellt<br />
wurden. Diese Spam-Welle hatte ein derartiges Ausmaß, dass dadurch<br />
die großen E-Mail Provider in Deutschland ihre Mail-Server anpassen mussten,<br />
um diese Mails vor einer Virus-Überprüfung abzulehnen. [HE04]<br />
2.5.3.2 JoeJobs<br />
Gegen den Empfang von Spam-Mails gibt es mehrere Abwehrmöglichkeiten,<br />
auf die bereits genauer eingegangen wurde. Unangenehmer ist dabei die<br />
umgekehrte Version. Dabei wird die eigene Mail-Adresse (oder die Firmen-<br />
Domain) als Absender von Spam-Mails genutzt und somit der (scheinbare)<br />
Absender diskreditiert. Das Fälschen von MAIL FROM: oder dem From:-<br />
Header ist dabei trivial. Der erste bekannte Fall dieser Diskreditierung betraf<br />
“joes.com” [JD97]. Damals sind Spam-Mails aufgetaucht, die den Anschein<br />
hatten, als ob sie für “joes.com” werben. Der Betreiber musste daraufhin seinen<br />
Provider und diverse Blacklisten überzeugen, dass er mit dieser Spam-<br />
Welle nichts zu schaffen hatte und das Opfer einer Verleumdungs-Kampagne<br />
war.<br />
Gegen solche JoeJobs gibt es derzeit kein standardisiertes Mittel. Die MARID<br />
(MTA authorization in DNS) Workinggroup des IETF versuchte im Jahre 2004<br />
mit mehreren Vorschlägen das Problem anzugehen. Aufgrund von Lizenzstreitigkeiten<br />
unter den Teilnehmern, löste sich die Gruppe Ende des Jahres<br />
2004 [TH04] ohne einen verabschiedeten Standard auf.<br />
2.5.3.3 Phishing<br />
Messagelabs bezeichnet in [ML05] das abgelaufene Jahr 2004 als das Jahr<br />
des “Phishings”. Phishing bezeichnet Mails, in denen versucht wird, Konto-<br />
, Login- oder Kreditkartendaten vom Empfänger zu erhalten. Hierzu wird<br />
der Empfänger mit einer E-Mail getäuscht, die vorgibt von der zuständigen<br />
Organisation 9 zu sein. Der Begriff Phishing leitet sich aus den drei Worten<br />
“password harvesting fishing“ ab.<br />
Am Anfang genügte es, das HTML-Layout der E-Mails an das Layout der jeweiligen<br />
Organisationen anzupassen und mit einem Formular für die Daten<br />
zu versehen, dessen Inhalt dann aber an den Betrüger übermittelt wurde. Um<br />
noch effektiver zu werden passten sich die “Phisher” an und nutzten URL-<br />
Spoofing in den E-Mails. Durch eine Browserschwäche glaubte der Benutzer,<br />
9 Bank, eBay, PayPal etc.
20 Kapitel 2. Grundlagen<br />
dass er sich auf den Seiten der Organisation befand und gab bereitwillig alle<br />
nötigen Daten im Formular an.<br />
In der aktuellste Angriffsmethode [EJ05] wird die IDN-Domain-Verarbeitung 10<br />
in Mozilla Produkten ausgenützt. Hierbei werden übliche Zeichen als Sonderzeichen<br />
kodiert. Dadurch ist es möglich, dem Benutzer einen scheinbar korrekten<br />
Domainnamen anzuzeigen. Als www.paypal.com kann mittels IDN auch<br />
www.xn–pypal-4ve.com angegeben werden, welches ein ähnlich aussehendes<br />
“a” verwendet.<br />
2.5.3.4 Address Verification<br />
Mittels präparierten HTML-Image-Tags innerhalb einer E-Mail wird versucht,<br />
eine Mailadresse zu verifizieren. Ebenfalls sehen es diese sogenannten “Address<br />
Harvester” als ausreichend verifiziert an, wenn eine E-Mail ohne Mailinhalt<br />
zugestellt wird und keine Fehlernachricht produziert wird. Hierbei<br />
werden auch die schon beschriebenen “remove-me”-Links verwendet. Solche<br />
überprüften Mailadressen lassen sich im Direktmarketing Geschäft teuer verkaufen,<br />
da hier die Durchdringungsquote um einiges höher liegt als bei einem<br />
via Webrobots von Webseiten gesammelten Mailadressen Bestand.<br />
10 Umlaut Domains
Kapitel 3<br />
Methoden der Spam- und<br />
Virenerkennung<br />
Je nach Betroffenheitsgrad der Empfänger gibt es unterschiedliche Arten der<br />
Reaktion auf Spam-Mails: Empörung, Ärger, Resignation, störrisches Wegklicken<br />
. . .<br />
In diesem Kapitel wird beschrieben mit welchen Methoden Spammer arbeiten<br />
und welche technischen Möglichkeiten zur Spamvermeidung sich daraus ergeben.<br />
Neben einer Schulung der Mitarbeiter zur Vermeidung unerwünschter<br />
Mails müssen technische Filtermaßnahmen eingesetzt werden.<br />
3.1 Methoden der Spammer<br />
Bevor es möglich ist, Methoden der Spamerkennung zu finden, muss man sich<br />
der Methoden der Spammer bewusst werden.<br />
3.1.1 Open Relay<br />
Als Open Relay werden Mailserver bezeichnet die ohne gesonderte Autorisierung<br />
E-Mails an beliebige Empfänger-Domains annehmen und weiterleiten.<br />
Um die eigenen Ressourcen zu schonen, bedient man sich bei solchen MTAs.<br />
Dank mehrerer RCPT TO: kann ein Spammer bereits mit einer DSL-Leitung<br />
Millionen von Empfängern erreichen wenn ein Open Relay für ihn die Mail<br />
in mehrere einzelne Mails aufteilt. Obwohl Mailadministratoren als erstes ihre<br />
Mailserver entsprechend konfigurieren sollten, damit diese nicht als Open<br />
Relay missbraucht werden können, gibt es immernoch Installationen im Netz<br />
mit falsch konfigurierter Software. Dies passiert zum einen durch Standard-<br />
Installationen, die nicht weiter angepasst werden und zum anderen aufgrund<br />
von Konfigurationsfehlern. So glauben einige Mail-Administratoren noch heute,<br />
dass es als Authentifizierung genüge wenn der MAIL FROM: aus dem eigenen<br />
Domain-Bereich stammt.
22 Kapitel 3. Methoden der Spam- und Virenerkennung<br />
3.1.2 Open Proxy<br />
Unter Open Proxy versteht man Systeme, die Dienste zum weiterleiten von<br />
Verbindungen ohne eine Berechtigungsüberprüfung anbieten. Durch der Verbreitung<br />
von DSL und Heimnetzwerken hat die Anzahl dieser Systeme stark<br />
zugenommen. Somit bietet sich für Spammer eine neue Möglichkeit Mails<br />
über möglichst viele Systeme zuzustellen und damit ihre Herkunft zu verschleiern.<br />
Heimanwender PCs mit Proxy-Software sind häufig nicht vor Missbrauch<br />
aus dem Internet geschützt. Hierbei genügt es bereits, wenn der Proxy<br />
Dienst einen TCP Port weiterleitet, wie es zum Beispiel bei einem HTTP-<br />
Proxy 1 üblich ist. Mit einem Port-Scanner, der gleichzeitig die Konfiguration<br />
des Proxy-Servers überprüft, gelingt es den Spammern in kurzer Zeit eine Vielzahl<br />
von Open-Proxy-Systemen zu finden.<br />
Ein weiterer beliebter Proxy Dienst stellt der Socks-Proxy dar. Eine ehemals<br />
beliebte Anwendung bei Windows-Gateways war die “Wingate” Software, die<br />
standardmäßig mit einem offenem Socks Proxy installiert wurde.<br />
3.1.3 Trojaner / Viren / Kompromittierte Maschinen<br />
Durch die starke Nutzung des Internets ist auch die Anzahl der durch Trojaner,<br />
Viren oder Exploits 2 kompromittierten Maschinen angestiegen. Wie durch<br />
den Heise Verlag in [JK04] nachgewiesen wurde, verkaufen Virenautoren die<br />
Ressourcen ihrer infizierten Maschinen an Spamversender. Im vorliegendem<br />
Fall handelte es sich um den Trojaner Randex, der mittels IRC steuerbar war.<br />
Hierbei gab es die Möglichkeit, einen Socks-Proxy-Server zu installieren. Die<br />
IP-Adressen der infizierten Rechner werden von den Virenautoren an Spammer<br />
verkauft. Somit kann der Spammer seine Herkunft verschleiern.<br />
Da E-Mail-Würmer durch ihre SMTP Verbreitungsroutine schon die nötigen<br />
Werkzeuge mit sich bringen, liegt auch die Vermutung nahe, dass Virenautoren<br />
den Spammern nicht nur mit Socks-Proxies helfen, sondern auch direkt<br />
entsprechende Spam Läufe starten. Wie im Abschnitt 2.5.3.1 beschrieben, nutzte<br />
bereits der Autor des Sober Wurms die infizierten Rechner um seine politisch<br />
motivierten Botschaften zu verbreiten.<br />
Bei dieser Methode stellt der kompromittierte Rechner eine direkte Verbindung<br />
zum MX-Host der Empfänger-Domain her. Wie in [IH05] dargestellt, gibt<br />
es bereits einen Trojaner der in den Einstellungen des Benutzers nach einem<br />
SMTP-Server sucht, den er zum versenden seiner E-Mails missbrauchen kann.<br />
Es bleibt abzuwarten, ob durch das Blockieren von dynamischen IPs sich diese<br />
Methode bei den Würmern durchsetzen wird.<br />
1 mittels POST- oder CONNECT-Befehl<br />
2 aus dem Englischem: “to exploit” - ausnutzen, in diesem Fall das Ausnutzen von Software<br />
Fehlern.
3.2. RBL – Echtzeit Ausschlussliste 23<br />
3.2 RBL – Echtzeit Ausschlussliste<br />
Realtime Blacklists (RBL) dienen zur Blockade von als Spamquellen bekannten<br />
IP-Adressen. Zur Abfrage nutzt man das DNS-Protokoll. Bei einem Verbindungsaufbau<br />
kann der Server anhand der Client-IP-Adresse überprüfen, ob<br />
diese bereits als Spammer identifiziert wurde. Verschiedene Organisationen<br />
haben sich auf die Pflege der Datenbestände solcher RBLs spezialisiert. Dabei<br />
werden nicht nur bekannte Spamquellen aufgenommen sondern, je nach Anbieter<br />
und Anliegen, auch andere Kategorien. Der Mail-Server-Administrator<br />
muss sich hierbei für eine Liste entscheiden, deren Datenbestand er vertraut.<br />
Es darf dabei nicht außer acht gelassen werden, dass bei Nutzung einer RBL<br />
ein Teil der E-Mail-Policy an eine externe Organisation übergeben wird.<br />
Die verfügbaren RBLs und die Beschreibung ihres Datenbestands sind unter<br />
http://www.openrbl.org/zones.htm aufgelistet.<br />
RBLs gibt es aber nicht nur für Client-IP-Adressen. So wurde im April 2004<br />
eine weitere Form der RBL berühmt:<br />
Die Spam URI Realtime BlockList (SURBL) dient nicht zum Abfragen des sendenden<br />
Mailservers, sondern testet die in der E-Mail enthaltenen URIs gegen<br />
die SURBL. Diese Strategie nutzt die Beobachtung aus, dass Spammer von<br />
überall aus Mails verschicken, aber selten ihren Webserver wechseln.<br />
RBLs haben sich als wirksame Möglichkeit erwiesen, um spammerfreundliche<br />
Provider zu einem Umdenken zu bewegen. Sollte der komplette<br />
Adressbereich eines Providers gelistet werden, muss dieser mit erheblichen<br />
Einbußen rechnen durch einen möglichen Verlust seiner Kunden.<br />
Eine Möglichkeit für Spammer dies zu Umgehen, birgt das IP-Hijacking<br />
[SR04]. Hierzu announcen Provider einen ungenutzten IP-Block, damit Spammer<br />
“frische” IP-Adressen für ihren relativ kurzen Spam lauf erhalten. Nach<br />
dem Spamlauf wird der IP-Space wieder freigegeben.<br />
3.3 Greylisting – Graue Listen<br />
Im Gegensatz zu den RBLs versucht Greylisting das Problem anhand der<br />
SMTP RFC anzugehen. Das Prinzip des Greylisting [EH03] baut auf den<br />
Queue-Mechanismus der Mailserver. Sollte der Ziel-Mailserver einen temporären<br />
Fehler ausgeben, ist der Client dazu verpflichtet, die Mail zu einem späterem<br />
Zeitpunkt noch einmal zu senden. Um dies zu erreichen, liefert der Ziel-<br />
Mailserver nach dem RCPT TO: einen temporären Fehler, und speichert ein<br />
Triplet, bestehend aus MAIL FROM: , RCPT TO: und der Client-IP-Adresse.<br />
Bei einem erneuten Zustellungsversuch innerhalb eines definerten Zeitrahmens,<br />
bei dem das Triplet unverändert bleibt, wird dieses dann “Whitelisted”<br />
und für zukünftige Transaktionen zugelassen.<br />
Spammer sind daran interessiert, ihre Nachrichten möglichst schnell und mit<br />
geringem Ressourcenverbrauch zu versenden. Da derzeitig bei der Zustellung
24 Kapitel 3. Methoden der Spam- und Virenerkennung<br />
über Open Proxy oder Trojaner-Systeme kein Queueing Verfahren zum Einsatz<br />
kommt, wirken temporäre Fehler wie eine permanente Ablehnung. Laut<br />
Genua [GE04] können damit 99% der Spam-Mails unterdrückt werden.<br />
Ein Problem dieser Methode stellen große Mail-Systeme wie gmail.com oder<br />
btinternet.com dar, die bei einem erneuten Versenden nicht zwangsweise von<br />
der gleichen IP-Adresse, oder im schlimmsten Fall einem anderen Netzblock,<br />
kommen. Ebenfalls muss beachtet werden das nicht alle fehlerhaften Implementierungen<br />
auf einen Spammer schließen lassen.<br />
Auch wenn SMTP nicht für Echtzeit Kommunikation ausgelegt ist, bringt dieses<br />
Verfahren eine unnötige Verzögerung in den gesamten Mail-Verkehr, der je<br />
nach Client-MTA-System bis zu 8h dauern kann. Ein weiterer Nachteil ist der<br />
erhöhte Verbrauch der Ressourcen (durch anwachsende lokale Queue) beim<br />
Client-System, aufgrund des Greylistings auf Empfängerseite.<br />
Eine Anpassung an Greylisting ist sowohl für Würmer, als auch für Spammer<br />
kein großer Aufwand. Wie in Abschnitt 3.1.3 auf Seite 22 erwähnt, wird im<br />
ersten Schritt die vorhandene Provider Struktur durch die Virenautoren und<br />
Spam-Versender genutzt. Die SMTP-Server der missbrauchten Clients sind<br />
dann in der Lage, die Mails für einen zweiten Zustellungsversuch in ihrer<br />
Queue zu halten. Sollten die Provider sich anpassen und ihre SMTP-Server<br />
mit aktuellen Viren- und Spamfiltern versehen, müsste die Software am infizierten<br />
Rechner eine lokale Queue halten. Auch diese Methode bedarf keinen<br />
größeren Aufwand, wenn man bedenkt, dass kleinere Mail-Software, wie zum<br />
Beispiel SSMTP, bereits mit 1800 Zeilen C-Code auskommt.<br />
3.4 Fehlerhafte SMTP-Implementierung<br />
Die Spammer haben in der Vergangenheit gezeigt, dass die von ihnen benutzte<br />
Software bestimmte Merkmale aufweist. In der Regel achten sie bei der Entwicklung<br />
ihrer Software vordergründig auf ein schnelles Versenden von Mails<br />
und nicht auf RFC-Konformität. Die Verstöße gegen RFC-Standards können<br />
als Antispammethode genutzt werden.<br />
• SMTP-Banner – Nach einem erfolgreichen TCP-Connect muss sich der<br />
Server zuerst mit einem SMTP-Banner “vorstellen”. Ein Client muss erst<br />
auf dieses Banner warten, bevor er sein EHLO/HELO-Kommando schickt.<br />
Fügt der Server vor dem senden des Banners eine künstliche Wartezeit<br />
von fünf Sekunden ein und weist Clients, die schon vorher ein Kommando<br />
senden, mit einem 5xx Fehler ab, werden bereits schlechte SMTP-<br />
Implementationen identifiziert. Leider trifft dies auch auf einen Dienst<br />
wie Gmail zu, die aufgrund ihrer großen Mail-Infrastruktur ebenfalls die<br />
Mail so schnell wie möglich aus ihrem System haben wollen. Doch glücklicherweise<br />
startet Gmail einen zweiten Versuch gleich im Anschluss, bei<br />
dem sie auf das SMTP-Banner warten.
3.5. Verteilte Prüfsummen-Verfahren 25<br />
• EHLO/HELO – Laut RFC2821 darf im EHLO/HELO nur ein Hostname<br />
als Parameter enthalten sein. Eine Ausnahme zum Hostname besteht,<br />
falls der Client keinen Reverse-Eintrag besitzt, kann dieser auch seine IP,<br />
in der Form [], als Parameter verwenden. Die Nutzung verschiedener<br />
Sonderzeichen ist damit ausgeschlossen. Laut RFC ist es sogar<br />
Pflicht, bei ungültigen Sonderzeichen im EHLO/HELO die Verbindung<br />
mit einem 501 Fehler zu beenden.<br />
Zitat RFC 2821 Section 4.1.2:<br />
[...] In particular, the underscore character is not permitted.<br />
SMTP servers that receive a command in which invalid character<br />
codes have been employed, and for which there are no<br />
other reasons for rejection, MUST reject that command with a<br />
501 response.<br />
Eine Situation, die laut RFC nicht vorkommen kann, ist das senden des<br />
Zielsystem-Hostnamen als Parameter. Dies würde den Sender nicht eindeutig<br />
Identifizieren und kann daher ebenfalls mit einer Fehlernachricht<br />
quittiert werden.<br />
• MAIL FROM – Laut RFC muss der im MAIL FROM: angegebene Absender<br />
in der Lage sein, Non-Delivery-Reports zu empfangen. Dadurch ist<br />
er in der Lage, gegebenenfalls über ein anderes Kommunikationsmedium<br />
den Empfänger zu benachrichtigen. Sollte dieser nicht dazu in der<br />
Lage sein, kann der SMTP-Server die Transaktion mit einer Fehlermeldung<br />
quittieren. Es gibt einige Mail-Server die einen sog. “sender verify<br />
callout” beherrschen, um die Validität einer Mail-Adresse zu überprüfen.<br />
• RCPT TO – Als Empfänger einer Mail darf nur eine Adresse angegeben<br />
werden, für die sich das Zielsystem zuständig fühlt. Bei sogennanten<br />
Smarthost Relay Servern gilt noch die Bedingung, dass der Client sich<br />
authentifiziert hat (via IP oder SMTP AUTH-Mechanismen).<br />
Bei mehreren fehlgeschlagenen RCPT TO: kann davon ausgangen werden,<br />
dass eine Brute-Force-Attacke 3 läuft. In diesem Fall kann der Spam-<br />
Versand durch das künstliche Verzögern der Kommandos oder das beenden<br />
der Verbindung behindert werden. Damit werden Ressourcen auf<br />
Seiten des Spam-Versenders gebunden, die nicht für weitere Adressverifikation<br />
zur Verfügung stehen.<br />
3.5 Verteilte Prüfsummen-Verfahren<br />
Beim verteilten Prüfsummen-Verfahren (zum Beispiel DCC – Distributed<br />
Checksum Clearinghouse) wird für jede empfangene E-Mail eine Prüfsumme<br />
3 im amerkanischen auch “rumpelstilzchen-attack” gennant
26 Kapitel 3. Methoden der Spam- und Virenerkennung<br />
gebildet, welche an ein verteiltes Rechnernetzwerk weitergeleitet wird. Aus<br />
der resultierenden Antwort kann darauf geschlossen werden, wie oft diese<br />
E-Mail von anderen Rechnern empfangenen wurde. Jede Abfrage nach einer<br />
Prüfsumme erhöht dabei gleichzeitig den Zähler. Ab einem definierten<br />
Schwellwert gilt die Mail als Spam. Dieses Verfahren erkennt dabei nicht notwendigerweise<br />
nur Spam, sondern auch erwünschte identische Massenmails<br />
(zum Beispiel Newsletter).<br />
Da in Spam-Mails oftmals versucht wird, einen persönlichen Bezug zum Empfänger<br />
zu suggerieren, ändert sich die Anrede in den Mails. Ebenso versuchen<br />
Spammer durch zufällige Zeichenfolgen innerhalb einer Mail, dieses<br />
Checksum-Verfahren zu umgehen. Daher werden sogenannte Fuzzy-<br />
Checksum-Verfahren verwendet, deren Prüfsummen sich durch kleine Veränderung<br />
nicht beeinflussen lassen. Um die Fuzzy-Checksum-Verfahren zu umgehen<br />
muss ein Spammer nur den zufälligen Textbaustein größer gestalten als<br />
den eigentlichen Mail-Inhalt.<br />
3.6 Regular Expression - Regulärer Ausdruck<br />
Reguläre Ausdrücke sind genau definierte Textsuchmuster, mit denen es möglich<br />
ist, Zeichenketten zu beschreiben.<br />
Beispiel:<br />
/v.{0,2}i.{0,2}a.{0,2}g.{0,2}r.{0,2}a/i<br />
Die Mächtigkeit von regulären Ausdrücken besteht in den vielen Variationen<br />
eines Suchmusters. So passt dieses Beispiel auf mehrere Schreibweisen des<br />
Wortes “Viagra”. Dies kann bereits an vielen Mail-Servern beim Empfang einer<br />
E-Mail, eingebunden werden, um zum Beispiel anhand von Textmustern<br />
im Subject-Header die Mail abzulehnen.<br />
Den Mail-Inhalt mittels regulären Ausdrücken zu untersuchen, hat sich als<br />
Standard zur Spamerkennung etabliert. Hierbei muss aber darauf geachtet<br />
werden, dass nicht bei einer einzelnen gefundenen Zeichenfolge eine Klassifizierung<br />
als Spam vorgenommen wird. Dadurch wird verhindert, dass einzelne<br />
Treffer in einer Ham-Mail den Text als Spam einordnen. Erst die Summe<br />
aller Treffer entscheidet über den Charakter einer E-Mail. Deswegen nutzen<br />
Antispam-Produkte das Ergebnis mehrerer regulärer Ausdrücke als Basis zur<br />
Textklassifizerung.<br />
3.7 Bayes – Statistische Analyse<br />
Paul Graham beschrieb in [PG02] zum ersten Mal den Einsatz einer statistischen<br />
Wahrscheinlichkeitsrechnung zur Erkennung von Spam. Paul Graham<br />
war selber jahrelang Mitentwickler diverser Antispam-Methoden und
3.7. Bayes – Statistische Analyse 27<br />
bemerkte, dass die derzeitigen Filtermethoden nur reaktiver Natur waren. So<br />
wurden Textbausteine von Spam-Mails analysiert und entsprechende reguläre<br />
Ausdrücke an die neuen Bausteine angepasst. Spammer hingegen optimierten<br />
ihren Spam mittels der aktuellen Spam-Filter und konnten somit sicher sein<br />
dass ihre Mails nicht gefiltert wurden. Diesem Katz-und-Maus-Spiel wollte<br />
Graham durch eine statistische Analyse der Spam-Mails entgehen.<br />
In der ersten Lernphase eines Bayesian Filter kategorisiert der Benutzer selbst<br />
seine Mails nach Spam und Ham Kriterien. Diese Sammlung wird dem Filter<br />
übergeben, der anhand der vorgenommenen Kategorisierung eine Einordnung<br />
einzelner Tokens als signifikant für Spam oder Ham durchführt.<br />
Neu eintreffende Mails werden dann ebenfalls in Tokens aufgeschlüsselt und<br />
deren Wahrscheinlichkeit der Tabelle für das Auftreten in Spam beziehungsweise<br />
Ham der Tabelle entnommen. Mittels des Satz von Bayes lässt sich aus<br />
den Token-Warscheinlichkeiten die Wahrscheinlichkeit ermitteln, dass die eintreffende<br />
Mail eine Spam-Mail ist oder nicht.<br />
Das Prinzip funktioniert aber nur, wenn die Datenbank mit entsprechend vielen<br />
Mails trainiert wurde. Hierbei geht zum Beispiel SpamAssassin von einer<br />
Mindestanzahl von jeweils 200 Ham und Spam-Mails aus. Die Methode hat<br />
sich auch als äußerst resistent gegenüber Falsch-Positiven bewiesen. Wenige<br />
Spam-Mail Merkmale in einer Ham-Mail führen also nicht zu einer Einordnung<br />
als Spam.<br />
Beispiel:<br />
Gegeben sind drei Tokens mit der Spam-Wahrscheinlichkeit von<br />
p 1 = 10%, p 2 = 89% und p 3 = 14%. Dann gilt:<br />
p total =<br />
(0.10)(0.89)(0.14)<br />
(0.10)(0.89)(0.14)+(1−0.10)(1−0.89)(1−0.14)<br />
Dies ergibt eine Wahrscheinlichkeit von p total = 12, 7% dass diese Mail Spam<br />
sein könnte.<br />
Dieses vereinfachte Beispiel verdeutlicht, dass selbst bei einem Token mit hoher<br />
Spam-Wahrscheinlichkeit sich der Gesamt Charakter der E-Mail nicht ändern<br />
wird. In der Realität werden auch E-Mailr-Header und komplette Textbausteine<br />
verwendet, so dass 3-4 Tokens mit hoher Wahrscheinlichkeit einer<br />
Vielzahl von Tokens mit niedriger Wahrscheinlichkeit gegenüberstehen.<br />
Das Bayes Theorem [TB63] erfordert einen hohen Rechenaufwand, weswegen<br />
man zur Spamfilterung eine vereinfachte Version namens “Naiv Bayes”<br />
verwendet. Dabei wird davon ausgegangen, dass die Token-Merkmale keinen<br />
Bezug zueinander haben. Was im Falle des Wortes “Grüßen“ (wie der Name<br />
schon sagt) recht naiv ist, da meist noch “freundlichen” vorangestellt wird.<br />
Trotz dieser Einschränkung funktioniert das Naiv Bayes aber immer noch erfolgreich<br />
bei der Erkennung von Spam Mails. Sofern die Bayes-Datenbank mit<br />
genügend Beispielen zu jeder Kategorie befüllt wurde.
28 Kapitel 3. Methoden der Spam- und Virenerkennung<br />
3.8 Weitere Methoden<br />
Es gibt noch eine Vielzahl weiterer Methoden, um Spam zu bekämpfen. Da<br />
diese aber für den Einsatz in einer Unternehmenslösung unsinnig erscheinen,<br />
werden diese kurz beschrieben und anschliessend begründet, weswegen sie<br />
nicht für die weitere Verwendung in der Diplomarbeit relevant sind.<br />
3.8.1 Tarpitting<br />
Beim Tarpitting wird eine künstliche Verzögerung benutzt, sobald der Client<br />
eine bestimmte Anzahl von RCPT TO: pro Mail verwendet. Dabei erhofft man<br />
sich, dass ein Spammer, der tausende von RCPT TO:angibt mehrere Stunden<br />
mit der Auslieferung einer Mail beschäftigt ist. Wenn sich der Versand lange<br />
genug hinauszögert, könnte der Spammer bereits seinen Spamlauf beenden.<br />
Nachteil dieser Methode ist der Verbrauch von eigenen System Ressourcen.<br />
Ebenso wird dies leicht umgangen, indem Spammer die Anzahl der Empfänger<br />
pro SMTP-Verbindung reduzieren.<br />
3.8.2 Teergrubing<br />
Teergrubing basiert auf dem gleichen Verzögerungsprinzip wie Tarpitting.<br />
Doch im Gegensatz zum Tarpitting verzögert eine “Teer-Grube” bereits ab<br />
dem ersten Kommando. Hierfür gibt es mehrere unterschiedliche Ansätze. So<br />
wird zum Beispiel bei OpenBSD ein Daemon verwendet, der Zeichen für Zeichen<br />
sendet und dazwischen eine konfigurierbare Pause einlegt. Clients, die<br />
mit SMTP Erweiterungen (ELHO) umgehen können, werden mit sogenannten<br />
’continuation lines’ hingehalten. Um nicht auch legitimen Sender auszubremsen,<br />
kann auf den Datenbestand von RBL Quellen zurückgegriffen werden.<br />
Sollte es doch zu einem “Falsch-Positiv” kommen, würde sich die Mail um<br />
Stunden verzögern. Die Hoffnung der Netzgemeinde besteht darin, dass<br />
Spammer nicht die Ressourcen aufbringen wollen, um ihre versendenden Maschinen<br />
mit blockierten Sockets zu belasten.<br />
Doch in Anbetracht der Vielzahl an Spammer-freundlichen Providern und der<br />
Nutzung von kompromittierten Maschinen wirkt diese Methode nur bedingt<br />
gegen Spam.<br />
3.8.3 TMDA - Tagged Message Delivery Agent<br />
Das TMDA Verfahren friert beim ersten Zustellungsversuch eine Mail ein und<br />
informiert den Versender über diesen Vorgang. Dabei erhält der Sender meist<br />
einen Link, mit dem er die Zustellung seiner Mail bestätigen kann. Sollte der<br />
Sender nach einer bestimmten Zeit die Mail nicht bestätigt haben, wird diese
3.9. Virenfilter 29<br />
gelöscht. Diese Methode basiert auf der Beobachtung, dass Spammer Fehlernachrichten<br />
nicht auswerten. Praktisch einsetzbar ist dies jedoch nicht, da sie<br />
dem Sender zuzätzliche Arbeit macht, und diese sich schnell von den automatischen<br />
Nachrichten gestört fühlen.<br />
Wenn beide Seiten (Sender und Empfänger) das TMDA Verfahren einsetzen,<br />
ohne dabei die Confirmation Mails der Gegenstelle gesondert zu behandeln,<br />
besteht die Gefahr, dass sich beide Systeme gegenseitig aufschaukeln, indem<br />
sie jede weitere Confirmation Mail mit einer neuen Nachricht bestätigt haben<br />
wollen. Dieser MTA-Ping-Pong kann zu einem Denial-of-Service führen.<br />
3.8.4 MARID - MTA authorization in DNS<br />
Die IETF stellte eine Arbeitsgruppe zusammen, die sich mit der Autorisierung<br />
im DNS System befassen sollte. Hierbei wollte man die gefälschten MAIL<br />
FROM: eindämmen. Einer der vorgeschlagenen Standards beruht auf dem bereits<br />
implementierten SPF (Sender Policy Framework), welches via DNS ein<br />
TXT-Feld vom Namerservers der Absenderdomain abfragt und auswertet, ob<br />
der sendenden MTA bere chtigt ist, für diese Domain Mails zu verschicken.<br />
Dabei zerstörte SPF ein Mail-Forwarding an weitere Domains. Letztendlich<br />
löste sich die MARID Workinggroup Ende 2004 ergebnislos auf. Die vorgeschlagenen<br />
Standards wurden von den meisten Mail-Server-Administratoren<br />
nicht angenommen, da sie nur die Kundenbindung weniger großer Mail-<br />
Anbieter unterstützen, aber nicht verhinderten, dass Spammer sich schnell eigene<br />
Domains zulegten um dieses Verfahren zu umgehen.<br />
Vereinzelt wird SPF noch zum Schutze von JoeJobs und Phishing Mails<br />
angeboten. So verwenden zum Beispiel die großen E-Mail Provider wie<br />
GMX/AOL/GMAIL solche SPF Einträge im DNS. Auch größere IT Unternehmen<br />
wie SAP oder Microsoft veröffentlichen SPF Einträge auf ihren Nameservern.<br />
3.9 Virenfilter<br />
Da Viren glücklicherweise nicht so stark in ihrer Software Komponente variieren,<br />
nutzen die Antiviren Scanner Signatur-Datenbanken mit den jeweils<br />
aktuellen Viren. Diese Signaturen müssen stündlich aktualisiert werden um<br />
gegen neue Würmer reagieren zu können.<br />
Bei der Verbreitung über E-Mail unterscheidet man zwischen Würmern und<br />
Trojanern. Würme r sind Viren, deren Hauptaufgabe darin besteht, eine möglichst<br />
schnelle Verbreitung über E-Mail zu realisieren. Dafür untersucht der<br />
Mail-Wurm den infizierten Rechner nach möglichen Empfängern, um sich anschliessend<br />
selber zu replizieren und an diese zu senden. Damit der Wurm<br />
sich erfolgreich verbreiten kann, nutzt er Fehler in der Mail-Client-Software
30 Kapitel 3. Methoden der Spam- und Virenerkennung<br />
aus oder versucht dem Benutzer davon zu überzeugen, den Mail-Anhang zu<br />
öffnen.<br />
Der gängige Fachbegriff für diese Art von schadhafter Software ist “malware”.<br />
Er entstand durch die Kombination von “malicious” = boshaft und Software<br />
und beschreibt damit den böswilligen Charakter der Software.
Kapitel 4<br />
Implementierung<br />
In diesem Kapitel wird die gewählte Implementierung vorgestellt. Hierzu<br />
wird das Konzept beschreiben und die Auswahl der einzelnen Komponenten<br />
begründet.<br />
4.1 Konzept<br />
Wie schon in Kapitel 3 erwähnt, ist das Zusammenspiel der Abwehrmethoden<br />
entscheidend für den Erfolg des Systems. Hierbei geht es nicht nur um eine<br />
möglichst präzise Texterkennung, sondern gleichzeitig auch um die optimale<br />
Ausnutzung der Performance eines Systems. In Tabelle 4.1 auf der nächsten<br />
Seite werden die Abwehrmethoden nochmal zusammengefasst und ihre Performanceanforderungen<br />
anhand der beschriebenen funktionsweise bewertet.<br />
Diese Methoden sind aufgrund ihrer unterschiedlichen Performanceanforderung<br />
entsprechend einzusetzen. Ziel soll es sein, dass Methoden<br />
die weniger Ressourcen verbrauchen, vor den aufwendigeren Methoden<br />
zum Einsatz kommen, so dass eine Filterung während des<br />
SMTP DATA möglich wird. Dadurch wird es möglich die Annahme<br />
der Mail noch während der SMTP-Session zu verweigern und
32 Kapitel 4. Implementierung<br />
damit einen legitimen Sender über den Fehlschlag zu informieren.<br />
Methode Wirkung Implementierung Performanceanforderung<br />
IP-RBL Blockade auf IP Ebene.<br />
SURBL Blockade von Spammer<br />
Webservern<br />
Greylist Temporäre Blockade<br />
von SMTP gelieferten<br />
Daten<br />
SMTP Blockade von nicht<br />
Syntax RFC Konformen<br />
Mailern<br />
Checksum Erkennung von Massenmails<br />
Regular Erkennung von bekannten<br />
Expression<br />
Text- und<br />
Headerbausteinen im<br />
Mail Body<br />
Am MTA während des<br />
Verbindungsaufbaus<br />
Textanalyse der Mail.<br />
Im MTA während der<br />
SMTP Prozedur<br />
Im MTA während der<br />
SMTP Prozedur<br />
Textanalyse der Mail.<br />
Textanalyse der Mail.<br />
sehr gering<br />
sehr gering<br />
gering<br />
gering<br />
mittel<br />
hoch<br />
Naiv Statistische Analyse Textanalyse der Mail. sehr hoch<br />
Bayes des Text- und Headertokens<br />
im Mail<br />
Body<br />
Viren Filter<br />
Patternanalyse der Patternanalyse einzel-<br />
hoch<br />
MIME Attachements ner Mail Anhänge.<br />
Tabelle 4.1: Performance-Anforderung der einzelnen Methoden<br />
Die einzelnen Komponenten des Systems können ausgelagert werden und bieten<br />
so die Grundlage für eine hochverfügbare Clusterlösung. Die in Abbildung<br />
4.1 auf der nächsten Seite dargestellten Komponenten werden im späteren<br />
Verlauf beschrieben. Die abgebildete Architektur zeigt die Implementation.<br />
Hierbei sind die Komponenten, welche sich mit der SMTP-Prozedur befassen<br />
zu einer Einheit zusammengefasst. Sowohl die SQL, als auch die Quarantänen<br />
Komponente können gemeinsam mit den SMTP Komponenten auf<br />
einem System betrieben werden. Im Fall eines Ressourcenmangels des Systems,<br />
können die Komponenten zu mehreren Systemen erweitert werden. Dabei<br />
ist es denkbar, dass zum Beispiel nur die Antispam Komponente ausgelagert<br />
wird oder aber die kompletten SMTP-Komponenten nachgebildet werden,<br />
während diese auf eine gemeinsame Datenbank und Quarantäne zugreifen.
4.2. Mail Transfer Agent 33<br />
Abbildung 4.1: Konzept der Architektur<br />
4.2 Mail Transfer Agent<br />
Es musste gewährleistet werden, dass jede einzelne Methode User- bzw Domainspezifisch<br />
an- bzw. abschaltbar ist. Dies konnte nur mit einem komplexem<br />
Regelwerk geschehen. Hier liegt auch die Stärke von exim. Die Konfiguration<br />
ist in ACL (Access Control Language) gehalten und erscheint eher als<br />
eine Skript Sprache als eine Konfigurationssprache. Aufgrund der genannten<br />
Vorteilen wurde zur Implementierung der exim Mail Transfer Agent (MTA)<br />
[EXIM/SW] ausgewählt.<br />
Ebenso bietet exim (Ab Version 4.5) dank dem Exiscan Patch von Tom Kistner<br />
die Möglichkeit, den Mail-Body schon während der SMTP Prozedur an einen<br />
Virenscanner und an SpamAssassin zu übergeben. Dadurch können Viren bzw<br />
Spam-Mails direkt abgelehnt werden.<br />
Um einen eventuellen Cluster Betrieb zu gewährleisten, besitzt exim die Option,<br />
mehrere SpamAssassin oder ClamAV in einem Round-Robin-Verfahren<br />
anzusprechen. Sollte eine redundante Komponente ausfallen, wird diese für<br />
einen definierbaren Zeitraum nicht weiter verwendet.<br />
Zur Installation des exim genügte es unter Debian den aktuellen Backport von<br />
“exim4-daemon-heavy“ zu installieren. Dieser kommt bereits mit dem exiscan<br />
patch und bietet auch für die Zukunft die Möglichkeit, die Konfiguration<br />
der einzelnen User Adressen und Domains in einer zentralen SQL-Datenbank<br />
abzulegen.
34 Kapitel 4. Implementierung<br />
4.2.1 exim Überblick<br />
Die exim Konfiguration lässt sich in drei für diese Arbeit relevante Bereiche<br />
aufteilen.<br />
• ACL Access Control Language, die beim Empfang einer E-Mail entscheidet,<br />
wie eine Mail nach definierbaren Kriterien verarbeitet wird.<br />
• router definiert wie Adressen behandelt werden und über welchen<br />
transport die Mail verarbeitet wird.<br />
• transport gibt an welche möglichen Transportmechanismen (SMTP,<br />
mbox) den Routern zur Verfügung stehen.<br />
4.2.2 exim Konzept<br />
Die Konfiguration des exim Daemons ist so aufgebaut, dass Änderungen am<br />
Verhalten über cdb 1 oder SQL-Abfragen geschehen können. Auf diese Weise<br />
muss sich der Administrator eines Mail-Systems nicht mit der auf den ersten<br />
Blick ungewöhnlichen Konfiguration des Mailservers auseinander setzen.<br />
Um eine User/Domain spezifische Konfiguration des Verhaltens zu ermöglichen,<br />
wurden Makros definiert, die in der Datenbank nach der entsprechenden<br />
Mailadresse suchen. Diese Abfragen werden vom exim Daemon im Cache gehalten<br />
und stellen daher keine allzu große Belastung dar.<br />
In der Standard-Installation, bei dem nur ein Mail-Gateway die Mails entgegen<br />
nimmt, ist es unnötig eine SQL Datenbank für die exim Konfiguration<br />
aufzusetzen. Hierfür hat sich das cdb Format bewährt, welches durch seine<br />
konstante Datenbank eine Abfrage mit maximal zwei Dateizugriffen ermöglicht.<br />
Dabei werden die Parameter in der exim Konfiguration aus der cdb-Datei<br />
ausgelesen. Sollte eine redundante Installation mit mindestens zwei Gateways<br />
ausgewählt werden, muss die Konfigurationsdatei nur an einer Stelle angepasst<br />
werden, um auf einen zentralen SQL-Server zuzugreifen.<br />
4.2.2.1 Das ACL Prinzip<br />
Um das Konzept besser nachvollziehen zu können, muss man das ACL System<br />
für diese Arbeit betrachten.<br />
Die ACLs werden der Reihe nach abgearbeitet und sind in der Form<br />
= <br />
aufgebaut. Als Aktion kann dabei warn, accept, defer, require oder deny<br />
ausgewählt werden.<br />
1 constant database format
4.2. Mail Transfer Agent 35<br />
• warn dient dabei zum Hinzufügen von Header Zeilen oder zum Generieren<br />
von zusätzlichen Einträgen in die Logdatei.<br />
• defer meldet dem Client einen temporären Fehler.<br />
• require wird verwendet um eine weitere Bedingungen erfüllen zu<br />
müssen.<br />
# g r e y l i s t i f mail comes from b l a c k l i s t e d or unresolveable hosts .<br />
defer message = $sender_host_address i s not yet authorized to d e l i v e r mail \<br />
from to . \<br />
reason f o r g r e y l i s t i n g : \<br />
$acl_m8 \<br />
Please t r y l a t e r .<br />
log_message = g r e y l i s t e d ( $acl_m8 ) .<br />
! senders = :<br />
a c l<br />
= dnsbl_or_unresolved<br />
s e t acl_m9 = $ { mask : $sender_host_address /24} $sender_address\<br />
$local_part@$domain<br />
s e t acl_m9 = $ { readsocket {/ var/run/ g r e y l i s t d /socket } { $acl_m9 } { 5 s } { } { } }<br />
condition = $ { i f eq {USERBLGREY } { 1 } { 1 } { 0 } }<br />
condition = $ { i f eq { $acl_m9 } { grey } { true } { f a l s e } }<br />
Listing 4.1: exim ACL Beispiel<br />
Im Listing 4.1 wird eine Aktion der acl\_check\_rcpt dargestellt, die das<br />
Greylisting basierend auf RBL Daten und fehlerhaften DNS Einträgen (durch<br />
eine sub-acl) implementiert. Wenn jede einzelne Bedingung zutrifft, wird als<br />
Aktion das defer ausgeführt mit der in message angegebenen Fehlernachricht.<br />
Gleichzeitig wird ein Log Eintrag generiert, der über den Grund für das<br />
Greylisting informiert.<br />
$acl_m8 wird durch die ACL dnsbl_or_unresolved gesetzt. Die Aktion<br />
wird nur ausgeführt, wenn der Sender über TCP/IP eine Mail versucht auszuliefern.<br />
Das USERGREY ist ein Makro, welches in einer Datenbank überprüft<br />
ob für den Empfänger ein Greylisting erwünscht ist.<br />
Prinzipiell werden bei der Einlieferung einer Mail zwei ACLs aufgerufen.<br />
• acl_check_rcpt wird bei jedem RCPT TO: abgearbeitet. Hier werden Bedingungen<br />
definiert, die mit dem Envelope und dem Sender einer E-Mail<br />
zusammenhängen.<br />
• acl_check_content Wird nach dem Empfang des Mail-Bodys abgearbeitet.<br />
Hierbei kann auf die Werte der einzelnen Inhaltsfilter eingegangen<br />
werden und dementsprechende Aktionen ausgeführt werden.<br />
4.2.2.2 Einbindung externer Scanner<br />
Dank des exiscan Patches von Tom Kistner ist die Integration externer<br />
Content-Scanner in exim deutlich vereinfacht worden. Im Gegensatz zu einer<br />
häufig implementierten Sandwich Konfiguration (in der ein Mailer die Mails
36 Kapitel 4. Implementierung<br />
intern an einen Virenscanner und Spamfilter durchreicht), kann man die Aktion<br />
bei exim dort konfigurieren wo sie relevant ist: im MTA der die Mail an<br />
vorderster Stelle entgegen nimmmt. Es sollte nicht Aufgabe eines externen<br />
Programms sein, über die Verarbeitung des Mailers zu entscheiden, vielmehr<br />
sollte der Mailer mit Hilfe von externen Informationen die Entscheidung treffen.<br />
Dies vereinfacht unter anderem das Lokalisieren von Fehlerquellen beim<br />
Mailempfang. Anstatt in vielen unterschiedlichen Protokolldateien nach der<br />
Information zu einem Fehler zu suchen, genügt es, eine Datei des MTA zu<br />
analysieren.<br />
Mit dem exiscan Patch kann eine Vielzahl von externen Scanner eingebunden<br />
werden.<br />
Diese sind unter anderem:<br />
• sophos<br />
ein Antiviren-Scanner von Sophos (http://www.sophos.com)<br />
• aveserver<br />
der Kaspersky Antiviren-Daemon<br />
• clamd<br />
bindet das unten beschriebene Clam AV Toolkit ein<br />
• fsecure<br />
der von F-Secure (http://www.f-secure.com) entwickelte Antiviren<br />
Scanner<br />
• drweb<br />
eine Schnittstelle zum DrWeb (http://www.sald.com/) Antiviren-<br />
Daemon<br />
• cmdline<br />
ein über Kommandozeile aufgerufener Virenscanner.<br />
• spamd<br />
eine Schnittstelle zum SpamAssassin Daemon<br />
• brightmail<br />
Einbindung der Brightmail Antispam Schnittstelle (http://www.<br />
brightmail.com)<br />
4.2.3 implementierte ACLs<br />
Wie schon beschrieben werden Datenbankabfragen genutzt, um Informationen<br />
über die user- oder domainspezifischen Konfigurationen zu erhalten. Diese<br />
sind durch Makros in den einzelnen ACLs eingebettet. Eine Veränderung<br />
im Konfigurationsschema kann dadurch an einer zentralen Stelle in der Konfiguration<br />
vorgenommen werden.
4.2. Mail Transfer Agent 37<br />
4.2.3.1 acl_check_rcpt ACL<br />
Abbildung 4.2: acl_rcpt_check Konzept.<br />
Um das Konzept hinter den einzelnen ACLs besser zu vermitteln, wird auf<br />
einige einige Besonderheiten eingegangen. Selbstverständliche Operationen,<br />
wie zum Beispiel das Ablehnen von Mails für die der Server nicht zuständig<br />
ist, werden dabei nicht erläutert, was aber nicht bedeutet, dass diese Mechanismen<br />
nicht vorhanden sind.
38 Kapitel 4. Implementierung<br />
Die acl_rcpt_check ACL ist dementsprechend ausgelegt, dass “merkwürdig”<br />
erscheinende Sender im ersten Anlauf nicht zu der aufwendigen Inhaltsanalyse<br />
vordringen können.<br />
Ebenso wird an dieser Stelle die userspezifische Konfiguration aus der Datenbank<br />
abgefragt. Sollte es für den User keine Konfiguration geben, wird versucht,<br />
eine domainspezifische Konfiguration abzufragen. Sollte dies wieder<br />
zu keiner erfolgreichen Abfrage führen, wird eine Standardkonfiguration verwendet.<br />
Jede der beschriebenen Aktionen ist daher an beziehungsweise abschaltbar.<br />
Sollte eine Mail an mehr als einen Empfänger adressiert sein, werden die Empfänger<br />
verglichen. Bei gleicher Domain wird die Abfrage von userspezifisch<br />
auf domainspezifisch geändert. Sollte die Domain sich unterscheiden, wird ein<br />
temporärer Fehler für den Empfänger ausgegeben, damit dieser beim nächsten<br />
Zustellungsversuch verwendet wird.<br />
RBL<br />
Als erstes wird der sendende Host einer Überprüfung gegenüber als konservativ<br />
geltenden RBLs überprüft. Dies verlangt nur einen geringen Aufwand<br />
und trifft bereits die meisten als Spam-Versender verifizierten IPs.<br />
Greylisting<br />
Da der Erfolg von Greylisting in dieser Arbeit nicht außer Acht gelassen werden<br />
konnte, wurde diese in einer weniger aggressiven Methode eingesetzt. Die<br />
Idee entstand durch die Überprüfung diverser RBL Organisationen und den<br />
Auswirkungen, wenn deren Antworten zum Ablehnen von Mails verwendet<br />
wird. Die “Falsch-Positiv” Rate ist bei diesen RBLs unbrauchbar hoch. Greylisting<br />
dagegen behandelt jeden Absender auf die gleiche Weise, und verzögert<br />
den Empfang einer (legitimen) E-Mail auf bis zu acht Stunden. Desweiteren<br />
wird Greylisting nur solange erfolgreich sein, bis die Trojanerentwickler<br />
und Open-Proxy-Missbraucher ihre Mails über den Smarthost des Providers<br />
ausliefern. Die Kombination aus diesen aggressiven RBL-Organisationen und<br />
dem Greylisting löst damit gleich zwei Probleme: Fälschlicherweise gelistete<br />
Mailserver werden beim zweiten Versuch zugelassen, und Trojaner/Würmer<br />
bzw Open-Proxy-Misbraucher werden an vorderster Front abgelehnt.<br />
Die Implementation in exim wird dadurch realisiert, dass durch eine weitere<br />
ACL überprüft wird, ob für diesen Sender ein Greylisting angewandt wird.<br />
Sollte der Sender einen zweiten Versuch starten, wird dieser dann auch akzeptiert.<br />
Diese Sub-ACL entscheidet aus dem Datenbestand von vier RBLs und<br />
überprüft ob der sendende Host einen passenden rückwärts auflösbaren DNS-<br />
Namen besitzt. Sollte dieser DNS-Name noch einem Pattern entsprechen, dass<br />
auf dynamische Host zugeschnitten ist, wird ebenfalls ein Greylisting angewandt.<br />
Sollte es wider Erwarten doch zu Zustellungsproblemen bei einem legitimen<br />
Sender kommen, kann dieser durch die Fehlermeldung erkennen, ob<br />
er auf einer RBL gelistet wurde oder durch seinen DNS Eintrag abgewiesen<br />
wurde.
4.2. Mail Transfer Agent 39<br />
Recipient Verify Callout<br />
Um unnötige unzustellbare Fehlermeldungen zu vermeiden, wird der Empfänger<br />
durch einen sogenannter “SMTP callout” überprüft. Hierbei wird der<br />
interne Mailer befragt, ob der Empfänger existiert, bzw. ob Mails für diesen<br />
Empfänger angenommen werden. Damit dieses System erfolgreich greift, darf<br />
der interne Mailserver keine “catch all” Adresse besitzen, bei der jede Mail<br />
Adresse akzeptiert wird. Ebenso hinderlich sind Vorgehensweisen, bei denen<br />
erst nach dem DATA der Client darüber informiert wird, dass der Empfänger<br />
unzustellbar ist. Bei solchen Methoden glaubt das System das die Adresse gültig<br />
ist.<br />
Sender Verify Callout<br />
Damit keine imaginären Absenderadressen angegeben werden können, sollte<br />
auch überprüft werden, ob der Absender in der Lage ist Mails anzunehmen.<br />
Spammer nutzen gerne Webmailer Domains mit einem zufällig gewählten<br />
“localpart”. Ähnlich wie beim “Recipient Verify Callout” wird hier ein<br />
SMTP callout gestartet, der dem für die Absender-Domain zuständigen Mailserver<br />
durch Ablaufen der SMTP Prozedur (EHLO , MAIL FROM:, RCPT TO:)<br />
einen Zustellungsversuch vorspielt.<br />
Diese Callouts sind, durch den Verbrauch von Netzwerkresourcen, aufwendiger<br />
als die davor beschriebenen. Aus diesem Grund ist dies auch als letzte<br />
Hürde in der ACL definiert, so dass nicht für jede Mail, die abgelehnt wird,<br />
ein Verify Callout gestartet werden muss. Exim sieht hierbei von Haus aus<br />
einen Cache vor, um nicht bei einer erneuten Zustellung die gesamte Callout<br />
Prozedur erneut durchlaufen zu müssen.<br />
4.2.3.2 acl_check_content ACL<br />
Die acl_content_check ACL wird nach dem vom Client gesendeten .<br />
während des DATA ausgeführt.
40 Kapitel 4. Implementierung<br />
Abbildung 4.3: acl_content_check Konzept.<br />
Die in der ACL acl_rcpt_check enthaltenen Datenbankabfragen dienen<br />
hier wieder als Basis welche der Funktionen der Nutzer in Anspruch nimmt.<br />
Um in einem Cluster-Umfeld ein doppeltes Scannen zu vermeiden, wird zuerst<br />
überprüft ob ein kryptographischer Header mit einer Signatur vorhanden<br />
ist. Ein positiver Check zwingt die ACL die Mail ohne weitere Scans anzunehmen.<br />
Defekte MIME-Container schließen auf einen unbrauchbaren Mail-Inhalt und<br />
werden daher abgewiesen.<br />
Da der Virenscanner weniger Resourcen verbraucht als eine Spamerkennung<br />
mittels Textanalyse wird diese mittels der malware-Bedingung vor der Viruserkennung<br />
ausgeführt. Hierfür kann mittels der av_scanner-Anweisung<br />
die schon erwähnten Third-Party-Scanner genutzt werden. Der Virenscanner<br />
kann auf Wunsch auch an einem remote Host installiert werden, um die Performance<br />
des Mailsystems nicht zu beeinflussen. Bei einem gefundenem Virus/Wurm/Trojaner<br />
wird die Mail abgelehnt. Hierbei ist es auch nicht notwendig,<br />
die Datensicherheit des Unternehmens durch eine Quarantänefunktion<br />
zu gefährden.
4.3. Antivirus 41<br />
Als letzte Aktion wird die Mail, über das spamd Interface von SpamAssassin<br />
2 kategorisiert. Danach stehen im exim vier Variablen zur weiteren Klassifizierung<br />
und Bearbeitung zur Verfügung. Anhand dieser Variablen und den<br />
userspezifischen Konfigurationen wird über eine Ablehnung oder eine Quarantäne<br />
bei Spam-Mails entschieden.<br />
Falls die Filterung zum späteren Zeitpunkt am internen Mailserver oder<br />
am Mailclient geschehen soll, wird das Scoring-System von SpamAssassin<br />
als X-Spam-Score-Header eingefügt. Damit können unter anderem auch<br />
Outlook-Nutzer eine Filterregel anhand des Spam-Scoring vornehmen.<br />
Da in der acl_rcpt_check schon ein großer Anteil der nicht legitimen Zustellungsversuche<br />
abgehandelt wird, besteht nun die Möglichkeit, die Analysen<br />
während der Mailtransaktion anzusetzen. In [JS04] wird die accept rate gegen<br />
die delivery rate gegenüber gestellt. Dabei werden die üblichen Sandwichkonfigurationen<br />
genauer durchleuchtet. Der Nachteil einer Sandwichkonfiguration<br />
besteht darin, dass sie mehr Mails, empfängt als der dahinter geschaltene<br />
Virenscanner / Spamfilter verarbeiten kann. Dies ermöglichst einen Denial-<br />
Of-Service durch Füllen der lokalen Queue.<br />
Bei einer Inhaltsanalyse während des DATA wird dagegen nur die Anzahl an<br />
Mails angenommen, die bereits Kategorisiert wurden. Dafür nimmt man in<br />
Kauf, dass in Spitzenzeiten das System stark belastet wird. Da aber der größte<br />
Anteil schon vor der Inhaltsanalyse abgearbeitet wird, muss sich das System<br />
einem bis zu 70% geringerem Mailaufkommen stellen.<br />
4.3 Antivirus<br />
Als Open-Source-Virenscanner hat sich nur das Clam AntiVirus Toolkit<br />
[CLAMAV/SW] ergeben. Dieses wird als einziger in der Open-Source-<br />
Gemeinde aktiv gewartet und weiterentwickelt. Ähnlich wie bei den kommerziellen<br />
Anbietern steht hinter dem Projekt ein mehrköpfiges Team dahinter,<br />
das versucht die Virenpattern aktuell zu halten.<br />
Zur Installation auf einem Debian-System genügen die Installationen der Pakete<br />
“clamav-daemon” und “clamav-freshclam”. Letzteres dient zur Aktualisierung<br />
der Virenpatterndatenbank.<br />
Die Auswahl von ClamAV bringt einen Vorteil mit sich: Da, im Sinne der “defense<br />
in depth” Strategie, die Client-Systeme mit Virenscannern anderer Hersteller<br />
ausgestattet sind, bietet ClamAV durch seine unabhängige Patterndatenbank<br />
eine weitere Absicherung vor sich schnell verbreitenden Viren.<br />
2 SpamAssasssin - Spam Attentäter
42 Kapitel 4. Implementierung<br />
4.4 Antispam<br />
Im Antispam-Bereich haben sich einige Open-Source-Projekte bereits einen<br />
Namen gemacht. Zum einen das dspam Projekt, dass sich auf die statistische<br />
Analyse von Spam-Mails spezialisiert hat und zum anderen das schon<br />
erwähnte SpamAssassin (Spam Attentäter) Projekt, welches die verschiedensten<br />
Methoden der Spambekämpfung zusammenführt.<br />
4.4.1 DSpam<br />
DSpam [DSPAM/SW] (wie in De-Spam) wurde hauptsächlich zum zentralen<br />
Einsatz entwickelt. Seine Entwicklung erfolgte dabei vollständig in C und behauptet<br />
dadurch auch einen geringeren Overhead als die in Perl implementierten<br />
Konkurrenten zu haben. Eine nicht nur für das DSpam Projekt interessante<br />
Entwicklung wird der dieses Jahr erscheinende Hardware-Beschleuniger<br />
für die von DSpam verwendeten statistischen Algorithmen sein. Sensory Networks<br />
hat sich zu einer Partnerschaft in [SD04] bereit erklärt, um die CPUintensiven<br />
Softwarealgorithmen in ihrer Hardware abzubilden.<br />
Trotz eines reichen Funktionsumfanges von DSPAM (wie zum Beispiel eine<br />
vollständige User-Quarantäne, statistische Erfassung, Report-Generierung)<br />
wurde DSpam nicht für die Umsetzung dieser Arbeit verwendet. DSPAM<br />
nutzt ausschließlich statistische Methoden zur Erkennung von Spam und lässt<br />
daher keinen Spielraum, das System an eine schwache Hardware anzupassen.<br />
Wie der Schritt von Sensory Networks zeigt, scheinen diese Algorithmen bereits<br />
zu einem Maximum in Software optimiert zu sein.<br />
Es bleibt abzuwarten, ob die Hardwarebeschleuniger auch von weiteren<br />
Open-Source-Produkten genutzt werden kann. In Anbetracht der Bayes Performanceanforderung<br />
wäre dies wünschenswert.<br />
4.4.2 SpamAssassin<br />
SpamAssassin [SPAMASSASSIN/SW] ist mittlerweile in der Version 3.0.2 erschienen<br />
und ist neuerdings unter der Schirmherrschaft der Apache Software<br />
Foundation.<br />
Historisch betrachtet stammt SpamAssassin aus der Regular-Expression-<br />
Methode. Es fing mit einem Perl-Script an, welches die einzelnen Teile einer<br />
Mail aufschlüsselte und entsprechende Regexp-Bedingungen für jeden Teil anwendete.<br />
Mittlerweile ist SpamAssassin eine Sammlung verschiedenster Methoden<br />
der Textanalyse geworden, was es vermutlich auch der “einfachen”<br />
Perl-Implementierung zu verdanken hat.<br />
Zur Kategorisierung von Mail bedient sich SpamAssassin einem Scoringsystem,<br />
welches bei jedem Release neu abgestimmt wird. Diese heuristische Suche<br />
wird durch einen Naiv Bayes Filter und verschiedene Netzwerktests unterstützt.
4.4. Antispam 43<br />
Die einzelnen Funktionsmerkmale sind nach http://wiki.<br />
apache.org/spamassassin/SpamAssassin (02.2005) sind:<br />
• Header Tests<br />
• Mailinhalt Phrasen Tests<br />
• Bayes Filter<br />
• Automatisches White/Blacklisting von Adressen<br />
• Manuelles White/Blacklisting von Adressen.<br />
• Verteilte Prüfsummen Datenbanken (DCC, Pyzor, Razor2)<br />
• RBL (Realtime Blackhole Lists)<br />
• DNS Blocklists (SURBL)<br />
• Zeichensatz und “locale” Tests<br />
Jeder dieser Tests kann dabei schnell eine Falsch-Positiv auslösen. Die Kombination<br />
dieser Testmethoden senkt dagegen sowohl die Falsch-Positiv als auch<br />
die Falsch-Negativ kategorisierten Mails.<br />
Das Bewertungssystem von SpamAssassin kann hierbei userspezifisch angepasst<br />
werden. Entgegen manch selbstgestrickten procmail Varianten<br />
[SPAMBLOCK/SW] besitzt SpamAssassin auch Tests, die eine negative<br />
Punktzahl besitzen. Diese Tests dienen der Erkennung von Ham, trotz diverser<br />
Spam ähnlicher Merkmale. Aus diesem Grund kann eine Punktzahl ins<br />
Negative gehen, die Mail gilt dann als sicherer Ham.<br />
Das automatische Training des SpamAssassin setzt bei diesen niedrig bewerteten<br />
Mails an, um die Bayes-Datenbank mit Ham-Mails zu trainieren. Bei einer<br />
hohen SpamAssassin Punktzahl werden die Mails als Spam trainiert. Die<br />
Schwellwerte sind hierbei konfigurierbar.<br />
4.4.2.1 Integration<br />
Die Anbindung des SpamAssassin geschieht mittels des in Abschnitt 4.2.2 beschriebenen<br />
Interfaces von exiscan. Hierfür wird der SpamAssassin als Daemon<br />
gestartet. Dabei nutzt SpamAssassin das preforking, um bereits durch<br />
den Perl-Interpreter übersetzt zu werden. Da es bereits im Speicher residiert,<br />
wird der Overhead eines erneuten interpretierens bei einkommenden<br />
Mails vermieden. Seit der Version 3.0 besitzt SpamAssassin die Fähigkeit die<br />
Konfiguration, White/Blacklist und Bayes-Daten über eine SQL-Datenbank<br />
abzufragen. Beim Profiling ergab sich aber, dass die Bayes-Daten über die<br />
SQL-Schnittstelle den Maildurchfluss um 30% reduzierten. Im Falle eines<br />
Mailserver-Clustering sollte daher darauf geachtet werden, dass der zentrale<br />
SQL-Server nicht mit Ressourcenmangel kämpfen muss. Zu weiteren Ergebnissen<br />
des Profiling wird in Kapitel 6 genauer eingegangen.
44 Kapitel 4. Implementierung<br />
Sobald SpamAssassin über den Unix-Socket 3 eine Mail erhält, arbeitet dieser<br />
alle aktivierten Tests ab. Hierbei erhält der SpamAssassin vom exim MTA Daemon<br />
noch die Information, für welchen User die Mail zu überprüfen ist. Durch<br />
eine Abspeicherung der Konfiguration in MySQL kann der SpamAssassin eine<br />
userspezifische Konfiguration laden. Wenn keine userspezifische Konfiguration<br />
vorhanden ist, wird die Standard-Konfiguration verwendet.<br />
4.4.2.2 Konfiguration<br />
SpamAssassin bietet eine Fülle von Anpassungsmöglichkeiten. Seit der Version<br />
3.0 besteht die Möglichkeit, als Datenspeicher für die einzelnen Datenbanken<br />
(Bayes/Whitelist) und für die Konfiguration auch auf eine SQL-<br />
Datenbank zuzugreifen. Dies bietet Mail-Administratoren die Möglichkeit,<br />
mit einer zentralen Datenhaltung mehrere SpamAssassin im Cluster-Betrieb<br />
einzusetzen. Wie sich beim Profiling in Kapitel ?? ergeben hat, empfiehlt es<br />
sich bei vielen parallel eintreffenden Mails an einem SpamAssassin die Bayes-<br />
Datenbank in SQL zu halten. Das File-Locking einer Berkley-DB4 kann zu weiteren<br />
Verzögerungen führen, die bei einer SQL-Datenbank nicht auftreten.<br />
Damit die Bayes-Algorithmen im SpamAssassin genutzt werden können,<br />
muss dieser mit einer entsprechend hohen Anzahl an Mails trainiert werden.<br />
Das derzeitige Minimum an Mails beträgt dabei jeweils 200 Mails für Spam<br />
und Ham. Erst ab dieser Anzahl werden die Bayes-Tests im SpamAssassin<br />
aktiviert. Um dies zu beschleunigen, ist es ratsam, die Datenbank mit bereits<br />
empfangenem Spam/Ham Mails zu trainieren. Dieses kann mit dem in Kapitel<br />
5.3 beschriebenem Verfahren bewerkstelligt werden.<br />
3 Defaultmäßig TCP-Socket, doch der Unix Socket hat für eine bessere Leistung gesorgt
Kapitel 5<br />
Erweiterungen<br />
In diesem Kapitel wird auf die Erweiterungen eingegangen, die nicht zu einer<br />
üblichen SpamAssassin Installation gehören. Diese Erweiterungen sollen die<br />
Installation als Endprodukt vervollständigen.<br />
5.1 Statistische Auswertung<br />
Als Basis der statistischen Auswertung dient das RRD-Tool von Tobi Oetiker.<br />
Hierfür wird im exim zu jeder Mail ein Logeintrag generiert, den ein Perl<br />
Script für die Round-Robin Datenbank zusammenfasst. Der Vorteil dieser Datenhaltung<br />
besteht in der Konstanz der Datenmenge.<br />
Die flexible Möglichkeit der Datenrepräsentation lässt somit eine kundenorientierte<br />
Grafikgenerierung zu.<br />
Derzeitig werden folgende Daten statistisch erfasst:<br />
• Mails Incoming – Anzahl der akzeptierten Mails.<br />
• Greylisted Reciptient – Anzahl der greylisted Empfänger.<br />
• Spam Mails – Anzahl der erkannten Spam Mails.<br />
• Virus Mails – Anzahl der erkannten Viren / Trojaner.<br />
• RBL denied – Anzahl der durch RBL blockierten Mails.<br />
• SpamAssassin Scores – Durchschnittswert der Spam/Ham/Gesamt<br />
Mails<br />
• SpamAssassin time per mail – Zeit pro gescannte Mail<br />
• Load Average – Anzahl der in der Run Queue befindlichen Prozesse.<br />
• Speicherverbrauch – Prozentuale Auslastung des Hauptspeichers.
46 Kapitel 5. Erweiterungen<br />
• Disk usage – Prozentuale Auslastung des Festplattenverbrauchs.<br />
Abbildung 5.1: RRD Grafik Exim Statistk<br />
Die exim-abhängigen Daten werden, wie in Abbildung 5.1 zur Visualisierung<br />
des Erfolgs zu einer Grafik zusammengefasst. Damit kann der Benutzer den<br />
prozentualen Anteil an Spam-Mails erkennen. Die Daten werden im 5 Minuten<br />
Intervall erfasst und zur Round-Robin Datenbank hinzugefügt.<br />
5.2 Quarantäne<br />
Die Quarantäne wurde durch eine Kombination des Open-Source-Webmailers<br />
SquirrelMail [SQUIRRELMAIL/SW] und einer Maildir-Mailbox gelöst.<br />
Zur Speicherung der Mails werden die Maildir-Verzeichnisse in einer<br />
User/Domain-Verzeichnis-Struktur aufbewahrt. Dadurch können mit den Unix<br />
üblichen Tools (wie find, grep, awk, sed) die Statistik- und Digest-Reports<br />
generiert werden.<br />
Innerhalb der exim-Konfiguration liefert ein spezieller Transport Mails, die<br />
für die Quarantäne bestimmt sind, in ein Maildir-Verzeichnis aus. Dabei wird<br />
für jeden user@domain ein Verzeichnis angelegt, worauf der IMAP-Server zugreifen<br />
kann. Durch dieses Maildir Verfahren können Mails anhand ihres File-<br />
Datums aussortiert (bzw. auf Userwunsch gelöscht) werden.<br />
Als User-Interface für die Quarantäne wurde der PHP Webmailer SquirrelMail<br />
entsprechend verändert. Hierfür musste die User-Authentifizierung angepasst<br />
werden und SquirrelMail um eine ’Release’-Funktion erweitert werden.<br />
SquirrelMail benötigt einen IMAP Server zur Datenhaltung und Authentifizierung.<br />
Das Webinterface wurde auf die nötigen Funktionen minimiert, damit
5.2. Quarantäne 47<br />
dieses nicht als voll funktionstüchtiger Webmailer genutzt wird. Alle Funktionen<br />
die mit dem Adressbuch oder dem Versenden von Mails zusammen<br />
hängen, wurden aus dem Source Code entfernt, damit der Benutzer dieses<br />
Webinterface nur für die Quarantäne benutzt. Es soll nicht der Eindruck entstehen,<br />
dass das System als Webmailer zu gebrauchen ist.<br />
5.2.1 User-Authentifizierung<br />
Zur User-Authentifizierung dient die Mail-Adresse des Benutzers. Um Zugriff<br />
auf die Quarantäne zu erhalten, muss der Benutzer seine Mailadresse angeben,<br />
woraufhin er eine Mail zugeschickt bekommt. Diese enthält eine URL mit<br />
einem zufälligen String der nach 30 Minuten verfällt. Diese URL wird dann<br />
verwertet und ein entsprechender Eintrag in eine SQL-Tabelle gesetzt, der die<br />
Mail-Adresse und den Pfad zur Quarantäne-Mailbox enthält. Dank Courier-<br />
IMAP und dessen Möglichkeit, die User-Authentifizierung über SQL zu gestalten,<br />
kann der Benutzer so an die Mails in seiner Quarantäne zugreifen,<br />
ohne dass ein Benutzer Account angelegt werden muss.<br />
5.2.2 Mail-Anzeige<br />
Damit der Benutzer Ham-Mails in der Quarantäne leichter erkennen kann,<br />
wurde SquirrelMail noch um die Auswertung des X-Spam-Score-Headers<br />
erweitert. Hierbei kann der Benutzer nun auch Mails anhand des Scorings in<br />
der Index-Ansicht sortieren und entsprechend aus der Quarantäne entlassen.<br />
Die Mail kann aus der Quarantäne gelöscht werden und wird vorher SpamAssassin<br />
zum trainieren der Bayes-Datenbank übergeben.<br />
Abbildung 5.2: Userinterface Quarantäne<br />
Innerhalb des SquirrelMail-Userinterfaces kann, dank der Plugin-Technologie,<br />
noch eine Erweiterung zur SpamAssassin User-Konfiguration eingebunden<br />
werden. Diese Möglichkeit wurde auch rudimentär auf der Beispielimplementation<br />
verwirklicht.
48 Kapitel 5. Erweiterungen<br />
5.3 Spam / Ham Training<br />
Damit am Client Rechner keine Plugins installiert werden müssen, geschieht<br />
das Trainieren der Bayes Datenbank komplett via Mail. Hierfür muss der Benutzer<br />
Mails, die fälschlicherweise erkannt wurden, als Anhang an eine vorher<br />
definierte Mail-Adresse weiterleiten.<br />
Auf der Serverseite nimmt sich ein Perl Script der Mails an und verarbeitet alle<br />
als MIME “Content-Type=message/rfc822” angegebenen Anhänge. Damit<br />
können auch mehrere Mails zum Bayes Training angehängt werden. Hierbei<br />
wird noch der ’nice’ Level angepasst, um die Priorisierung der Ressourcen für<br />
eingehende Mails zu berücksichtigen.<br />
Damit es zu keinem von extern manipulierbaren Training kommt, wird im<br />
exim definiert welche Mail-Server Mails für das Training senden dürfen.<br />
Zusätzlich wird jede Spam-Mail, die aus der Quarantäne freigegeben wird,<br />
als Ham trainiert. Damit sollte es möglich sein, die Bayes Datenbank entsprechend<br />
aktuell zu halten. Das verwendete Perl Script zum trainieren ist im<br />
Anhang A.2 zu finden. Es wurde für das Konzept angepasst damit nur Mail-<br />
Adressen, für die das System zuständig ist, akzeptiert werden.<br />
5.4 Regel Aktualisierung<br />
Da sich die Spammer den Regeln des SpamAssassins schnell anpassen, muss<br />
man dafür sorgen, dass man die Regeln entsprechend häufig aktualisiert. Da<br />
der Versionszyklus von SpamAssassin zu lange dauert, haben sich benutzerspezifische<br />
Regeln etabliert. Hierfür besteht die Möglichkeit mit dem “Rules<br />
de jour” (Regeln des Tages) Perl Scripts täglich eine vordefinierte Basis an<br />
Regeln zu aktualisieren. Die meisten Regeln kommen aus dem “SpamAssassin<br />
Rules Emporium” (SARE) [SARE/SW]. SARE wird aktiv durch freiwillige<br />
Helfer geführt, die sich zur Aufgabe gemacht haben, den sich schnell anpassenden<br />
Spam zu bekämpfen.<br />
Das “RulesDuJour” Bash Script wird täglich per cron aufgerufen. Nach einer<br />
erfolgreichen Aktualisierung wird der SpamAssassin Daemon neu gestartet.<br />
Um eventuelle Fehler in den Regelsätzen zu erkennen, wird zuerst ein Probedurchlauf<br />
mittels spammassassin --lint angestoßen.<br />
Derzeitig werden folgende Regeln aktualisiert:<br />
• ANTIDRUG erkennt Pillen/Medizin Spam.<br />
• BOGUSVIRUS erkennt gefälschte Bounce / Non-delivery Report Virus<br />
Mails. Entlastet ebenfalls durch das Erkennen von Antivirus-Warnungen<br />
diverser Mail-Gateways.<br />
• EVILNUMBERS erkennt bekannte Spammeranschriften und Telefonnummern
5.4. Regel Aktualisierung 49<br />
• RANDOMVAL erkennt Fehler der Spam-Software. So vergessen einige<br />
Spammer, die Platzhalter durch Daten zu ersetzen.<br />
• SARE_ADULT erkennt nicht jugendfreien Mailinhalt.<br />
• SARE_FRAUD dient zur Erkennung von SCAM und ähnlichen Betrugs-<br />
Mails.<br />
• SARE_BML BML steht für business, marketing and educational.<br />
• SARE_SPOOF erkennt leichtsinnige Fälschungen in Spam Mails. Zum<br />
Beispiel wenn die Message-ID einer Mail vorgibt, von einem Provider<br />
zu sein, obwohl die Mail den Provider nie durchlaufen hat.<br />
• SARE_BAYES_POISON_NXM erkennt den Versuch mittels zufälligen<br />
Buchstaben Kombinationen den Bayes Algorithmus zu täuschen.<br />
• SARE_OEM erkennt OEM-Software Anbieter.<br />
• SARE_RANDOM dient ebenfalls wie RANDOMVAL zur Erkennung von<br />
ungenutzten Platzhaltern.<br />
• SARE_SPECIFIC erkennt Spam von sehr bekannten Spammer-<br />
Organisationen.<br />
Wie bei den RBL gilt, dass der Administrator darauf achten sollte, ob diese<br />
Regeln weiterhin aktiv gepflegt werden. Es gibt hier noch keine Möglichkeit,<br />
dafür zu sorgen, dass keine extrem abweichenden Scores eingebunden werden.<br />
Ein mögliches Szenario wäre, dass ein Entwickler eine Regel einfügt. die<br />
jegliche Mail mit 10000 Punkten bewertet und somit gefiltert wird. Um diese<br />
mögliche Attacke abzuwehren müßte im RulesDuJour Script eine Überprüfung<br />
hinzugefügt werden, die nur einen definierbaren Wertebereich zulässt.
Kapitel 6<br />
Tests<br />
Das Konzept wurde auf einem Testsystem realisiert. Als Server diente ein 2HE<br />
Server im Rechenzentrum der noris network AG in Nürnberg. Als Hardwareausstattung<br />
wurde absichtlich ein relativ gering dimensioniertes System zusammengestellt.<br />
Damit sollte gewährleistet werden, dass die Testinstallation<br />
auch für kleinere Unternehmen nutzbar ist.<br />
Die Hardware Komponenten sind dabei im einzelnen:<br />
CPU:<br />
RAM:<br />
DISK:<br />
AMD Athlon 1333 MHz<br />
2 * 512MB SDRAM<br />
2 * WDC WD800JB-00FMA0/13.03G13 (80GB UDMA100 RAID1)<br />
Das System wurde während der Tests nicht ausschließlich als Mail-Server genutzt.<br />
Dadurch sind die Ergebnisse der einzelnen Tests nicht als Maximalwerte<br />
anzusehen. Damit nachgewiesen wird, dass dieses System in der Lage ist, ein<br />
größeres Mailaufkommen eines Unternehmens zu verarbeiten, wurden zwei<br />
Lasttests durchgeführt.<br />
6.1 Lasttest<br />
Bei den Lasttest hat sich ergeben, dass die vorhandenen 1GB Hauptspeicher<br />
nicht ausreichten. Das resultierende Swaping führte zu einem Flaschenhals<br />
bei der Verarbeitung der Mails im SpamAssassin.<br />
6.1.1 postal<br />
Postal behauptet von sich, eine Software zum Performancetest von SMTP Servern<br />
zu sein. Hierfür sendet es so schnell wie möglich zufällige Zeichenfolgen<br />
als Mails zum Zielsystem und protokolliert dabei die Anzahl der akzeptierten<br />
Mails pro Minute.<br />
Dabei hat sich ergeben, dass der Durchsatz abhängig von den im SpamAssassin<br />
aktivierten Methoden ist.
52 Kapitel 6. Tests<br />
Spracherkennung / Bayes pro Min pro Tag pro Woche<br />
An / An 59 84.960 594.720<br />
Aus / An 66,5 95.760 670.320<br />
Aus / Aus 100,6 144.960 1.014.720<br />
Tabelle 6.1: Maildurchsatz gemessen mit postal<br />
Die Daten aus der Tabelle 6.1 wurden anhand einer 30 minütigen Laufzeit<br />
hochgerechnet. Sie zeigen, dass das Testsystem zwischen einer halben Million<br />
und einer Million Mails pro Woche verarbeiten kann. Dies betrifft nur<br />
Mails die über die RBL-, Greylist- und SMTP-Syntax-Hürde gekommen sind.<br />
Bei den Langzeitmessungen hat sich gezeigt, dass diese Hürden bereits im<br />
Durchschnitt 85% der Zustellversuche blockieren.<br />
6.1.2 Mail submitting<br />
Die zufällige Zeichenfolge bei postal eignet sich nur bedingt zum testen einer<br />
Spamerkennung. Um einen praxisnahen Durchsatzwert zu erhalten, sollten<br />
die einzelnen Mails aus einem vorher sortierten Datenbestand stammen. Die<br />
einzelnen zufälligen Zeichenfolgen von postal sorgen sowohl beim Bayes als<br />
auch bei der Erkennung der verwendeten Sprache für Verwirrung und haben<br />
damit eine unnötige Verzögerung zur Folge, die bei regulären Mails nicht auftritt.<br />
Als Testfälle wurden 3000 Mails aus jeweils einer Ham- und Spam-Sammlung<br />
verwendet. Diese Testfälle wurden über zwei unterschiedlichen Providern, mit<br />
jeweils zehn simultanen Verbindungen auf dem Testsystem ausgeliefert.<br />
Abbildung 6.1: Mail Durchsatz durch Mail submitting.
6.2. Langzeittest 53<br />
Die in Abbildung 6.1 gemessenen Werte zeigen, dass das System in der Lage<br />
ist, bis zu 492 Mails in einem 5-Minuten-Intervall zu verarbeiten. Dies würde<br />
einem Maildurchsatz von circa 142.000 Mails pro Tag beziehungsweise 992.000<br />
Mails pro Woche entsprechen.<br />
Selbst bei einer Betrachtung des Durchschnittswerts ist das System in der Lage,<br />
276 Mails in fünf Minuten zu verarbeiten bzw eine halbe Million Mails<br />
pro Woche zu empfangen. Wie beim Lasttest mit postal gemessen, hat es sich<br />
gezeigt, dass das System für ein kleines bis mittelständisches Unternehmen<br />
vollkommen ausreichend ausgestattet ist..<br />
Bewertung:<br />
Die Höhe des möglichen Durchsatzes hängt stark von der Art und der Größe<br />
der Mail ab. Die Komplexität der einzelnen SpamAssassin Regeln lassen viele<br />
mögliche Szenarien zu, die jeweils unterschiedliche Ergebnisse liefern. Bei<br />
eingeschaltetem DNS- und RBL-basiertem Greylisting ist nicht zu erwarten,<br />
dass die Zielgruppe eine Million Mails pro Woche verarbeiten muss. Bei der<br />
Ausstattung sollte der Speicher nicht vernachlässigt werden. So war das Testsystem<br />
zwar großzügig für anschliessenden Langzeittest dimensioniert, doch<br />
könnte der Durchsatz bei einem Stresstest durch einen größeren Speicher erhöht<br />
werden, wenn der Hauptspeicher über 1GB hinaus ausgebaut würde. Die<br />
Gründe hierfür ist der immense Speicherverbrauch des SpamAssassins.<br />
6.2 Langzeittest<br />
Dank der Unterstützung von Christian Küster, war es möglich das implementierte<br />
Konzept über einen längeren Zeitraum zu testen. Hierfür wurde eine<br />
ehemalige Provider-Domain, die seit 1993 in Benutzung war und 1150 Domains<br />
eines früheren Webspace Providers verwendet. Dafür zeigte der MX-<br />
Eintrag der Domains auf das Testsystem. Da diese Domains schon seit geraumer<br />
Zeit nicht mehr in Benutzung sind, konnten alle empfangenden Mails am<br />
Testsystem verworfen werden. Mit der Zeit haben sich diese Domains in den<br />
Adressbeständen der Spammer eingebrannt. Dies ist mit ein Grund dafür weswegen<br />
auf den Domains keine Falsch-Positive zu erwarten ist.<br />
Zum Nachweis, dass das System in der Lage ist, größere Mailaufkommen zu<br />
verarbeiten, war das Speichern der empfangenen Mails auch nicht notwendig.<br />
Es sollte nur der Erfolg beziehungsweise Misserfolg protokolliert werden, wie<br />
viele Mails mit welchem Spamanteil empfangen wurden. In der Abbildung 6.2<br />
ist in der Kalenderwoche 7 eine starke Veränderung der durch RBL Blockierten<br />
Empfänger zu sehen. Zu diesem Zeitpunkt wurde das Testsystem umgestellt<br />
um den Großteil der RBL-Provider zum Greylisting zu verwenden.<br />
Durch die längere Nichtbenutzung der Domains konnte davon ausgegangen<br />
werden, dass keine legitime Mail mehr am System ankommen wird.
54 Kapitel 6. Tests<br />
Abbildung 6.2: Statistik des Langzeittests.<br />
Das System hat während der drei monatigen Testphase im Durchschnitt 4656<br />
Zustellungsversuche pro Tag verarbeitet. Die Hauptlast (insgesamt 85%) der<br />
Zustellungsversuche wurde durch RBL und DNS/RBL-basiertes Greylisting<br />
abgehalten.<br />
6.3 Profiling<br />
Um den Performanceverbrauch der einzelnen SpamAssassin-Tests besser analysieren<br />
zu können, wurde der SpamAssassin einem sogenannten Profiling<br />
unterzogen. Dabei wurde darauf geachtet, welche Funktionen im SpamAssassin<br />
den größten CPU-Verbrauch haben und ob einzelne Konfigurationsmöglichkeiten<br />
sich positiv auf die Gesamtperformance auswirken.<br />
6.3.1 DProf<br />
DProf ist ein Perl-Code-Profiler welcher die Ausführungszeit und die Anzahl<br />
der Aufrufe einer Perl-Funktion misst. Um dies auszuführen, genügt es das<br />
Perl-Script mit der Option -d:DProf aufzurufen. Nach der Ausführung legt<br />
DProf die Datei tmon.out an. Mittels des dprofpp-Befehls wird die Datei verarbeitet.<br />
Dabei hat sich SQL als Datenhaltung für die Bayes-Tokens als nicht sinnvoll in<br />
der vorliegenden Konfiguration erwiesen. Im Vergleich zur Berkley DB4r- Datenhaltung<br />
haben die zusätzlichen SQL-Aufrufe die gesamte Ausführungszeit<br />
um 30% erhöht. Es hatte sich ebenfalls gezeigt, dass durch die Erkennung der<br />
verwendete Sprache sehr viel CPU-Zeit beim Verarbeiten einer Mail verwendet<br />
wird. Aufgrund der Komplexität der Sprachenerkennung besteht hier nur<br />
die Option, diese komplett in der Konfiguration abzuschalten.
6.4. Spam / Ham Erkennung 55<br />
Sollte ein Mailer an seine Perfomancegrenze stoßen, empfiehlt es sich daher<br />
die Sprachenerkennung mittels ok_locales all in der Konfiguration abzuschalten.<br />
Ebenso kann man kurzfristig auf Bayes verzichten, muss dann aber<br />
in beiden Fällen mit einer verringerten Spam/Ham Erkennung rechnen.<br />
6.4 Spam / Ham Erkennung<br />
Bei dem Erfolg der Spam / Ham Erkennung sind viele Variablen zu betrachten.<br />
So hilft eine von Hand trainierte Bayes Datenbank bei der Entscheidung<br />
ob es sich bei der betrachteten Mail um Spam oder Ham handelt. Ebenso wird<br />
durch das Erraten der verwendeten Sprache viele Regeln an der Kategorisierung<br />
mit entschieden.<br />
Wie erfolgreich das System Spam bekämpft, hängt von der Anzahl und der<br />
Qualität der gelernten Mails und dem zu erwartendem Ham-Inhalt ab. Nicht<br />
ohne Grund versuchen die Direktmarketing Vertreiber mittels ihrer Positivliste,<br />
ihre als Spam erkannten Newsletter durch die Spamfilter zu schleusen.<br />
Als Basis für diesen Test gilt eine Spam- und Ham- Mailbox die sich im Laufe<br />
der Jahre angesammelt hat. Aus jeder Mailox wurden jeweils 2000 Mails<br />
verwendet und über einen weiteren Rechner via SMTP eingeliefert.<br />
Art Gesamt Falsch erkannt % Richtig erkannt %<br />
Spam 2000 48 2.35% 1953 97.65%<br />
Ham 2000 2 0.1% 1998 99.9%<br />
Tabelle 6.2: Spam/Ham Erkennung<br />
Da es keine standardisierten Testläufe zur Spam-Erkennung gibt, empfiehlt es<br />
sich, solchen Statistiken nicht allzu viel Gewicht bei der Entscheidung zu geben.<br />
Je nach verwendeten Mails können die Werte in beide Richtungen stark<br />
abweichen. So wäre es kein Problem gewesen, für diesen Test eine Spam-<br />
Mailbox zu verwenden, die nur Mails mit einem SpamAssassin Score von<br />
mehr als 40 Punkten enthält. Diese Mails würden zu 100% als Spam erkannt<br />
werden.<br />
Trotzdem hat sich im Verlauf der Arbeit gezeigt, dass das Testsystem zuverlässig<br />
Spam-Mails richtig klassifiziert und Falsch-Positive nur durch Mailinglisten,<br />
die sich mit der Spam Thematik auseinander setzen oder durch abonnierte<br />
Newsletter entstehen. In beiden Fällen kann SpamAssassin mittels des manuellen<br />
Whitelistens von Adressen dazu veranlasst werden, diese Mails nicht<br />
mehr als Spam zu kategorisieren.
Kapitel 7<br />
Resümee<br />
In dieser Diplomarbeit wurde ein Konzept eines Antispam/Antivirus Mailgateways<br />
erstellt und in Form einer Testinstallation implementiert. Im konzeptionellen<br />
Teil dieser Arbeit wurden notwendige Komponenten eines solchen<br />
Gateways identifiziert. Diese umfassen RBL, Mail-Transfer-Agents, Antiviren-<br />
Scanner und die Textklassifizierer. Weiterhin wurden bereits vorhandene Anwendungen<br />
evaluiert, welche die Funktionalitäten der Komponenten abbilden.<br />
Als ideale Kombination wurde exim als Mail Transfer Agent, SpamAssasin<br />
als Antispam- und ClamAV als Antivirenkomponente ermittelt. Im<br />
Zusammenspiel können diese Anwendungen nun als Antispam/Antivirus-<br />
Mailgateway eingesetzt werden. Eine durchdachte Kombination der Komponenten<br />
und Erkennungsmethoden stellt sicher, dass das Gateway performant<br />
funktioniert. Durch die konsequente Verwendung von Open-Source-Software<br />
fallen außerdem keine Lizenzkosten an.<br />
Im Konzept wurden ebenfalls rechtliche Rahmenbedingungen berücksichtigt,<br />
die beim Einsatz eines Antispam/Antivirus-Mailgateways zu beachten sind.<br />
Durch den Einsatz einer userabhängige Quarantäne ist beispielsweise die Einhaltung<br />
des Telekommunikationsgeheimnis gewahrt. Zudem kann der Benutzer<br />
Filtermethoden für seine E-Mail Adresse aktivieren oder deaktivieren<br />
und daher selber über den Einsatz einer Antispam-Filterung entscheiden. Die<br />
Bayes Analyse ist durch den Einsatz von SpamAssasin ebenfalls benutzerspezifisch<br />
realisiert, so dass jeder Benutzer seine eigene Datenbank zum Trainieren<br />
nutzen kann.<br />
Im praktischen Teil dieser Diplomarbeit wurde das erarbeitete Konzept in<br />
Form einer Testinstallation implementiert. Dabei hat sich gezeigt, dass die Installation<br />
und Konfiguration im Vergleich zu vielfältigen Individuallösungen<br />
erheblich vereinfacht wurde. Somit kann die entwickelte Implementierung ohne<br />
großen Aufwand in eine bestehende Infrastruktur eingebunden werden.<br />
Die in der Konzeptphase entwickelten Performanceoptimierungen bestätigten<br />
sich in Langzeit- und Lasttests, selbst bei der Verwendung verhältnismäßig<br />
schwacher Hardware. Das gewählte Konzept ist auch für den hochverfügbaren<br />
Einsatz ausgelegt und kann ebenfalls mit geringem Aufwand daran
58 Kapitel 7. Resümee<br />
angepasst werden. Durch die Verwendung von exim kann jede einzelne Komponente<br />
der Implementierung elegant ausgelagert oder als Cluster betrieben<br />
werden.<br />
Die Beispielimplementation soll zukünftig in das Produktportfolio der Thinking<br />
Objects GmbH als “Managed Service”aufgenommen werden, um Unternehmen<br />
ohne eigene IT-Abteilung anbieten zu können. Dabei wird die Implementierung<br />
als Basis genutzt und kundenorientiert angepasst.<br />
Am 31. Januar 2005 [FI05] entschied sich Firetrust ihr kommerzielles<br />
Antispam-Projekt MailWasher unter einer Open-Source Lizenz zu stellen. Dies<br />
könnte zur Folge haben das ihr verwendetes Webinterface als eigenständiges<br />
Projekt in das erarbeitete Konzept integriert werden kann. Die Entwicklung<br />
des Hardware Beschleunigers für den Bayes-Algorithmus von Sensory Networks<br />
[SD04] sollte aus den gleichem Grund weiter verfolgt werden.
Literaturverzeichnis<br />
[CL04] CORMACK, G.; LYNAM, T.: A Study of Supervised Spam Detection applied<br />
to Eight Months of Personal E-Mail<br />
http://plg.uwaterloo.ca/~gvcormac/spamcormack.html (03.2005) Cormack,<br />
Lynam 2004<br />
[DC82] CROCKER, D.H.: RFC822 - Standard for ARPA Internet Text Messages<br />
The Internet Society, 1982<br />
[EH04] HOFFMANN, E.: Power networking with Qmail&Co<br />
http://www.fehcom.de/qmail/qmailbook.html (03.2005) fehcomm, 2004<br />
[EH03] HARRIS, E.: The Next Step in the Spam Control War: Greylisting<br />
http://projects.puremagic.com/greylisting/whitepaper.html (03.2005)<br />
Evan Harris, 2003<br />
[EJ05] JOHANSON, E.: The state of homograph attacks<br />
http://www.shmoo.com/idn/homograph.txt (03.2005) Eric Johanson, 2005<br />
[FH03] HERRMANN, F.: Ein Internetdienst zur Vermeidung von unerwünschter<br />
Reklamepost<br />
Diplomarbeit aus dem Fachbereich Informatik TU-Dresden, 2003<br />
[GL04] LAGA, G.: E-Mail-Werbung 2004<br />
Manz Verlag, 2004<br />
[GE04] GENUA PRESSEINFORMATION SYSTEMS 2004: Premiere: GeNUA bietet<br />
Firewall mit Greylisting<br />
http://www.genua.de/news/presseinfo/presse/pi_greylisting.pdf<br />
(03.2005) Gesellschaft für Netzwerk- und UNIX-Administration mbH, 2004<br />
[HE04] Rassistischer Spam und der Mail-Wurm Sober.G<br />
http://www.heise.de/newsticker/meldung/48135 (03.2005) Heise Verlag, 2004<br />
[JK04] Ferngesteuerte Spam-Armeen, Nachgewiesen: Virenschreiber liefern Spam-<br />
Infrastruktur<br />
c’t 5/04, S. 18 – Heise Verlag, 2004<br />
[IH05] ILETT, D.;HU, J.: Zombie trick expected to send spam sky-high<br />
http://news.com.com/Zombie+trick+expected+to+send+spam+sky-high/<br />
2100-7349_3-5560664.html (03.2005) CNET News.com, 2005
62 Literaturverzeichnis<br />
[FH04] FESTA, P.; HANSEN, E.: Happy spamiversary<br />
http://news.com.com/Happy+spamiversary/2100-1024_3-5189340.html<br />
(03.2005) CNET News.com, 2004<br />
[JK93] KLENSIN, J.: RFC1425 - SMTP Service Extensions<br />
The Internet Society, 2001<br />
[JK01] KLENSIN, J.: RFC2821 - Simple Mail Transfer Protocol<br />
The Internet Society, 2001<br />
[JK04] KOECHER, J.: Zentrale Spam- und Virenfilterung<br />
DuD – Datenschutz und Datensicherheit Ausgabe 28, 2004<br />
[JP82] POSTEL, J.B.: RFC821 - Simple Mail Transfer Protocol<br />
The Internet Society, 1982<br />
[JS04] SNYDER, J.: Review: Analyzing the spam test results<br />
http://www.nwfusion.com/reviews/2004/122004spamcharts.html (03.2005)<br />
Network World, Dezember 2004<br />
[JD97] DOLL, J.: Spam Attack! - The Story of a Mail Forgery<br />
http://www.joes.com/spammed.html (03.2005) Joy Doll, 1997<br />
[FI05] FIRETRUST PRESS RELEASE: Firetrust Limited Launches Open Source Antispam<br />
Project<br />
http://firetrust.com/media/?press_id=18 (03.2005)<br />
Firetrust, 2005<br />
[ML05] MESSAGELABS INTELLIGENCE: Jahresbericht E-Mail-Sicherheit 2004<br />
http://www.messagelabs.com/binaries/annual%20report%2004_german.<br />
pdf (03.2005)<br />
MessageLabs, 2005<br />
[NJ04] NIERDMEIER, R.; JUNKER, M.: Rechtliche Pflichten im Bereich der IT-<br />
Sicherheit<br />
SurfControl, 2004<br />
[PG02] GRAHAM, P.: A Plan for Spam<br />
http://www.paulgraham.com/spam.html (03.2005) Paul Graham, 2002<br />
[PR01] RESNICK, P.: RFC2045 - Multipurpose Internet Mail Extensions (MIME)<br />
Part One<br />
The Internet Society, 2001<br />
[RE01] RESNICK, P.: RFC2822 - Internet Message Format<br />
The Internet Society, 2001<br />
[RH04] RIGOUTSOS I.; HUYNH T.: Chung-Kwei: a Pattern-discovery-based<br />
System for the Automatic Identification of Unsolicited E-mail Messages (SPAM)<br />
http://www.research.ibm.com/spam/papers/chung-kwei.pdf (03.2005) IBM<br />
Research, 2004
Literaturverzeichnis 63<br />
[DL05] LAU, D.: Forumsbeitrag zu SPAMMER RATEN VON GMX AB<br />
http://www.heise.de/newsticker/foren/go.shtml?read=1\&msg_id=<br />
7460955\&forum_id=74207 (03.2005) Dieter Lau, SW-Netmarketing, 2005<br />
[RV04] VÖLKER, R.: Mit Greylisting gegen Spam vorgehen. Momen bitte<br />
iX Ausgabe 12/2004. Heise Verlag, 2004<br />
[SD04] DSpam project and Sensory Networks team up to deliver hardware accelerated<br />
Antispam solution.<br />
http://www.sensorynetworks.com/pressreleases/DSPAM_Sensory_<br />
Networks.pdf (03.2005) iX Ausgabe 12/2004. Heise Verlag, 2004<br />
[SG05] REGIERUNGSFRANKTION: Drucksache 15/4835 - Gesetzentwurf<br />
der Fraktionen SPD und BÜNDNIS 90/DIE GRÜNEN<br />
Entwurf eines Zweiten Gesetzes zur Änderung des Teledienstegesetzes (Anti-<br />
Spam-Gesetz)<br />
Deutscher Bundestag<br />
[SJ03] JOSEFSSON, S.: RFC3548 - The Base16, Base32, and Base64 Data Encodings<br />
The Internet Society, 2003<br />
[SO04] SOPHOS PRESS RELEASE: Netsky-P führt die Jahrescharts der schlimmsten<br />
Virenausbrüche an<br />
http://www.sophos.de/pressoffice/pressrel/20041208yeartopten.html<br />
(03.2005)<br />
Sophos, 2004<br />
[SR04] SORBS FAQ: Zombie Netblock<br />
http://www.dnsbl.nl.sorbs.net/faq/zombie.shtml (03.2005)<br />
Sorbs Publishing, 2004<br />
[TB63] BAYES, T.: An Essay towards solving a Problem in the Doctrine of Chances.<br />
Thomas Bayes, 1763<br />
[TF05] FINCH, T.: Exim configuration at the University of Cambridge<br />
University of Cambridge, 2005<br />
[TH04] HARDIE, T.: MARID to close<br />
http://article.gmane.org/gmane.ietf.mxcomp/5232 (03.2005)<br />
Ted Hardie, 2004<br />
[TN04] NIDECKI, T.: Wie Spam verschickt wird<br />
Hakin9 – Ausgabe 2/2004<br />
[TN04] TALECKI, M.; NIDECKI, T.: Serverseitige Spamabwehr<br />
Hakin9 – Ausgabe 2/2004<br />
[TU04] NUNNINGER, T.: E-Mail-Versand und Spamerkennung<br />
Nunninger, 2004
64 Literaturverzeichnis<br />
[PH04] HAZEL, P.: Specification of the exim mail transfer agent<br />
University of Cambridge, 2004<br />
[WS02] WEBER-STEINHAUS, U.: Eine Entwurmungskur und ihre rechtlichen Folgen:<br />
http://www.uni-muenster.de/ZIV/inforum/2002-3/a13.html (03.2005)<br />
[CLAMAV/SW] CLAMAV: Clam AntiVirus Toolkit<br />
http://www.clamav.net/ (03.2005)<br />
[DSPAM/SW] DSPAM: Nuclear Elephant: DSPAM<br />
http://www.nuclearelephant.com/projects/dspam/ (03.2005)<br />
[EXIM/SW] EXIM: exim Internet Mail<br />
http://exim.org/ (03.2005)<br />
[EXISCAN/SW] exiscan - An email content scanner patch for the exim MTA<br />
http://duncanthrax.net/exiscan-acl/ (03.2005)<br />
[MAILWASHER/SW] MailWasher Server Open Source Site<br />
http://oss.firetrust.com/home/ (03.2005)<br />
[PERL/SW] PERL: The Source for Perl<br />
http://www.perl.com/ (02.2005)<br />
[PHP/SW] PHP: Hypertext Preprocessor<br />
http://www.php.net/ (02.2005)<br />
[RRDTOOL/SW] RRD-TOOL<br />
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ (02.2005)<br />
[RULESDUJOUR/SW] RULESDUJOUR<br />
http://www.exit0.us/index.php?pagename=RulesDuJour (02.2005)<br />
[SARE/SW] SARE: SpamAssassin Rules Emporiom<br />
http://www.rulesemporium.com/ (02.2005)<br />
[SPAMASSASSIN/SW] THE APACHE SPAMASSASSIN PROJECT<br />
http://spamassassin.apache.org/ (03.2005)<br />
[SPAMBLOCK/SW] BELWUE: SPAM-FILTER FÜR UNIX USER<br />
http://www.belwue.de/projekte/spamblock.html (03.2005)<br />
[SQUIRRELMAIL/SW] SQUIRRELMAIL - WEBMAIL FOR NUTS!<br />
http://www.squirrelmail.org/ (02.2005)<br />
[POSTAL/SW] POSTAL - SMTP AND POP BENCHMARK PROGRAM.<br />
http://www.coker.com.au/postal/ (02.2005)
Abkürzungen<br />
ANSI American National Standards Institute<br />
ASCII American Standard Code for Information Interchange<br />
ARPA Advanced Research Projects Agency<br />
DB Database<br />
DNS Domain Name System<br />
DoS Denial of Service (DDoS = Distributed DoS)<br />
DDoS Distributed Denial of Service (DDoS = Distributed DoS)<br />
HE Höhen Einheit<br />
HTML Hypertext Markup Language<br />
HTTP Hypertext Transfer Protocol<br />
IEEE Institute of Electrical and Electronics Engineers, Inc.<br />
IETF Internet Engineering Task Force<br />
IDN International Domain Name<br />
IMAP Internet Messaging Access Protocol<br />
IP Internet Protocol (v4 = Version 4, v6 = Version 6)<br />
IRC Internet Relay Chat<br />
IT Information Technology<br />
MTA Mail Transfer Agent<br />
MX Mail eXchanger<br />
NNTP Network News Transfer Protocol<br />
OS Operating System<br />
RBL Realtime Block (Black) List<br />
RFC Request For Comment<br />
RAID Redundant Array of Independent Disks<br />
RRD Round Robbin Database<br />
SMTP Simple Mail Transfer Protocol<br />
SQL Structured Query Language<br />
SURBL Spam URI RBL<br />
TCP Transmission Control Protocol<br />
TXT Text<br />
UCE Unsolicited Commercial E-Mail<br />
UBE Unsolicited Bulk E-Mail<br />
URL Uniform Resource Locator<br />
URI Uniform Resource Indicator
Glossar<br />
A<br />
ACL<br />
Eine Liste von Anweisungen, die über Bedingungen bestimmt, ob<br />
Zugriffe auf eine Ressource gestattet oder verweigert wird<br />
F<br />
Falsch-Negativ<br />
Fälschlicherweise als Ham erkannte Spam-Mails.<br />
Falsch-Positiv<br />
Fälschlicherweise als Spam erkannte Mails. Gegenstück hierzu:<br />
Falsch-Negative<br />
H<br />
Ham<br />
Gegenteil von Spam.<br />
L<br />
locale<br />
definiert Parameter um eine Gebietsschemaabhängige Verarbeitung<br />
in Computerprogrammen zu ermöglichen.<br />
M<br />
malware<br />
Zusammengesetzt aus “malicious” (boshaft) und Software. Beschreibt<br />
den böswilligen Charakter der Software
68 Glossar<br />
P<br />
procmail<br />
ein autonomes Mailverarbeitungs-Programm, welches auf Unix<br />
Systemen zur Sortierung von einkommenden Mails in verschiedene<br />
Mailboxdateien dient.<br />
S<br />
Spam<br />
Unerwünschte Massenmail<br />
spam lauf<br />
Zeit die ein Spammer benötigt um seine Spam Mails loszuwerden<br />
U<br />
URI<br />
Uniform Resource Indicator - Standardisierte Angabe einer Ressource<br />
wie zum Beispiel einer Website.
Anhang A<br />
Konfiguration<br />
A.1 exim<br />
1 ######################################################################<br />
2 # Runtime configuration file for Exim #<br />
3 ######################################################################<br />
4<br />
5<br />
6 ######################################################################<br />
7 # MACRO DEFINTIONS #<br />
8 ######################################################################<br />
9<br />
10 USERENTRY = ${lookup {$acl_m1} cdb*@ {/usr/local/etc/exim/pusers/pusers.cdb}}<br />
11 #USERENTRY = ${lookup {$local_part@$domain} cdb*@ {/usr/local/etc/exim/pusers.cdb}}<br />
12 USERCALLOUT = ${extract {callout} {USERENTRY}}<br />
13 USERSENDERVERIFY = ${extract {senderverify} {USERENTRY}}<br />
14 USERVIRUS = ${extract {virus} {USERENTRY}}<br />
15 USERRBL = ${extract {rbl} {USERENTRY}}<br />
16 USERSPAM = ${extract {spam} {USERENTRY}}<br />
17 USERREJECT = ${extract {spamreject} {USERENTRY}}<br />
18 USERSCORE = ${extract {spamrejectscore} {USERENTRY}}<br />
19 USERTRAP = ${extract {trap} {USERENTRY}}<br />
20 USERSA = ${expand:${extract {sauser} {USERENTRY}}}<br />
21 USERBLGREY = ${extract {dialupgreylist} {USERENTRY}}<br />
22<br />
23<br />
24<br />
25 ######################################################################<br />
26 # MAIN CONFIGURATION SETTINGS #<br />
27 ######################################################################<br />
28<br />
29 # Specify your host’s canonical name here. This should normally be the fully<br />
30 # qualified "official" name of your host. If this option is not set, the<br />
31 # uname() function is called to obtain the name. In many cases this does<br />
32 # the right thing and you need not set anything explicitly.<br />
33<br />
34 primary_hostname = netclue.de<br />
35<br />
36<br />
37 # The next three settings create two lists of domains and one list of hosts.<br />
38 # These lists are referred to later in this configuration using the syntax<br />
39 # +local_domains, +relay_to_domains, and +relay_from_hosts, respectively. They<br />
40 # are all colon-separated lists:<br />
41<br />
42 domainlist local_domains = dsearch;/usr/local/etc/exim/domains/ : @
70 Anhang A. Konfiguration<br />
43 domainlist relay_to_domains = dsearch;/usr/local/etc/exim/relays/<br />
44 hostlist relay_from_hosts = localhost : 213.95.27.136/29 : @<br />
45 addresslist traps = wildlsearch;/usr/local/etc/exim/spamtraps.wild<br />
46<br />
47 # Most straightforward access control requirements can be obtained by<br />
48 # appropriate settings of the above options. In more complicated situations, you<br />
49 # may need to modify the Access Control List (ACL) which appears later in this<br />
50 # file.<br />
51<br />
52 queue_list_requires_admin = false<br />
53<br />
54 tls_certificate = /usr/local/etc/exim/mta.cert<br />
55 tls_privatekey = /usr/local/etc/exim/mta.key<br />
56 tls_dhparam = /usr/local/etc/exim/dsa_param.pem<br />
57 tls_verify_certificates = /usr/local/etc/exim/cert<br />
58 tls_advertise_hosts = *<br />
59 tls_try_verify_hosts = *<br />
60<br />
61 # The first setting specifies your local domains, for example:<br />
62 #<br />
63 # domainlist local_domains = my.first.domain : my.second.domain<br />
64 #<br />
65 # You can use "@" to mean "the name of the local host", as in the default<br />
66 # setting above. This is the name that is specified by primary_hostname,<br />
67 # as specified above (or defaulted). If you do not want to do any local<br />
68 # deliveries, remove the "@" from the setting above. If you want to accept mail<br />
69 # addressed to your host’s literal IP address, for example, mail addressed to<br />
70 # "user@[192.168.23.44]", you can add "@[]" as an item in the local domains<br />
71 # list. You also need to uncomment "allow_domain_literals" below. This is not<br />
72 # recommended for today’s Internet.<br />
73<br />
74 # The second setting specifies domains for which your host is an incoming relay.<br />
75 # If you are not doing any relaying, you should leave the list empty. However,<br />
76 # if your host is an MX backup or gateway of some kind for some domains, you<br />
77 # must set relay_to_domains to match those domains. For example:<br />
78 #<br />
79 # domainlist relay_to_domains = *.myco.com : my.friend.org<br />
80 #<br />
81 # This will allow any host to relay through your host to those domains.<br />
82 # See the section of the manual entitled "Control of relaying" for more<br />
83 # information.<br />
84<br />
85 # The third setting specifies hosts that can use your host as an outgoing relay<br />
86 # to any other host on the Internet. Such a setting commonly refers to a<br />
87 # complete local network as well as the localhost. For example:<br />
88 #<br />
89 # hostlist relay_from_hosts = 127.0.0.1 : 192.168.0.0/16<br />
90 #<br />
91 # The "/16" is a bit mask (CIDR notation), not a number of hosts. Note that you<br />
92 # have to include 127.0.0.1 if you want to allow processes on your host to send<br />
93 # SMTP mail by using the loopback address. A number of MUAs use this method of<br />
94 # sending mail.<br />
95<br />
96<br />
97 # All three of these lists may contain many different kinds of item, including<br />
98 # wildcarded names, regular expressions, and file lookups. See the reference<br />
99 # manual for details. The lists above are used in the access control list for<br />
100 # incoming messages. The name of this ACL is defined here:<br />
101<br />
102 acl_smtp_rcpt = acl_check_rcpt<br />
103<br />
104 # You should not change that setting until you understand how ACLs work.<br />
105<br />
106 # The following ACL entry is used if you want to do content scanning with the<br />
107 # exiscan-acl patch. When you uncomment this line, you must also review the
A.1. exim 71<br />
108 # acl_check_content entry in the ACL section further below.<br />
109<br />
110 acl_smtp_data = acl_check_content<br />
111<br />
112 # This configuration variable defines the virus scanner that is used with<br />
113 # the ’malware’ ACL condition of the exiscan acl-patch. If you do not use<br />
114 # virus scanning, leave it commented. Please read doc/exiscan-acl-readme.txt<br />
115 # for a list of supported scanners.<br />
116<br />
117 # av_scanner = sophie:/var/run/sophie<br />
118 av_scanner = clamd:/var/run/clamav/clamd<br />
119<br />
120 # The following setting is only needed if you use the ’spam’ ACL condition<br />
121 # of the exiscan-acl patch. It specifies on which host and port the SpamAssassin<br />
122 # "spamd" daemon is listening. If you do not use this condition, or you use<br />
123 # the default of "127.0.0.1 783", you can omit this option.<br />
124<br />
125 spamd_address = /var/run/spamd.socket<br />
126<br />
127<br />
128 # Specify the domain you want to be added to all unqualified addresses<br />
129 # here. An unqualified address is one that does not contain an "@" character<br />
130 # followed by a domain. For example, "caesar@rome.example" is a fully qualified<br />
131 # address, but the string "caesar" (i.e. just a login name) is an unqualified<br />
132 # email address. Unqualified addresses are accepted only from local callers by<br />
133 # default. See the recipient_unqualified_hosts option if you want to permit<br />
134 # unqualified addresses from remote sources. If this option is not set, the<br />
135 # primary_hostname value is used for qualification.<br />
136<br />
137 qualify_domain = netclue.de<br />
138<br />
139<br />
140 # If you want unqualified recipient addresses to be qualified with a different<br />
141 # domain to unqualified sender addresses, specify the recipient domain here.<br />
142 # If this option is not set, the qualify_domain value is used.<br />
143<br />
144 # qualify_recipient =<br />
145<br />
146<br />
147 # The following line must be uncommented if you want Exim to recognize<br />
148 # addresses of the form "user@[10.11.12.13]" that is, with a "domain literal"<br />
149 # (an IP address) instead of a named domain. The RFCs still require this form,<br />
150 # but it makes little sense to permit mail to be sent to specific hosts by<br />
151 # their IP address in the modern Internet. This ancient format has been used<br />
152 # by those seeking to abuse hosts by using them for unwanted relaying. If you<br />
153 # really do want to support domain literals, uncomment the following line, and<br />
154 # see also the "domain_literal" router below.<br />
155<br />
156 # allow_domain_literals<br />
157<br />
158<br />
159 # No deliveries will ever be run under the uids of these users (a colon-<br />
160 # separated list). An attempt to do so causes a panic error to be logged, and<br />
161 # the delivery to be deferred. This is a paranoic safety catch. Note that the<br />
162 # default setting means you cannot deliver mail addressed to root as if it<br />
163 # were a normal user. This isn’t usually a problem, as most sites have an alias<br />
164 # for root that redirects such mail to a human administrator.<br />
165<br />
166 exim_user = mailnull<br />
167 exim_group = mail<br />
168 never_users = root<br />
169 trusted_users = morrow:mailnull<br />
170<br />
171 # The setting below causes Exim to do a reverse DNS lookup on all incoming<br />
172 # IP calls, in order to get the true host name. If you feel this is too
72 Anhang A. Konfiguration<br />
173 # expensive, you can specify the networks for which a lookup is done, or<br />
174 # remove the setting entirely.<br />
175<br />
176 host_lookup = *<br />
177<br />
178<br />
179 # The settings below, which are actually the same as the defaults in the<br />
180 # code, cause Exim to make RFC 1413 (ident) callbacks for all incoming SMTP<br />
181 # calls. You can limit the hosts to which these calls are made, and/or change<br />
182 # the timeout that is used. If you set the timeout to zero, all RFC 1413 calls<br />
183 # are disabled. RFC 1413 calls are cheap and can provide useful information<br />
184 # for tracing problem messages, but some hosts and firewalls have problems<br />
185 # with them. This can result in a timeout instead of an immediate refused<br />
186 # connection, leading to delays on starting up an SMTP session.<br />
187<br />
188 rfc1413_hosts = localhost<br />
189 rfc1413_query_timeout = 5s<br />
190 #rfc1413_query_timeout = 0<br />
191<br />
192<br />
193 # By default, Exim expects all envelope addresses to be fully qualified, that<br />
194 # is, they must contain both a local part and a domain. If you want to accept<br />
195 # unqualified addresses (just a local part) from certain hosts, you can specify<br />
196 # these hosts by setting one or both of<br />
197 #<br />
198 # sender_unqualified_hosts =<br />
199 # recipient_unqualified_hosts =<br />
200 #<br />
201 # to control sender and recipient addresses, respectively. When this is done,<br />
202 # unqualified addresses are qualified using the settings of qualify_domain<br />
203 # and/or qualify_recipient (see above).<br />
204<br />
205 #<br />
206 # logselector<br />
207 log_selector = +incoming_interface<br />
208<br />
209<br />
210 # If you want Exim to support the "percent hack" for certain domains,<br />
211 # uncomment the following line and provide a list of domains. The "percent<br />
212 # hack" is the feature by which mail addressed to x%y@z (where z is one of<br />
213 # the domains listed) is locally rerouted to x@y and sent on. If z is not one<br />
214 # of the "percent hack" domains, x%y is treated as an ordinary local part. This<br />
215 # hack is rarely needed nowadays; you should not enable it unless you are sure<br />
216 # that you really need it.<br />
217 #<br />
218 # percent_hack_domains =<br />
219 #<br />
220 # As well as setting this option you will also need to remove the test<br />
221 # for local parts containing % in the ACL definition below.<br />
222<br />
223<br />
224 # When Exim can neither deliver a message nor return it to sender, it "freezes"<br />
225 # the delivery error message (aka "bounce message"). There are also other<br />
226 # circumstances in which messages get frozen. They will stay on the queue for<br />
227 # ever unless one of the following options is set.<br />
228<br />
229 # This option unfreezes frozen bounce messages after two days, tries<br />
230 # once more to deliver them, and ignores any delivery failures.<br />
231<br />
232 ignore_bounce_errors_after = 2d<br />
233<br />
234 # This option cancels (removes) frozen messages that are older than a week.<br />
235<br />
236 timeout_frozen_after = 7d<br />
237
A.1. exim 73<br />
238 smtp_accept_max = 512<br />
239<br />
240 return_size_limit = 10K<br />
241<br />
242 message_size_limit = 50M<br />
243 #queue_only_load = 10.0<br />
244 smtp_load_reserve = 15.0<br />
245 accept_8bitmime<br />
246 split_spool_directory<br />
247<br />
248 ######################################################################<br />
249 # ACL CONFIGURATION #<br />
250 # Specifies access control lists for incoming SMTP mail #<br />
251 ######################################################################<br />
252<br />
253 begin acl<br />
254<br />
255 # This access control list is used for every RCPT command in an incoming<br />
256 # SMTP message. The tests are run in order until the address is either<br />
257 # accepted or denied.<br />
258<br />
259 acl_check_rcpt:<br />
260 # invoked via commandline<br />
261 accept hosts = :<br />
262 # Rejects mails with strange local_parts<br />
263 deny local_parts = ^.*[@%!/|] : ^\\.<br />
264 # Accept mail to postmaster in any domain we handle, regardless of the source,<br />
265 # and without verifying the sender.<br />
266 accept local_parts = postmaster<br />
267 domains = +local_domains : +relay_to_domains : +blackholed<br />
268<br />
269 # Accept if the message arrived over an authenticated connection, from<br />
270 # any host. Again, these messages are usually from MUAs, so recipient<br />
271 # verification is omitted.<br />
272<br />
273 accept authenticated = *<br />
274<br />
275 # defer if our load goes googoo<br />
276 defer message = try again later ...<br />
277 condition = ${if > {$load_average} {20000}{1}{0}}<br />
278<br />
279 # deny well known spamtraps<br />
280 deny recipients = +traps<br />
281 delay = 2m<br />
282<br />
283 # SPF Check ASAP<br />
284 warn message = $spf_received<br />
285 spf = pass : fail : softfail : none : neutral : err_perm : err_temp<br />
286 omains = +local_domains : +relay_to_domains<br />
287<br />
288 # Defer message if not for the same domain. (site may be broke then)<br />
289<br />
290<br />
291 warn condition = ${if def:acl_m0 {1}{0} }<br />
292 set acl_m1 = *@$domain<br />
293 log_message = multiple RCPT TO for @$domain switching to domain\<br />
294 based profiles<br />
295<br />
296 warn condition = ${if !def:acl_m0 {1}{0} }<br />
297 domains = +local_domains : +relay_to_domains<br />
298 set acl_m0 = $domain<br />
299 set acl_m1 = $local_part@$domain<br />
300<br />
301 defer message = try this address in the next batch<br />
302 condition = ${if and{ {def:acl_m0} {!eq {${acl_m0}}{${domain}}} } {1}{0}}
74 Anhang A. Konfiguration<br />
303<br />
304 # RBL Check<br />
305<br />
306 deny message = rejected because $sender_host_address is in a\<br />
307 black list at $dnslist_domain\n$dnslist_text<br />
308 condition = ${if !eq {USERRBL}{0}{1}{0}}<br />
309 log_message = found in $dnslist_domain: $dnslist_text<br />
310 dnslists = relays.bl.kundenserver.de:list.dsbl.org<br />
311<br />
312 # Deny unless the sender address can be verified.<br />
313<br />
314 deny message = unroutable address<br />
315 condition = ${if !eq {USERCALLOUT}{0}{1}{0}}<br />
316 !verify = sender/callout=90s/no_details<br />
317<br />
318 deny condition = ${if and{ {eq{USERCALLOUT}{0}} {eq{USERSENDERVERIFY}{1}}} {1}{0}}<br />
319 !verify = sender<br />
320<br />
321 # defer if mail comes from blacklisted or unresolveable hosts.<br />
322<br />
323 defer message = $sender_host_address is not yet authorized to deliver mail \<br />
324 from to . \<br />
325 reason for greylisting: $acl_m8 \<br />
326 Please try later.<br />
327 log_message = greylisted ($acl_m8).<br />
328 !senders = :<br />
329 acl = dnsbl_or_unresolved<br />
330 set acl_m9 = ${mask:$sender_host_address/24} $sender_address $local_part@$domain<br />
331 set acl_m9 = ${readsocket{/var/run/greylistd/socket}{$acl_m9}{5s}{}{}}<br />
332 condition = ${if eq {USERBLGREY}{1}{1}{0}}<br />
333 condition = ${if eq {$acl_m9}{grey}{true}{false}}<br />
334<br />
335 # Accept if the address is in a local domain, but only if the recipient can<br />
336 # be verified. Otherwise deny. The "endpass" line is the border between<br />
337 # passing on to the next ACL statement (if tests above it fail) or denying<br />
338 # access (if tests below it fail).<br />
339<br />
340 accept domains = +local_domains<br />
341 endpass<br />
342 message = unrouteable address<br />
343 verify = recipient<br />
344<br />
345 # Accept if the address is in a domain for which we are relaying, but again,<br />
346 # only if the recipient can be verified.<br />
347<br />
348 accept domains = +relay_to_domains<br />
349 endpass<br />
350 message = unrouteable address<br />
351 verify = recipient/callout=90s/no_details<br />
352<br />
353 # If control reaches this point, the domain is neither in +local_domains<br />
354 # nor in +relay_to_domains.<br />
355<br />
356 # Accept if the message comes from one of the hosts for which we are an<br />
357 # outgoing relay. Recipient verification is omitted here, because in many<br />
358 # cases the clients are dumb MUAs that don’t cope well with SMTP error<br />
359 # responses. If you are actually relaying out from MTAs, you should probably<br />
360 # add recipient verification here.<br />
361<br />
362 accept hosts = +relay_from_hosts<br />
363<br />
364 # Reaching the end of the ACL causes a "deny", but we might as well give<br />
365 # an explicit message.<br />
366<br />
367 deny message = relay not permitted (check http://netclue.de/freerelay)
A.1. exim 75<br />
368<br />
369 # This access control list is used for content scanning with the exiscan-acl<br />
370 # patch. You must also uncomment the entry for acl_smtp_data (scroll up),<br />
371 # otherwise the ACL will not be used. IMPORTANT: the default entries here<br />
372 # should be treated as EXAMPLES. You MUST read the file doc/exiscan-acl-spec.txt<br />
373 # to fully understand what you are doing ...<br />
374<br />
375 acl_check_content:<br />
376<br />
377 # we probably checked this mail allready...<br />
378 accept condition = ${if eq {${hmac{md5}{password}{$body_linecount}}}\<br />
379 {$h_X-Scan-Signature:} {1}{0} }<br />
380<br />
381 # First unpack MIME containers and reject serious errors.<br />
382 deny message = This message contains a MIME error ($demime_reason)<br />
383 demime = *<br />
384 condition = ${if >{$demime_errorlevel}{2}{1}{0}}<br />
385<br />
386 # Reject virus infested messages.<br />
387 deny message = This message contains malware ($malware_name)<br />
388 condition = ${if !eq {USERVIRUS}{0}{1}{0} }<br />
389 demime = *<br />
390 malware = *<br />
391<br />
392 # Always add X-Spam-Score and X-Spam-Report headers, using SA system-wide settings<br />
393 # (user "nobody"), no matter if over threshold or not.<br />
394 warn message = X-Spam-Score: $spam_score ($spam_bar)<br />
395 condition = ${if >{$message_size}{256k}{0}{1}}<br />
396 condition = ${if eq{USERSPAM}{0}{0}{1}}<br />
397 spam = USERSA:true<br />
398<br />
399 warn message = X-Spam-Report: $spam_report<br />
400 condition = ${if >{$message_size}{256k}{0}{1}}<br />
401 condition = ${if eq{USERSPAM}{0}{0}{1}}<br />
402 spam = USERSA<br />
403<br />
404 # Add X-Spam-Flag if spam is over system-wide threshold<br />
405 warn message = X-Spam-Flag: YES<br />
406 condition = ${if >{$message_size}{256k}{0}{1}}<br />
407 condition = ${if eq{USERSPAM}{0}{0}{1}}<br />
408 spam = USERSA<br />
409<br />
410<br />
411 # add crypto sig<br />
412 warn message = X-Scan-Signature: ${hmac{md5}{password}{$body_linecount}}<br />
413 condition = ${if >{$message_size}{256k}{0}{1}}<br />
414 condition = ${if or{ {!eq{USERSPAM}{0}} {!eq{USERVIRUS}{0}}}{1}{0}}<br />
415 logwrite = :main: SA $return_path H=$sender_address S=$message_size\<br />
416 to=$acl_m1 SPAM=$spam_score<br />
417<br />
418 warn message = X-Warning: This Email has not been fully scanned.<br />
419 condition = ${if >{$message_size}{256k}{1}{0}}<br />
420 condition = ${if or{ {eq{USERSPAM}{0}} {eq{USERVIRUS}{0}}}{1}{0}}<br />
421<br />
422 # Reject spam messages with score over USERSA, using an extra condition.<br />
423 deny message = sender declines this kind of mail<br />
424 condition = ${if >{$message_size}{256k}{1}{0}}<br />
425 condition = ${if and{ {eq{USERSPAM}{1}} {and{ {eq{USERREJECT}{1}}\<br />
426 {>{$spam_score_int}{USERSCORE}}}}}{1}{0}}<br />
427 spam = USERSA<br />
428 logwrite = :main: SA $return_path H=$sender_address S=$message_size<br />
429 to=$acl_m1 SPAM=$spam_score<br />
430<br />
431<br />
432 # finally accept all the rest
76 Anhang A. Konfiguration<br />
433 accept<br />
434<br />
435 dnsbl_or_unresolved:<br />
436 accept condition = $host_lookup_failed<br />
437 set acl_m8 = reverse/forward lookup failure<br />
438 accept hosts = *ppp*.*.* : *adsl*.*.* : *dyn*.*.* : *dial-in*.*.*<br />
439 set acl_m7 = $host is probably dialup.<br />
440 accept dnslists = dnsbl.sorbs.net<br />
441 set acl_m8 = $dnslist_text<br />
442 accept dnslists = combined.njabl.org<br />
443 set acl_m8 = $dnslist_text<br />
444 accept dnslists = blackholes.five-ten-sg.com<br />
445 set acl_m8 = $dnslist_text<br />
446 deny<br />
447<br />
448 ######################################################################<br />
449 # ROUTERS CONFIGURATION #<br />
450 # Specifies how addresses are handled #<br />
451 ######################################################################<br />
452 # THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT! #<br />
453 # An address is passed to each router in turn until it is accepted. #<br />
454 ######################################################################<br />
455<br />
456 begin routers<br />
457<br />
458 spam_trap:<br />
459 driver = redirect<br />
460 condition = ${if and{ {>{$spam_score_int}{100}} {!eq{USERTRAP}{0}} }{1}{0}}<br />
461 router_home_directory = /var/mail/Trapped<br />
462 directory_transport = address_directory<br />
463 user = mailnull<br />
464 data = /var/mail/Trapped/$domain/$local_part/<br />
465<br />
466<br />
467 # This router routes to remote hosts over SMTP by explicit IP address,<br />
468<br />
469 # domain_literal:<br />
470 # driver = ipliteral<br />
471 # domains = ! +local_domains<br />
472 # transport = remote_smtp<br />
473<br />
474 # the actual mail-relay information is in<br />
475 # /usr/local/etc/exim/relays/. This file should look like:<br />
476 # : [,,]<br />
477<br />
478 mailrelay:<br />
479 driver=manualroute<br />
480 domains = +relay_to_domains<br />
481 route_data=${lookup{$domain}lsearch{/usr/local/etc/exim/relays/$domain}}<br />
482 transport = remote_smtp<br />
483<br />
484<br />
485<br />
486 # This router routes addresses that are not in local domains by doing a DNS<br />
487 # lookup on the domain name. Any domain that resolves to 0.0.0.0 or to a<br />
488 # loopback interface address (127.0.0.0/8) is treated as if it had no DNS<br />
489 # entry. Note that 0.0.0.0 is the same as 0.0.0.0/32, which is commonly treated<br />
490 # as the local host inside the network stack. It is not 0.0.0.0/0, the default<br />
491 # route. If the DNS lookup fails, no further routers are tried because of<br />
492 # the no_more setting, and consequently the address is unrouteable.<br />
493<br />
494 dnslookup:<br />
495 driver = dnslookup<br />
496 domains = ! +local_domains<br />
497 transport = remote_smtp
A.1. exim 77<br />
498 ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8<br />
499 no_more<br />
500<br />
501<br />
502 # The remaining routers handle addresses in the local domain(s).<br />
503<br />
504<br />
505 # This router handles aliasing using a linearly searched alias file with the<br />
506 # name /etc/aliases. When this configuration is installed automatically,<br />
507 # the name gets inserted into this file from whatever is set in Exim’s<br />
508 # build-time configuration. The default path is the traditional /etc/aliases.<br />
509 # If you install this configuration by hand, you need to specify the correct<br />
510 # path in the "data" setting below.<br />
511 #<br />
512<br />
513 system_aliases:<br />
514 driver = redirect<br />
515 allow_fail<br />
516 allow_defer<br />
517 data = ${lookup{$local_part}lsearch{/etc/aliases}}<br />
518 user = mailnull<br />
519 group = mail<br />
520 file_transport = address_file<br />
521 pipe_transport = address_pipe<br />
522<br />
523 virtual_aliases:<br />
524 driver = redirect<br />
525 data = ${lookup {$local_part} lsearch \<br />
526 {/usr/local/etc/exim/domains/$domain}}<br />
527 file_transport = address_file<br />
528 pipe_transport = address_pipe<br />
529<br />
530<br />
531 # This router handles forwarding using traditional .forward files in users’<br />
532 # home directories. If you want it also to allow mail filtering when a forward<br />
533 # file starts with the string "# Exim filter", uncomment the "allow_filter"<br />
534 # option.<br />
535<br />
536 # The no_verify setting means that this router is skipped when Exim is<br />
537 # verifying addresses. Similarly, no_expn means that this router is skipped if<br />
538 # Exim is processing an EXPN command.<br />
539<br />
540 # The check_ancestor option means that if the forward file generates an<br />
541 # address that is an ancestor of the current one, the current one gets<br />
542 # passed on instead. This covers the case where A is aliased to B and B<br />
543 # has a .forward file pointing to A.<br />
544<br />
545 # The three transports specified at the end are those that are used when<br />
546 # forwarding generates a direct delivery to a file, or to a pipe, or sets<br />
547 # up an auto-reply, respectively.<br />
548<br />
549 userforward:<br />
550 driver = redirect<br />
551 check_local_user<br />
552 file = $home/.forward<br />
553 no_verify<br />
554 no_expn<br />
555 check_ancestor<br />
556 allow_filter<br />
557 file_transport = address_file<br />
558 directory_transport = address_directory<br />
559 pipe_transport = address_pipe<br />
560 reply_transport = address_reply<br />
561 condition = ${if exists{$home/.forward} {yes} {no} }<br />
562
78 Anhang A. Konfiguration<br />
563<br />
564 # This router matches local user mailboxes.<br />
565<br />
566 localuser:<br />
567 driver = accept<br />
568 check_local_user<br />
569 transport = local_delivery<br />
570<br />
571 virtual_aliases_wildcard:<br />
572 driver = redirect<br />
573 data = ${lookup {$local_part} lsearch* \<br />
574 {/usr/local/etc/exim/domains/$domain}}<br />
575<br />
576<br />
577 ######################################################################<br />
578 # TRANSPORTS CONFIGURATION #<br />
579 ######################################################################<br />
580 # ORDER DOES NOT MATTER #<br />
581 # Only one appropriate transport is called for each delivery. #<br />
582 ######################################################################<br />
583<br />
584 # A transport is used only when referenced from a router that successfully<br />
585 # handles an address.<br />
586<br />
587 begin transports<br />
588<br />
589 remote_smtp:<br />
590 driver = smtp<br />
591 connect_timeout = 5s<br />
592 interface = <br />
593<br />
594<br />
595<br />
596 # This transport is used for local delivery to user mailboxes in traditional<br />
597 # BSD mailbox format. By default it will be run under the uid and gid of the<br />
598 # local user, and requires the sticky bit to be set on the /var/mail directory.<br />
599 # Some systems use the alternative approach of running mail deliveries under a<br />
600 # particular group instead of using the sticky bit. The commented options below<br />
601 # show how this can be done.<br />
602<br />
603 local_delivery:<br />
604 driver = appendfile<br />
605 file = /var/mail/$local_part<br />
606 delivery_date_add<br />
607 envelope_to_add<br />
608 return_path_add<br />
609 group = mail<br />
610 mode = 0660<br />
611<br />
612<br />
613 # This transport is used for handling pipe deliveries generated by alias or<br />
614 # .forward files. If the pipe generates any standard output, it is returned<br />
615 # to the sender of the message as a delivery error. Set return_fail_output<br />
616 # instead of return_output if you want this to happen only when the pipe fails<br />
617 # to complete normally. You can set different transports for aliases and<br />
618 # forwards if you want to - see the references to address_pipe in the routers<br />
619 # section above.<br />
620<br />
621 address_pipe:<br />
622 driver = pipe<br />
623 return_output<br />
624<br />
625<br />
626 # This transport is used for handling deliveries directly to files that are<br />
627 # generated by aliasing or forwarding.
A.1. exim 79<br />
628<br />
629 address_file:<br />
630 driver = appendfile<br />
631 delivery_date_add<br />
632 envelope_to_add<br />
633 return_path_add<br />
634<br />
635 address_directory:<br />
636 driver = appendfile<br />
637 delivery_date_add<br />
638 envelope_to_add<br />
639 return_path_add<br />
640 maildir_format<br />
641 headers_add = "Lines: ${body_linecount}"<br />
642 maildir_tag = ,S=$message_size<br />
643<br />
644<br />
645 # This transport is used for handling autoreplies generated by the filtering<br />
646 # option of the userforward router.<br />
647<br />
648 address_reply:<br />
649 driver = autoreply<br />
650<br />
651 ######################################################################<br />
652 # RETRY CONFIGURATION #<br />
653 ######################################################################<br />
654<br />
655 begin retry<br />
656<br />
657 # This single retry rule applies to all domains and all errors. It specifies<br />
658 # retries every 15 minutes for 2 hours, then increasing retry intervals,<br />
659 # starting at 1 hour and increasing each time by a factor of 1.5, up to 16<br />
660 # hours, then retries every 6 hours until 4 days have passed since the first<br />
661 # failed delivery.<br />
662<br />
663 # Domain Error Retries<br />
664 # ------ ----- -------<br />
665<br />
666 * * F,2h,15m; G,16h,1h,1.5; F,4d,6h<br />
667<br />
668<br />
669<br />
670 ######################################################################<br />
671 # REWRITE CONFIGURATION #<br />
672 ######################################################################<br />
673<br />
674 # There are no rewriting specifications in this default configuration file.<br />
675<br />
676 begin rewrite<br />
677<br />
678<br />
679<br />
680 ######################################################################<br />
681 # AUTHENTICATION CONFIGURATION #<br />
682 ######################################################################<br />
683<br />
684 # There are no authenticator specifications in this default configuration file.<br />
685<br />
686 begin authenticators<br />
687<br />
688<br />
689 # End of Exim configuration file
80 Anhang A. Konfiguration<br />
A.2 Spam/Ham training<br />
1 #!/usr/bin/perl -w<br />
2 # Time-stamp: <br />
3 #<br />
4 # sa-wrapper.pl<br />
5 #<br />
6 # SpamAssassin sa-learn wrapper<br />
7 # (c) Alexandre Jousset, 2004<br />
8 # Adrian Woizik, 2005<br />
9 #<br />
10 # This script is GPL’d<br />
11 # added some file-search for domain scanning and spamassassin user..<br />
12 #<br />
13 # Thanks to: Chung-Kie Tung for the removal of the dir<br />
14 # Adam Gent for bug report<br />
15 #<br />
16 # v1.2<br />
17 #<br />
18 # v1.2-ne1<br />
19 # Removes text/plain from multipart/alternative messages<br />
20<br />
21 use strict;<br />
22 use MIME::Tools;<br />
23 use MIME::Parser;<br />
24 use File::Find;<br />
25<br />
26 use constant DEBUG => 0;<br />
27 my $UNPACK_DIR = ’/tmp/’;<br />
28 my $SA_LEARN = ’/usr/local/bin/sa-learn’;<br />
29 my $SPAMASSASSIN = ’/usr/local/bin/spamassassin’;<br />
30 my @DOMAINS;<br />
31 my @DOMAINDIRS = qw(/usr/local/etc/exim/domains /usr/local/etc/exim/relays);<br />
32<br />
33 find(\&domains, @DOMAINDIRS);<br />
34 sub domains {<br />
35 push @DOMAINS,$_ unless (/^\./);<br />
36 }<br />
37<br />
38<br />
39 my ($spamham, $sender, $SAUSER) = @ARGV;<br />
40 my $parser = new MIME::Parser;<br />
41 $parser->extract_nested_messages(1);<br />
42 $parser->output_under($UNPACK_DIR);<br />
43<br />
44 sub recurs<br />
45 {<br />
46 my $ent = shift;<br />
47<br />
48 if ($ent->head->mime_type eq ’message/rfc822’) {<br />
49 # Report an Razor & Co<br />
50 if (DEBUG) {<br />
51 unlink "/tmp/spam.log.$$" if -e "/tmp/spam.log.$$";<br />
52 open(OUT, "|$SPAMASSASSIN -D ".($spamham eq ’spam’ ? ’-r’ : ’-k’).\<br />
53 ">>/tmp/spam.log.$$ 2>&1") or die "Cannot pipe $SPAMASSASSIN: $!";<br />
54 } else {<br />
55 open(OUT, "|$SPAMASSASSIN ".($spamham eq ’spam’ ? ’-r’ : ’-k’)) or\<br />
56 die "Cannot pipe $SPAMASSASSIN: $!";<br />
57 };<br />
58 $ent->print_body(\*OUT);<br />
59 close(OUT);<br />
60<br />
61 # Bayes füttern<br />
62 # Decoding embedded message<br />
63 $ent = $ent->parts(0);
A.2. Spam/Ham training 81<br />
64 return unless $ent; # Not a valid message/rfc822<br />
65<br />
66 if ($ent->head->mime_type eq ’multipart/alternative’) {<br />
67 # Lösche text/plain<br />
68 $ent->parts([ grep { $_->head->mime_type ne ’text/plain’ } $ent->parts ]);<br />
69 };<br />
70 if (DEBUG) {<br />
71 open(OUT, "|$SA_LEARN -D --$spamham --single --no-sync -u $SAUSER \<br />
72 >>/tmp/spam.log.$$ 2>&1") or die "Cannot pipe $SA_LEARN: $!";<br />
73 } else {<br />
74 open(OUT, "|$SA_LEARN --$spamham --single --no-sync -u $SAUSER") \<br />
75 or die "Cannot pipe $SA_LEARN: $!";<br />
76 };<br />
77 $ent->print(\*OUT);<br />
78 close(OUT);<br />
79 return;<br />
80 }<br />
81<br />
82 my @parts = $ent->parts;<br />
83<br />
84 if (@parts) {<br />
85 map { recurs($_) } @parts;<br />
86 }<br />
87 }<br />
88<br />
89 my ($domain) = $sender =~ /\@(.*)$/;<br />
90 unless (grep { $_ eq $domain } @DOMAINS) {<br />
91 die "I don’t recognize your domain !";<br />
92 }<br />
93<br />
94 if (DEBUG) {<br />
95 MIME::Tools->debugging(1);<br />
96 open(STDERR, ">/tmp/spam_err.log");<br />
97 }<br />
98<br />
99 my $entity;<br />
100 eval {<br />
101 $entity = $parser->parse(\*STDIN);<br />
102 };<br />
103<br />
104 if ($@) {<br />
105 die $@;<br />
106 } else {<br />
107 recurs($entity);<br />
108 }<br />
109<br />
110 $parser->filer->purge;<br />
111 rmdir $parser->output_dir;