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.
"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"
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.nofiles
1 /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 ...