13.01.2014 Aufrufe

diplomarbeit - Hochschule Furtwangen

diplomarbeit - Hochschule Furtwangen

diplomarbeit - Hochschule Furtwangen

MEHR ANZEIGEN
WENIGER ANZEIGEN

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;

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!