Spam-Schutz mit Linux
Einlasskontrolle

DeveloperIT-ProjekteSicherheitSoftwareVirusZusammenarbeit

Mit wenigen Handgriffen richten Sie einen Linux-Server so ein, dass er die E-Mails aller Mitarbeiter aus dem Internet einsammelt und Spam-frei auf einem lokalen POP3-Server bereitstellt.

Spam-Filter im Eigenbau

Spam-Schutz mit Linux

Wer beim Spam-Schutz auf Nummer sicher gehen will, gern selbst programmiert und kein Geld für zusätzliche Software ausgeben will, kann sich seinen Spam-Filter selbst bauen.

Auf dem verwendeten PC muss Suse Linux 9.0 in der Minimalversion installiert sein. Diese abgespeckte Variante sollten Sie grundsätzlich wählen, wenn es um einen Server geht ? je weniger Programme installiert sind, desto weniger Angriffspunkte und Fehlerquellen kann es geben.

Nach der Installation sollten Sie aktuelle Patches mit Yast über Software, Online Update Internet-Update auf den Server laden und dies nach der Installation der für den Mail-Verkehr notwendigen Programme wiederholen.


Mail-Server installieren

Spam-Schutz mit Linux

Zunächst gilt es, den Mail-Server Postfix zu installieren. Der Befehl yast mail ruft die Installation auf. Als Verbindungsart sollte Permanent stehen bleiben, sofern eine Standleitung oder eine DSL-Verbindung ins Internet führt. Es empfiehlt sich, die Option Virusüberprüfung zu aktivieren. Zwar findet sie in diesem Fall nicht statt, jedoch steuert das hierfür zuständige Amavis (A Mail Virus Scanner) auch die Spam-Erkennung.

Nach der Eingabe von [Alt W] für Weiter gilt es, den Postausgangsserver zu bestimmen. Das ist in der Regel der SMTP-Server des Providers. Falls der Server Benutzername und Kennwort verlangt, geben Sie beides in der Authentifikation ein.

Nach einem neuerlichen Weiter aktiviert der Administrator die Option Entfernte SMTP-Verbindungen akzeptieren. Danach werden unter Herunterladen die Daten des ersten Nutzers eingegeben, dessen Mails der Server abholen soll. In Lokaler Benutzer ist der Benutzername des jeweiligen Users inklusive der Domain-Adresse, etwa @linux.local, einzutragen. Unter Details lassen sich jeweils weitere Mail-Nutzer hinzufügen. Sie alle erhalten ihre Mails an den lokalen POP3-Account. Tipp: Zunächst sollten Sie das Ganze mit einem Test-Account ausprobieren, damit keine wichtigen Mails verloren gehen.

Nach dem Eintragen der Benutzer beenden Sie Yast und warten, bis alle notwendigen Programme auf dem Server installiert sind.


POP3-Server einrichten

Spam-Schutz mit Linux

Als Nächstes richten Sie den POP3-Server ein. Das erfolgt mit dem Befehl

yast -i qpopper

Danach ist noch

yast -i xinetd

einzugeben, und in der Datei /etc/ xinetd.d/qpopper der Eintrag

disable = yes

zu ändern in

disable = no

Fertig. Schon kann der Server starten. Das veranlasst der Befehl rcxinetd start . Um den POP3-Server als Dienst zu installieren, der beim Booten des Linux-Rechners mitstartet, geben Sie zusätzlich insserv xinetd ein.

Danach kann der neue POP3-Server in die Mail-Programme der Benutzer eingetragen werden. Allerdings funktioniert der POP3-Server noch nicht, da der Virenscanner fehlt.


Virenscanner

Spam-Schutz mit Linux

Damit der Virenschutz funktioniert, muss zunächst ein Virenscanner installiert werden. Für den privaten Gebrauch können Sie kostenlos den Scanner Antivir PE von H+B EDV einsetzen. Auch für den Einsatz im Unternehmen ist der Scanner zu empfehlen, dann ist er allerdings kostenpflichtig.

Den Scanner gibt es zum Download unter www.antivir.de/dateien/antivir/release/avlxsrv.tgz. Wer mit yast -i wget das Utility Wget installiert, kann den Scanner bei vorhandenem Internet-Anschluss direkt mit dem Befehl wget http://www.antivir.de/dateien/antivir/release/avlxsrv.tgz auf den Server holen. Nach dem Entpacken mit tar xzvf avlxsrv.tgz.tar ? directory /usr/src öffnen Sie das Verzeichnis /usr/src/antivir-server-2.1.x und starten darin /install.sh.

Bei der Installation stellt das Programm einige Fragen:

»Would you like to create a link in /usr/bin?«
Darauf antworten Sie mit y .
»Would you like to install the automatic internet updater?«
Auch hier lautet die Antwort y.
»Would you like the automatic updater to start automatically?«
Bestätigen Sie nochmals mit y .
»How should AV Guard be installed?«
Darauf antworten Sie mit n.
»Would you like to configure AntiVir now?«
Stimmen Sie mit y zu.
»How often should AntiVir check for updates?«
Geben Sie 2 ein für einen Check alle zwei Stunden.

Alle weiteren Fragen bestätigen Sie durch Drücken der Eingabetaste.

Nach der Eingabe von rcamavis restart ist der Mail-Server einsatzbereit. Allerdings sind noch Lizenzen notwendig. Die gibt es unter www.antivir.de/order/privreg/linux.htm.

Nach der Registrierung schickt H+B EDV die Lizenzdatei hbedv.key. Sie muss in das Verzeichnis /usr/lib/AntiVir kopiert werden. Wichtig: Die Datei muss für alle Nutzer lesbar sein. Um Probleme bei der Mail-Zustellung zu vermeiden, geben Sie noch chmod a+r /usr/lib/AntiVir/hbedv.key ein. Daraufhin sind Virenschutz und Spam-Filter aktiv.


Spam-Filter im Einsatz

Spam-Schutz mit Linux

Während Virenmails automatisch aussortiert werden, erhalten Spam-Mails in den Standard-Einstellungen nur einen zusätzlichen Eintrag im Header:
X-Spam-Flag: YES
. Danach werden sie weitergeleitet. Diese Weiterleitung ist besser, als die Spam-Mails einfach zu löschen. Denn stuft der Filter eine korrekte Mail als Spam ein, würde sie gelöscht ? das wäre ärgerlich.

Anhand des Header-Eintrags baut der Administrator Filter für die E-Mail-Programme der Clients. Während das mit Mozilla sehr einfach über das Hinzufügen einer neuen Headerzeile in Tools, Nachrichten-Filter, Neu geht, fehlt diese Option bei Outlook Express. Dort sollten Sie die Spam-Warnung am Anfang der Betreff-Zeile einfügen. Dazu öffnet der Benutzer root die Datei /etc/amavisd.conf und entfernt die Raute vor dem Eintrag $sa_spam_subject_tag.

Nach einem neuerlichen rcamavis restart erhalten alle Spam-Mails die Markierung ***SPAM*** am Anfang des jeweiligen Headers. Anhand dieses Eintrags können sie leicht mit einem Filter aussortiert werden ? auch in Outlook Express.

Tipp: Wer in /etc/amavisd.conf zusätzlich den Parameter $sa_tag_level_deflt auf einen negativen Wert setzt, zum Beispiel -100, erhält in jedem Mail-Header einen Spam-Report. Auf diese Weise lässt sich die Wirksamkeit von selbst erstellten Filterkriterien am besten erkennen.


Filter verfeinern

Spam-Schutz mit Linux

Der Open-Source-Spam-Killer Spamassassin erlaubt dem Postmaster, eigene Filter zu definieren. Platz für diese Filter ist in einem speziellen Spamassassin-Ordner, der etwa bei Suse Linux unter /etc/mail/spamassassin zu finden ist. In diesem Ordner steckt eine Datei namens local.cf, in der sich eigene Filter erzeugen lassen.

Spamassassin sucht noch in weiteren Ordnern nach Filtern. Mehr dazu steht in der Dokumentation, die sich auf die Eingabe von Mail::SpamAssassin::Conf hin öffnet.

Die Spam-Filter bestehen grundsätzlich aus drei Zeilen: der Definition des Filters, einer Bewertung und einer Beschreibung. Ein Beispiel:

header GO_VIAGRA_MESSY
Subject =~ /v.?i.?a.?g.?r.?a/i
score GO_VIAGRA_MESSY 2
describe GO_VIAGRA_MESSY

erkennt den Begriff Viagra und spezielle Schreibungen wie Via.gra.

Die erste Zeile durchsucht im Nachrichtenkopf (header) die Betreffzeile (Subject) nach »Viagra«. Hinter dem =~ steht ein regulärer Ausdruck in Perl-Syntax. Das ».?« steht für kein oder ein einziges beliebiges Zeichen. So erkennt der Filter Zeichenfolgen wie v#i-a_g.r/a. Genauso schlägt der Filter an, wenn keinerlei unübliche Zeichen in »Viagra« stehen. Das nachstehende »i« schaltet die Unterscheidung zwischen Groß- und Kleinschreibung aus.

Der score gibt eine Bewertung, falls der Filter anspricht. Alle Filter-Bewertungen werden am Schluss zusammengezählt und mit einem Schwellenwert verglichen. Liegt der Gesamtwert darüber, so gilt die Mail als Spam. Die dritte Zeile des Filterkriteriums enthält eine Beschreibung des Spam-Filters. Diese dient der Dokumentation der Einträge und kann zusätzlich in den Mails mit angezeigt werden.

Um den Mail-Text zu filtern, verwendet man das gleiche Verfahren, zum Beispiel:

body GO_TEST /\btesttext\b/i
score GO_TEST 0.5
describe GO_TEST Nur ein kleiner Test

Hier schlägt der Filter auf das Wort »testtext« an und gibt dafür einen halben Spam-Punkt. Das Zeichen \b steht für die jeweilige Wortbegrenzung, also zum Beispiel für ein Leerzeichen oder ein Satzzeichen. Mehr zu regulären Ausdrücken unter Perl finden Sie in der Perl-Dokumentation unter www.perldoc.com/perl5.8.0/pod/perlre.html .


Mails abholen

Spam-Schutz mit Linux

Nun fehlt nur noch ein Mechanismus, um regelmäßig Mail abzurufen. Das erfolgt mit crontab ?e. Dann ist, nach einem Tastendruck auf [A], die folgende Zeile einzugeben:

0-59/10 * * * * /usr/bin/fetchmail -s -f /etc/fetchmailrc

Danach drücken Sie zuerst auf [Esc] und dann zwei Mal auf [Umschalt Z]. Auf diese Weise ist der Server so eingestellt, dass die Mails alle zehn Minuten abgeholt werden.


Die Tricks der Spammer

Spam-Schutz mit Linux

Mit immer neuen Tricks versuchen sich die Versender der Müllmails durch die Filter zu schleichen. Neben dem Verwenden offener Relay-Server, dem Verschleiern der Absenderadressen und dem Einbauen von HTML-Kommentaren wollen Spammer vor allem die Wort- und Textfilter umgehen. Ein beliebtes Mittel dazu ist die Verwendung von Zufallstexten, etwa »dsfmnsadp sadje xm asd«. Sie dienen dazu, statistische Filter durcheinander zu bringen.

Solche Filter errechnen einen Spam-Anteil aus dem gesamten Mail-Text. Steht in der Mail ein Spam-Satz wie »Buy Blabla now«, ermittelt der Spam-Filter daraus einen hohen Spam-Anteil. Stehen in der Mail jedoch noch mehrere Zeilen Zufallstext, sinkt der Prozentanteil des Spam-Satzes am Gesamttext.

Ein weiteres Mittel, um lernfähige Bayes-Filter auszuhebeln, sind zufällig gewählte, existierende Wörter, die an den Spam-Text angehängt werden. Wird der Filter anhand solch einer Mail trainiert, nimmt er die Zufallswörter mit in die Spam-Erkennung auf. Die Folge: Kommt eine an sich saubere Mail, die vermeintliche Spam-Begriffe enthält, landet sie als False Positive ebenfalls im Spam-Fach.

Ein weiterer Trick: Um die Erkennung bestimmter Begriffe zu umgehen, verfälschen Spammer diese. Am Beispiel Viagra lässt sich das gut nachvollziehen: Ein guter Spam-Filter schlägt auf den Begriff Viagra an und filtert die Mail heraus. Gegenmaßnahme der Spammer: Sie ersetzen einzelne Buchstaben im Schlüsselwort. Aus Viagra wird dann zum Beispiel Vi@gra oder Vi/\gra. Für den Mail-Empfänger bleibt die Mail noch lesbar ? der Filter beißt sich daran die Zähne aus. Das gilt aber nur so lange, bis ein passender Filter eingerichtet ist.

Ein anderer Versuch, die Filter zu umgehen, ist, zwischen die Buchstaben eines Begriffs Zeichen einzustreuen. Wie wäre es mit Via.gra oder V-i-a-g-r-a? Für den Leser ist das noch erkennbar, gute Spam-Filter sind so definiert, dass sie auch hier Alarm schlagen.

Gut für genervte User: Spammer müssen sich immer schrägere Betreff-Zeilen einfallen lassen. Dadurch werden Subjects immer schwerer zu lesen ? die Werbe-Mails also schneller links liegen gelassen.