SpamAssassin und URIBL: Query blocked
Warnung
Dieser Beitrag ist bereits etwas älter und könnte daher nicht mehr aktuell sein!
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.