Jeder der eine Emailadresse hat oder sogar einen eigenen Mailserver betreibt weiß es: UCE oder Spam ist einfach nur lästig… Zeit was dagegen zu tun. Blacklists sollen es sein. Dumm nur, wenn die von Spamhaus nicht mag…Doch der Reihe nach, was ist passiert? Folgendes Szenario: Ein kleiner Server steht irgendwo bei einem der großen Hoster im Schrank. Funktioniert alles wunderbar. Nur wenn man eine Testabfrage an Spamhaus senden will passiert rein gar nichts:

# host 2.0.0.127.zen.spamhaus.org d.gns.spamhaus.org
;; connection timed out; no servers could be reached

Hm, seltsam… Eigentlich hat man mit einer anderen Antwort gerechnet. Der gleiche Befehl am heimischen PC oder über eine andere Internetverbindung ausgeführt liefert hingegen das erwartete Ergebnis:

# host 2.0.0.127.zen.spamhaus.org d.gns.spamhaus.org
Using domain server:
Name: d.gns.spamhaus.org
Address: 194.68.44.148#53
Aliases: 

2.0.0.127.zen.spamhaus.org has address 127.0.0.2
2.0.0.127.zen.spamhaus.org has address 127.0.0.10
2.0.0.127.zen.spamhaus.org has address 127.0.0.4

Jetzt wird es seltsam. Also mal das Internet nach Rat gefragt 😉

Ursachensuche

Das war nach kurzer Suche rasch erledigt. Spamhaus sperrt komplette Internetbereiche vorm Zugriff auf Ihre Listen wenn Sie der Meinung sind, dass Server in diesem Segment „böse Dinge“ tun. Ich lasse an der Stelle die Links die ich dazu gefunden habe mal weg – denke die haben in dem Artikel nichts zu suchen da unterm Strich jeder Serverhoster von diese Problem betroffen sein könnte. Es sollten sich genügend Erfahrungen von anderen Benutzern vom Internet zu diesem Thema finden lassen. Oder man macht den obigen Schnelltest und überzeugt sich selbst 😉

Erschwerte Rahmenbedingungen

Naja, was wird man wohl tun können bzw. müssen? Also mal der Reihe nach alles durch probiert:

  • host 2.0.0.127.zen.spamhaus.org liefert einen Timeout. Wenn das gleich bei einem neu aufgesetzten Server passiert steht in der resolv.conf wohl noch der bzw. die DNS-Server vom Hoster drin. Dann stehen diese wohl in einem Netzwerksegment das von Spamhaus gesperrt wurde.
  • host 2.0.0.127.zen.spamhaus.org d.gns.spamhaus.org funktioniert ebenfalls nicht? Dann ist von der Sperre auch noch die Adresse des eigenen Rechners betroffen.
  • Naja, man kann ja schnell einen anderen Nameserver benutzen. Gibt ja z.B. die beiden frei erreichbaren von dem großen Suchmaschinenanbieter mit dem großen „G“ im Anfang vom Namen: host 2.0.0.127.zen.spamhaus.org 8.8.8.8. Hm, ebenfalls timeout? Die etwa auch gesperrt? Ja, das mag prinzipiell schon sein. Auf der anderen Seite sperren einige Betreiber von DNS-Servern auch den Zugriff auf RBLs über ihre Systeme. So oder so, unterm Strich war das schon wieder nichts. Und auf der anderen Seite: Bei dem Betreiber dieser DNS-Systeme weiß man ja, dass der sein Geld damit verdient, dass er Besucherprofile von einem über die gestellten DNS-Anfragen kreiert. Zusätzlich bleibt hier die spannende Frage ob man das überhaupt so will.

Annäherung an die Lösung

Also muss irgendein DNS-Server her der frei verfügbar ist und idealerweise nichts oder nur kaum etwas protokolliert. Und ideaerweise keine Profile oder sonst was erzeugt. Auch hier sollten sich im Internet Server finden lassen wie z.B. die von DigitalCourage oder OpenDNS. Es gibt mehr davon wie man zunächst vielleicht denken mag mit vielen verschiedenen Beweggründen. Mir soll es reicht sein, ich habe eine Alternative gefunden:

# host 2.0.0.127.zen.spamhaus.org 208.67.222.220
Using domain server:
Name: 208.67.222.220
Address: 208.67.222.220#53
Aliases: 

2.0.0.127.zen.spamhaus.org has address 127.0.0.2
2.0.0.127.zen.spamhaus.org has address 127.0.0.4
2.0.0.127.zen.spamhaus.org has address 127.0.0.10

Und siehe da: Es funktioniert! Ok, jetzt könnte ich diese Server in der resolv.conf meines Linuxservers kurz eintragen. Doch halt, das würde alle DNS-Anfragen über diese Server leiten. Eigentlich schon wieder nicht das was ich haben wollte. Also nochmals anders.

Ein eigener DNS-Server

Genau, das ist doch die Lösung: Ein eigener DNS-Server. Im Caching-Modus. Also übers Internet nicht erreichbar, nur via localhost und macht für mich meine DNS-Anfragen. Löst diese direkt ohne irgendwelche Abhängigkeiten auf, legt das alles noch im Cache ab. Und, damit Spamhaus funktioniert, eine Forwarding-Zone für zen.spamhaus.org. eingerichtet.

Das kann man mit so gut wie jedem DNS-Server machen. An der Stelle mag ich selbst unbound: Der ist klein, schlank, in allen gängigen Distributionen bereits enthalten und richtig fix konfiguriert. Ok, ggf. muss man sich kurz schlau machen wie man den bei seiner eigenen Distribution letztendlich auch verwendet. Bei einigen wird es reichen die resolv.conf anzupassen, bei ein paar anderen wird man ggf. systemd-resolve vorher noch deaktivieren müssen. Das sollte sich aber im Handbuch bzw. der Paketbeschreibung zu unbound in der jeweiligen Distribution rasch ermitteln lassen.

Nachdem das erledigt ist und erste Testauflösungen via unbound funktionieren wird noch rasch dessen Konfig um diese Zeilen erweitert (die DNS-Server ggf. sinngemäß anpassen):

# Spamhaus
forward-zone:
  name: "zen.spamhaus.org."
  forward-addr: 46.182.19.48	# DigitalCourage
  forward-addr: 208.67.222.220	# OpenDNS
  forward-addr: 208.67.222.222	# OpenDNS

Unbound neugestartet und schon, oh wunder, ist sogar Spamhaus vom eigenen Server aus erreichbar 🙂 Angenehmer Seiteneffekt dieser Lösung: Über die DNS-Server von Dritten laufen nur Teilmengen der eigentlichen Anfrageflut. Für den größten Teil bleibe ich, dank eigenem caching-Proxy, mein eigener Herr.