Linux als Mailserver mit Spam- und Virenschutz
Linux eignet sich hervorragend als sicherer und schneller Mailserver im Netzwerk. Mit wenigen Handgriffen ist der Server so eingerichtet, dass er die Mail aller Mitarbeiter aus dem Internet einsammelt und auf einem lokalen POP-Server bereitstellt. Und das Beste daran: Die Mails werden sofort auf Spam und Viren untersucht. PC Professionell zeigt, wie Sie den Server einrichten und Spam keine Chance geben.
Diesen Artikel habe ich im Mai 2004 für PC-Professionell geschrieben. Die Informationen können veraltet sein.
Dieser Beitrag geht davon aus, dass auf dem Computer Suse Linux 9.0 in der Minimalversion installiert ist. Diese abgespeckte Variante sollte man grundsätzlich wählen, wenn es um einen Server geht -- denn je weniger Programme installiert sind, desto weniger Angriffspunkte und Fehlerquellen gibt es.
Nach der Installation sollte, falls ein Internet-Anschluss vorhanden ist, gleich das Internet-Update starten. Damit kommen die aktuellen Patches auf den Server. Auch nach der Installation der für den Mail-Verkehr notwendigen Programme, lohnt es sich, noch einmal mit Yast unter Software - Online Update mögliche Sicherheitslücken zu stopfen.
Den Mailserver installieren
Zunächst gilt es, den Mailserver 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ühren. Ist nur ein Modem angeschlossen, wird Einwahl eingeschaltet. Zusätzlich die Option Virusüberprüfung aktivieren. Zwar findet die in diesem Fall nicht statt, jedoch steuert das hierfür zuständige Amavis 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 dieser Server Benutzernamen und Kennwort verlangt, gibt man dieses in 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 Mailnutzer hinzufügen. Sie alle erhalten ihre Mail an den lokalen POP-Account. Tipp: zunächst das Ganze mit einem Testaccount ausprobieren, damit keine wichtigen Mails verloren gehen.
Nach dem Eintragen der Benutzer Yast beenden und warten, bis die notwendigen Programme installiert sind.
POP-Server einrichten
Als nächstes wird der POP-Server eingerichtet. Das geht mit
yast -i qpopper
Danach noch
yast -i xinetd
eingeben und in der Datei /etc/xinetd.d/qpopper den Eintrag
disable = yes
ändern in
disable = no
Fertig. Schon kann der Server starten. Das geht mit dem Befehl
rcxinetd start
Um den POP-Server als Dienst zu installieren, der beim Booten des Linux-Rechners mit startet, gibt man zusätzlich
insserv xinetd
ein. Danach kann der neue POP-Server in die Mail-Programme der Benutzer eingetragen werden. Allerdings funktioniert der noch nicht, da der Virenscanner fehlt.
Virenscanner einrichten
Damit der Virenschutz funktioniert, muss zunächst ein Virenscanner installiert werden. Für den privaten Gebrauch kann man sich den Scanner von H+B EDV holen. Auch für den Einsatz im Unternehmen ist der Scanner zu empfehlen, dann allerdings kostenpflichtig.
Den Scanner gibt es zum Download unter
http://www.antivir.de/dateien/antivir/release/avlxsrv.tgz
Wer mit
yast -i wget
das Utility Wget installiert kann den Scanner bei vorhandenem Internetanschluss direkt mit
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
das Verzeichnis /usr/src/antivir-server-2.1.x öffnen und darin
./install.sh
starten.
Bei der Installation stellt das Programm einige Fragen:
Would you like to create a link in /usr/bin
Darauf mit y antworten.
Would you like to install the automatic internet updater?
Darauf mit y antworten.
Would you like the automatic updater to start automatically?
Darauf mit y antworten.
How should AvGuard be installed
Darauf mit n antworten.
Would you like to configure AntiVir now?
Darauf mit y antworten.
How often should AntiVir check for updates?
Darauf mit 2 antworten.
Alle weiteren Fragen kann man mit [Return] bestätigen.
Nach der Eingabe von
rcamavis restart
ist der Mailserver einsatzbereit. Allerdings sind noch Lizenzdateien von Antivir notwendig. Die gibt es auf
http://www.antivir.de/order/privreg/linux.htm
Nach der Registrierung dort schickt H+BEDV die Lizenzdatei hbedv.key. Die muss in das Verzeichnis /usr/lib/AntiVir kopiert werden. Wichtig: Die Datei muss für alle lesbar sein. Falls es zu Problemen bei der Mail-Zustellung lässt sich das mit der Eingabe von
chmod a+r /usr/lib/AntiVir/hbedv.key
beheben.
Damit sind Virenschutz und Spam-Filter aktiviert.
Spam-Filter im Einsatz
Während Virenmails automatisch aussortiert werden, erhalten Spam-Mails per Default nur einen zusätzlichen Eintrag im Header: X-Spam-Flag: YES. Danach werden sie weiter geleitet. Diese Weiterleitung ist besser, als die Spam-Mails einfach zu löschen. Denn erkennt der Filter eine Mail irrtümlich als falsch, würde sie auch gelöscht -- und 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 noch sehr einfach über das Hinzufügen einer neuen Headerzeile in Tools - Nachrichten-Filter - Neu geht, schaut man bei Outlook Express in die Röhre. Kommt dieses Programm zum Einsatz sollte man die Spam-Warnung in der Betreff-Zeile unterbringen. 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 Headers. Anhand dieses Eintrags können sie leicht mit einem Filter aussortiert werden -- auch in Outlook Express.
Kleiner Tipp: Wer in /etc/amavisd.conf zusätzlich den Parameter $sa_tag_level_deflt auf einen negativen Wert, etwa -100 setzt, erhält in jedem Mail-Header einen Spam-Report. Auf diese Weise lässt sich die Wirksamkeit eigener Filterkriterien besser erkennen.
Spam-Filter verfeinern
Der Open Source Spamkiller Spamassassin erlaubt dem Postmaster, eigene Filter zu definieren. Platz für diese Filter ist in einem speziellen spamassassin-Ordner, der beispielsweise 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. Spam Assassin sucht noch in weiteren Ordnern nach Filtern, mehr dazu steht in der Dokumentation, die es mit
man Mail::SpamAssassin::Conf
gibt.
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 Viagra und Spezialitäten 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 eben auch Zeichenfolgen wie v#i-a_g.r/a. Genauso aber schlägt der Filter an, wenn keine 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 Filter-Kriteriums 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 einen halben Spam-Punkt dafür. Das \b steht für die Wortbegrenzung, also zum Beispiel ein Leerzeichen oder Satzzeichen.
Mehr zu regulären Ausdrücken unter Perl finden Sie im Internet unter http://www.perldoc.com/perl5.8.0/pod/perlre.html.
Mail abholen
Fehlt nur noch ein Mechanismus, um regelmäßig Mail abzurufen. Das geht mit
crontab -e
Dann, nach einem Tastendruck auf [a], die folgende Zeile eingeben:
0-59/10 * * * * /usr/bin/fetchmail -s -f /etc/fetchmailrc
Danach drücken Sie zuerst auf [Esc] und dann zweimal auf [Umschalten - Z]. Jetzt werden die Mails alle 10 Minuten abgeholt.
Wortspiele der Spammer
Zwischen Spam-Versendern und Filter-Programmierern besteht ein ständiger Wettstreit. Mit immer neuen Tricks versuchen sich die Versender der Müll-Mails durch die Filter zu schleichen. Neben dem Verwenden offener Relay-Server, dem Verschleiern der Absende-Adressen und dem Einbauen von HTML-Kommentaren, wollen Spammer vor allem die Wort- und Textfilter umgehen.
Ein beliebtes Mittel dazu ist Verwendung von Zufallstexten, etwa "dsfmnsadp sadje xm asd". Sie dienen dazu, statistische Filter durcheinander zu bringen. Solche Filter errechnen einen Spam-Anteil aus dem Mail-Text. Steht in der Mail ein Spam-Satz wie "Buy Blabla now", ermittelt der Spam-Filter einen hohen Spam-Anteil. Stehen in der Mail jedoch noch mehrere Zeilen Zufallstext, so sinkt der Prozent-Anteil 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 so 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. Beispiel Viagra: Ein guter Spam-Filter schlägt natürlich 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. Allerdings auch nur so lange, bis ein zusätzlicher Filter solche Buchstaben-Manipulationen erkennt.
Ein anderer Versuch, die Filter zu umgehen, ist, zwischen die Buchstaben eines Begriffs Zeichen einzustreuen. Wie wäre es mit Via.gra, V.i.a.g.r.a oder V-i-a-g-r-a? Für den Leser ist das noch erkennbar, gute Spam-Filter schlagen allerdings auch schon auf solche Versuche an.
Das Dilemma der Spammer: Sie müssen ich immer neue, immer schrägere Texte und Betreffs einfallen lassen. Dadurch werden Spam-Subjects immer schwerer zu lesen -- und das hilft den Werbemails auch nicht gerade.
Mehr dazu:
Vielleicht hast du eine ahnung, was anderen passiert ist, so da beide
nicht bei weber durchgekommen, sagte er schlie lich das herz herausrei
en,
arial
[Reipipkar | 21.01.2010]
Antworten




