Seite: qmail ORBL-Checks

5. Sep. 2010, 23:33 Uhr | Ohne Kommentare | 4.756x angesehen | Drucken

Einfacher Spam-Schutz für qmail mit Bordmitteln.

Es ist sehr sehr einfach zu realisieren, qmail ist installiert nach der Anleitung auf Life with qmail, ucspi und die daemontools somit auch. Erfahrung im Umgang mit supervise, svc, svstat etc. wird vorausgesetzt.

Wirkungsweise

“Werkzeug” wird nicht benötigt, das installierte ucspi behinhaltet rblsmtpd, einen dem eigentlichen qmail SMTP-Daemon vorgeschalteten SMTP-Daemon, der RBL-Abfragen macht und bei positiven Antworten die SMTP-Session mit einem Code 451 abbricht.

Als Fehlertext zum Error 451 gibt rblsmtpd den Link zum jeweiligen RBL-Eintrag aus, so daß der einliefernde Mailserver oder -client einen Grund für den Abbruch erfährt.

Verlaufen alle RBL-Anfragen negativ oder enden mit DNS-Timeouts (in dubio pro reo), übergibt rblsmtpd die begonnene SMTP-Session an qmail-smtpd.

Nach der qmail-Installation befindet sich in /service/qmail-smtpd/ das Shellscript run, das bei SMTP-Sessions abläuft. Her wird der Relay-Check eingefügt:

#!/bin/sh
#
# /var/qmail/supervise/qmail-smtpd/run
# rblsmtpd mit Relay-/spam-Check vor qmail-smtpd

# Serverliste einlesen
. /var/qmail/control/ordbservers

QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`

ORDBSTRING=””
# “-r … -r … -r …”-String konstruieren
for used_server in $ordb_servers
do
ORDBSTRING=$ORDBSTRING”-r $used_server ”
done

exec /usr/local/bin/softlimit -m 8000000 \
/usr/local/bin/tcpserver -H -R -l 0 -v -x \
/etc/tcp.smtp.cdb -c $MAXSMTPD \
-u $QMAILDUID -g $NOFILESGID 0 smtp \
/usr/local/bin/rblsmtpd $ORDBSTRING \
/var/qmail/bin/qmail-smtpd 2>&1

Die dunkelblauen Zeilen kommen hinzu, das ist der “vorgeschaltete” RBL-Check. das softlimit darf hier ruhig von 2000000 auf 8000000 erhöht werden. Die in der zweiten “dunkelblauen Zeile” eingelesene Datei /var/qmail/control/ordbservers muß angelegt werden, sie beinhaltet die Variable mit den zu verwendenden ORDBs in der gewünschten Reihenfolge, z.B.

# ORDB-Server in der Reihenfolge der Verwendung.
# rblsmtpd bricht nach der ersten “positiven” Anfrage ab.
#
# http://www.ordb.org
# http://www.spamhaus.org
# http://www.spamcop.net

ordb_servers=”relays.ordb.org sbl-xbl.spamhaus.org bl.spamcop.net”

Spam separat loggen mit multilog

multilog, das für qmail-smtpd loggt, kann filtern und in mehrere Logs gleichzeitig schreiben. Dazu muß lediglich /service/qmail-smtpd/log/run angepasst werden:

#!/bin/sh
#
# Alles nach /var/log/qmail-smtpd
# Zeilen mit “rbslmtpd:” nach /var/log/qmail-spam

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog \
t s2500000 ‘+*’ ‘-* rblsmtpd: *’ /var/log/qmail-smtpd \
‘-*’ ‘+* rblsmtpd: *’ /var/log/qmail-spam

Wieder wird das in blau geschriebene eingefügt. Log-Zeilen die also "* rblsmtpd: *" beinhalten werden statt nach /var/log/qmail-smtpd in das Verzeichnis /var/log/qmail-spam geschrieben. Verzeichnis /var/log/qmail-spam erstellen, chown qmaill.nofiles1 /var/log/qmail-spam nicht vergessen!

1 Je nachdem, in welcher Group der User qmaill ist.

Nach einem erneuten Einlesen von run durch svc -t /service/qmail-smtpd/run/ läuft das zusätzliche Logging, Beispiel:

@4000000040a377be101a98c4 rblsmtpd: 69.6.6.171 …
@4000000040a378ca0daf2a8c rblsmtpd: 69.6.79.133 …
@4000000040a378d6011abcdc rblsmtpd: 219.252.145.196 …
@4000000040a378d60645c42c rblsmtpd: 80.80.160.45 …

Schreibe einen Kommentar

Erlaubte Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


− 4 = fünf