ORBL-Checks für qmail-smtpd



Dieser Eintrag wurde vor mehr als 2 Jahren erstellt und vor über einem Monat zuletzt bearbeitet. Eventuell ist längst sein Mindesthaltbarkeitsdatum überschritten!

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

Das ist der "vorgeschaltete" RBL-Check. das softlimit darf hier ruhig von 2000000 auf 8000000 erhöht werden. Die 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 angepaßt 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

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 ...

FAT32 und große Plat…

Permalink CC BY-NC 4.0 DEED 2004 5 27.01.2006 04.10.2019