Linux-Arbeitskreis Hamburg

Anti-Spam

Grundlagen

Unerwünschte Werbemail (Spam) nimmt immer mehr zu. Gerade Menschen, die ihre E-Mail Adresse intensiv nutzen geraten leicht in die Adresslisten der Spammer. Nach kurzer Zeit kann dann das Aufkommen an Spam das Aufkommen an ordentlicher Mail übersteigen. Die Spammer reagieren auch auf Fehlermeldungen nicht, so dass speziell im schulischen Bereich noch nach Jahren Mails für Schüler eintreffen, die die Schule schon lange verlassen haben.
Zur Abwehr, bzw. eigentlich nur zur Verringerung von Spam gibt es ein paar Möglichkeiten:

Das Sperren der Absender und die Schutz-Funktion von Sendmail sind aber nur dann sinnvoll, wenn der eigene Mailserver über eine feste IP-Adresse verfügt und seine Mails direkt empfängt. Falls man die Mails per UUCP oder Fetchmail vom Provider bezieht ist sie ja schon auf das eigene System übertragen, bevor man sie ablehenen kann. Damit würde man sich dann nur noch das Löschen per Hand ersparen.

 

Eigene Mailadresse verschleiern

Spammer durchsuchen die Webseiten nach E-Mail Adressen und nehmen diese dann automatisch in ihre Datenbanken auf. E-Mailadressen finden sich als Kontaktadressen auf vielen Websites, aber vor allem auch in Mailarchiven. Viele Mailarchive verzichten inzwischen darauf die Absender-Adressen mit aufzunehmen, aber gegenüber Mailadressen im Fuss der Nachricht sind sie meist hilflos.

Man sollte also auf alle Fälle auf Mailadressen im Footer der Nachricht verzichten, eigentlich sind sie da auch nicht notwendig. Die Mailadressen auf Websites kann man versuchen zu verschleiern und zwas so, dass Programme mit der Information nichts anfangen können, wohl aber Menschen. Im einfachsten Fall schreibt man dann seine Mailadresse in der Form:

Uwe_at_Debacher.de


Damit sollte nahezu jeder Surfer etwas anfangen können. Leider geht damit die Möglichkeit verloren die Mailadresse auf der Website einfach anklicken zu können. Einen benutzerfreundlicheren Weg gehen wir auf diesen Seiten. Wir ersetzen alle Mailto-Links durch folgenden Aufruf:

http://www.linux-hamburg.de/maillink.php?mailto=u+.+d+e+b+a+c+h+e+r@l+i+n+u+x-h+a+m+b+u+r+g.d+e

Deutlich sieht man hier die verschleierte Mailadresse. Das damit angesprochene PHP-Script macht aus der angegebenen Adresse einen ordentlichen Mailto-Aufruf, wodurch der Mailclient des Benutzers gestartet wird. Zum Testen einfach das Impressum dieser Seite benutzen.

 

Absender lokal sperren

Einzelne Absender, z.B. Mailinglisten, lassen sich auf dem eigenen System gezielt sperren. Hierfür eignet sich die Datei /etc/mail/access besonders gut. In dieser Datei ist die folgende Zeile als Beispiel angegeben:

cyberspammer.com       ERROR:"550 We don't accept mail from spammers"

Damit werden alle Mails mit der Absender-Domain cyberspammer.org abgelehnt, der Absender bekommt die hinter ERROR angegebene Fehlermeldung mitgeteilt. Es lassen sich nicht nur ganze Domains, sondern auch einzelne Absenderadressen sperren:

newsletter@submarine.com            ERROR:"550 We don't accept mail from submarines"

Damit wird nur diese Mailadresse blockiert, alle anderen Mailadressen von submarine.com werden nicht behindert. Auch der Text der Fehlermeldung kann recht frei gestaltet werden, es sollte nur immer die Fehlernummer 550 am Anfang stehen.

Änderungen an der Datei /etc/mail/access werden nicht direkt berücksichtigt, es muss erst die zugehörige Datenbank neu aufgebaut werden. Das macht man am einfachsten als root von einer Linux-Konsole aus mit:

cd /etc/mail
make

Der make-Befehl bewirkt im Verzeichnis /etc/mail, dass für alle veränderten Tabellen die Datenbanken neu erzeugt werden. Damit sind die neuen Einträge aktiv und die entsprechenden Absenderadressen abgeblockt.

 

Aktivieren der Spam-Schutz Funktion im Sendmail-Programm

Bei sehr vielen Spammern sind die Absenderadressen gefälscht, von daher ist ein System, welches auf der Absenderadresse aufbaut nicht unproblematisch. Die Spammer müssen ihre Mails aber über irgendein System verschicken, meist nicht das eigene. Sie nutzen dazu oft schlecht oder falsch konfigurierte Mailserver, die als offene Relays dienen. Ein solcher Mailserver nimmt Mails von irgendeinem Absender für irgendeinen Empfänger an.
Genau hier setzt eine einfache Art von Spam-Schutz an, die die aktuellen Versionen von Sendmail und Postfix unterstützen. Man nimmt von solchen offenen Relays einfach keinerlei Mails an. Im Internet gibt es relativ viele Systeme, die die Adressen von offenen Relays und Spammern sameln (z.B. http://relays.osirusoft.com/). Diese Systeme kann Sendamil für jede eingehende Mail befragen, ob die Adresse des abliefernden Rechners dort bekannt ist. Wenn ja, dann lehnt man die Mail ab, wenn nicht, dann kann man sie annehmen.

 

Test auf offenes Relay

Ob ein Rechner ein offenes Relay bildet läßt sich einfach ausprobieren. Man kann eine Telnet-Verbindung zum Mailport (25) des betreffenden Rechners aaufbauen und die notwendigen Angaben direkt vornehmen:

> telnet 211.35.47.11 25
< Trying 211.35.47.11...
< Connected to 211.35.47.11.
< Escape character is '^]'.
< 220 train0815 ESMTP Sendmail AIX4.3/UCB 8.8.8/8.8.8; Thu, 6 Mar 2003 00:14:50 +0900
> helo gates.com
< 250 train23 Hello p50898CE3.dip.t-dialin.net [80.137.140.227], pleased to meet you
> mail from: bill@gates.com
< 250 bill@gates.com... Sender ok
> rcpt to: president@whitehouse.gov
< 250 president@whitehouse.gov... Recipient ok

Vor jede Dialogzeile wurde nachträglich das >-Zeichen für gesendete Zeilen und das <-Zeichen für empfangene Zeilen gesetzt. Das hier als (verfremdetes) Beispiel genutzte System würde sich also als offenes Relay eignen.

Ein korrekt konfigureiertes System müßte in der letzten Zeile antworten:

< 550 5.7.1 president@whitehouse.gov... Relaying denied

Wenn alle Mail-Server korrekt konfiguriert wären, dann dürfte es kaum Spam geben. Von daher ist es eine sinnvolle Lösung die falsch konfigureierten Systeme zu blocken.

Open Relay Datenbanken

Im Internet gibt es eine Vielzahl von Systemen bzw. Datenbanken, die offene Relays auflisten (Black-List). Dazu gehören die folgenden Systeme:

ordb.org

MAPS

Spamhaus

Distributed Server Boycott List

Die Listen dieser Systeme unterscheiden sich deutlich. Von daher kann es sinnvoll sein mehrere Datenbanken zu befragen. Die Datenbankabfrage ist bei diesen DNSBL-Systemen genial einfach gelöst. Man schickt einfach eine spezielle Nameserver-Anfrage an die Systeme. Wenn man eine positive Antwort bekommt, dann ist die IP-Adresse dort bekannt. DNS-Anfragen sind normalerweise sehr schnell erledigt.

Eine normale DNS-Anfrage könnte folgendermaßen aussehen:

> host 134.100.252.1
< 1.252.100.134.in-addr.arpa. domain name pointer lbs.rrz.uni-hamburg.de.

Mit dem host-Befehl kann man den Nameserver nach einer IP befragen. Als Antwort bekommt man den zugehörigen Nameserver-Eintrag, hier den vom Hamburger Bildungsserver.

Über eine solche Anfrage kann ich nur auch die Black-List Systeme befragen. Die IP-Adresse z.B. 134.100.252.1 muss dazu in umgekehrter Darstellung, also als 1.252.100.134 vor den Namen des Listenbetreibers gesetzt werden:

> host 1.252.100.134.relays.osirusoft.com
< Host 1.252.100.134.relays.osirusoft.com. not found: 3(NXDOMAIN)

Der Bildungsserver ist also relays.osirusoft.com nicht bekannt, wohl aber der folgende Rechner

> host 11.47.35.211.relays.osirusoft.com
< 11.47.35.211.relays.osirusoft.com. has address 127.0.0.2

Wenn man eine IP-Adresse zurückbekommt, dann ist die Adresse gelistet. Die zurückgelieferte IP-Adresse, hier 127.0.0.2, sagt aus in welcher Liste der Eintrag gefunden wurde.

 

Datenbank aktivieren in Sendmail

Die Nutzung der Black-Listen mit Sendmail ist relativ einfach zu aktivieren. Dazu muss man die Datei /usr/share/sendmail/ostype/suse-linux.m4 bearbeiten, aus der SuSE die Sendmail-Konfigurationsdatei erzeugt.

FEATURE(`mailertable',                  `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`genericstable',                `hash -o /etc/mail/genericstable.db')dnl
FEATURE(`virtusertable',                `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(`access_db',                    `hash -o /etc/mail/access.db')dnl
FEATURE(`dnsbl',`relays.osirusoft.com', ` Mail from $&{client_addr} rejected - open relay; see http://relays.osirusoft.com')dnl
dnl
LOCAL_CONFIG

Ziemlich am Ende dieser Datei ergänzt man die hervorgehobene Zeile. Damit wird die dnsbl-Funktionalität aktiviert. Zusätzlich kann man Listen-Anbieter und eine Passende Fehlermeldung angeben. Wenn man keine weiteren Angaben macht, als nur

FEATURE(`dnsbl')

einträgt, dann ist blackholes.mail-abuse.org voreingestellt.
Es ist möglich mehrere derartige Zeilen einzutragen und damit auch mehrere Block-Listen zu aktivieren.

Nach den Änderungen muss man die alte Sendmail-Konfigurationsdatei verschieben oder löschen und dann von SuSEconfig neu erzeugen lassen.

mv  /etc/sendmail.cf  /etc/sendmail.cf.org
SuSEconfig --module sendmail

Zum Abschluss muss dann Sendmail noch neu gestartet werden.

rcsendmail restart

Nun heißt es die Logdatei /var/log/mail zu beobachten, bis die ersten Meldungen auftauchen.

Mar  5 02:19:36 king sendmail[14439]: h251JaZ14439: ruleset=check_relay, arg1=[211.35.47.11], arg2=211.35.47.11, relay=[211.35.47.11], reject=553 5.3.0 Mail from 211.35.47.11 rejected - open relay;see http://relays.osirusoft.com

Damit ist dieses Relay dicht.

Datenbank aktivieren in Postfix

Auch wer Postfix statt Sendmail installiert hat (bei SuSE 8.1) kann die Spam-Relays abblocken. Man muss dazu nur die folgenden Zeilen in der Datei /etc/postfix/main.cf ergänzen:

maps_rbl_domains = relays.osirusoft.com
                   blackholes.mail-abuse.org
smtpd_recipient_restrictions = reject_maps_rbl

Weitere Informationen im Web

Viele der Anbieter von Spam-Listen bieten auch Informationen im Web an. Teilweise kann man Server online testen, ob sie offene Relays darstellen.

ordb.org Bietet umfangreiche Informationen in deutscher Sprache an. Dazu gehören Hinweise dazu wie das ORDB System arbeitet, aber auch wie man  seinen eigenen Mailserver absichern kann. Man kann online offene Mailserver melden, die dann von ORDB überprüft werden. Wichtig ist auch die Möglichkeit die Datenbank nach einer konkreten IP zu befragen.
osirusoft.com
zur Zeit ausser Betrieb!
Eine leider recht unübersichtliche Website. Man kann ich hier die Datenbank abfragen, wobei gleich mehrere Anbieter mit genutzt werden. Interessant ist der Link Backtrace this IP ... ganz unten auf der Antwortseite, über den man weitere Auskünfte über den Besitzer der IP bekommt. Offene Server melden kann man über einen Link in der Antwortseite. Relativ umfangreich ist auch die FAQ.
Sam Spade Mehrere Online-Tools, mit denen man sich Informationen über einzelne Server verschaffen kann.
MAPS Das Mail Abuse Prevention System ist einer der Standardanbieter für Spam-Listen. Auch hier kann man die Datenbank per Webformular abfragen. MAPS bietet auch Informationen zum Absichern des eigenen Systems.
Countries Dieser Service erlaubt es abzufragen, in welchem Land eine IP-Adresse angesiedelt ist. Falls man den Dienst als DNSBL-Dienst nutzt kann man ganze Länder abblocken. Über host 1.252.100.134.de.countries.nerd.dk kann man sich bestätigen lassen, dass die IP 134.100.252.1 (Hamburger Bildungsserver) in Deutschland angesiedelt ist. Wenn man das de durch ein anderes ISO 3166 Länderkürzel ersetzt, dann kommt ein negatives Ergebnis zustande. Wenn man nicht weiss wo eine IP anzusiedeln ist, dann kann man über host 1.252.100.134.zz.countries.nerd.dk auch das Land abfragen. Als Antwort kommt hier has address 127.0.1.20. Wenn man hier die beiden letzten Oktetts auswertet, dann erhält man 276, den numerischen ISO 3166 Ländercode für Deutschland. Eine nützliche SQL-Tabelle für die Codes findet sich im Web.
Easynet
zur Zeit ausser Betrieb!
Verschiedene Listen mit probelmatischen IP-Adressen. Der Bereich Blackholes führt offene Relays auf, DynaBlocker dynamische Einwahl-Adressen. Für alle Bereiche sind ausführliche Anleitungen und Beschreibungen vorhanden. Sogar der Download der Zonendateien ist möglich, damit kann man dann seinen eigenen Service aufbauen.
Sorbs Sorbs pflegt eine Datenbank, die IP-Adressen nach verschiedensten Kriterien listet. Die Konfigurationsbeschreibung auf der Website ist sehr umfangreich. Wir benutzen von Sorbs nur noch dul.dnsbl.sorbs.net, die Liste mit dynamischen Adressbereichen. Die anderen Listen sind anscheinend nicht ganz unproblematisch.
rfc-ignorant.org Dieser Betreiber bemüht sich die Einhaltung der RFCs zu verbessern, die die Grundlage für den Maildienst bilden. Dazu wird auch eine Liste mit Mail-Domains gepflegt, die gegen diese Regeln verstossen. WinShuttle benutzt u.a. diese Liste.
NJABL.org NJABL.ORG is Not Just Another Bogus List, heisst es auf der Website. Gepflegt werden mehrere Listen, u.a. eine für Dialup-Zugänge.
Spamhaus Sehr umfangreiches angebot, auch an Informationen. Hier findet sich auch eine Liste der "wichtigsten" Spammer auf der Welt. Die wichtigste Information ist aber die Spamhaus Block List. Interessant ist auch die Liste der letzten 25 Listings.
moensted Sehr umfangreiches System, dass mehrere Kriterien, bzw. (fremde) Listen überprüft. Auf der Wesite sind weitere  Informationen über den Dienst zu finden und die Möglichkeit über ein Online-Formular IP-Adressen zu testen.
Jeff Makey Jeff Makey hat Informationen zur Spam-Bekämpfung zusammengestellt. Da er auch verschiedene Listen vergleicht hat man hier eine Übersicht über die aktuellen Systeme.
Software Wer seinen eigenen DNSBL-Dienst aufsetzen möchte, der findet mit rbldnsd die notwendige Software.


Kritik, Anregungen und Ergänzungen willkommen. Zusammengestellt von Uwe Debacher und Bernd Burre, letzte Änderung am 27.01.2006
Impressum