SpamAssassin und URIBL: Query blocked

Tutorials

Beim Betrieb eines eigenen Mailservers in Verbindung mit der Apache-Software SpamAssassin können einige Stolperfallen auftreten.

Mein eigener Mailserver hat gestern viele Mails fälschlicherweise als Spam markiert und mit einer kurzen Meldung den Spam-Score erhöht.

ADMINISTRATOR NOTICE: The query to URIBL was blocked.  See https://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information.

Hintergrund der Meldung

Die genannte URIBL ist eine Blacklist, die den Content einer Mail auf bestimmte URLs prüft und die Mail entsprechend als SPAM einstuft.

Hintergrund dieser Meldung ist, dass viele – auch die URIBL – nach dem „Free for some“-Prinzip arbeiten, was soviel heißt, dass die Liste für Nutzer mit wenigen Anfragen im Monat kostenfrei nutzbar ist und Nutzer mit vielen Anfragen entsprechende Gebühren zahlen müssen.

Mein Mailaufkommen täglich ist ziemlich gering, da ich der einzige User auf dem Mailserver bin – trotzdem wurde ich von der Liste blockiert, da ich als DNS-Server in der resolv.conf die Google-DNS-Server (8.8.8.8 und 8.8.4.4) eingetragen hatte und die Anfragen an die Liste somit von Google-IPs ausgingen.

Problemlösung: lokaler DNS-Cache

Ich habe meine DNS-Server auf die von Hetzner abgeändert, was leider aber noch immer zu einer Fehlermeldung führte.

host -tTXT 2.0.0.127.multi.uribl.com
2.0.0.127.multi.uribl.com descriptive text "127.0.0.1 -> Query Refused. See http://uribl.com/refused.shtml for more information [Your DNS IP: 213.133.98.98]"

Auch von Hetzner gehen also zu viele Anfragen an die URIBL raus, weshalb ich eine andere Lösung nutzen musste: ein lokaler DNS-Cache mit dnsmasq.

Installation von dnsmasq

Die Installation gestaltet sich unter Debian denkbar einfach und ist mit

apt-get update
apt-get install dnsmasq

erledigt.

Konfiguration von dnsmasq

Zuerst verschieben wir die ausführlich kommentierte Konfigurationsdatei, damit wir mit einer leeren Datei arbeiten können:

mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

Die Datei /etc/dnsmasq.conf erstellen wir nun mit folgendem Inhalt

resolv-file=/etc/resolv.conf.dnsmasq
server=/multi.uribl.com/54.93.83.147
server=/multi.uribl.com/54.93.185.237
listen-address=127.0.0.1
bind-interfaces

und verschieben die /etc/resolv.conf an die in der Konfiguration genannten Stelle /etc/resolv.conf.dnsmasq. Die DNS-Optionen in dieser Datei sind die Upstream-DNS-Server für dnsmasq.

Die Datei /etc/resolv.conf erstellen wir nun mit einer Zeile

nameserver 127.0.0.1

und bringen unserem System so bei, den lokalen DNS-Server zu nutzen.

Nun starten wir den dnsmasq noch neu

service dnsmasq restart

und sollten in der Ausgabe von

dig golem.de

in der drittletzten Zeile unseren DNS-Server sehen können:

;; SERVER: 127.0.0.1#53(127.0.0.1)

Setzen wir nun unseren Befehl zur Abfrage der URIBL erneut ab, sollten wir eine korrekte Antwort erhalten:

host -tTXT 2.0.0.127.multi.uribl.com
2.0.0.127.multi.uribl.com descriptive text "permanent testpoint"

Ist dies nicht der Fall, muss geprüft werden, ob das System den korrekten DNS-Server (127.0.0.1) nutzt.

Schreibe einen Kommentar