Anleitungen 1. Mit Maildrop Spam aussortieren. 2. Mit qSheff Spam effizienter löschen. 3. Greylisting in Qmail einbinden.
Zuerst eine kleine Ergänzung zu der Zusammenstellung:
qSheff + Spamassassin + ClamAV + SA24 + vpopmail, Suse 9.3, Strato!
Das Gespann läuft auch bei mir zuverlässig, allerdings ist noch
DCC,
Razor &
Pyzor,
iXHash dabei =). Das steigert die Spamerkennung beträchtlich.
Zuerst eine Spammail inkl. Header von DCC und Pyzor. Wen das nicht interessiert, einfach zu Punkt
2. springen.
Received: (qmail 21156 invoked by uid 60000); 20 Mar 2008 00:42:30 -0000
X-Mail-Scanner: Scanned by qSheff-II-2.1-r2 (
qSheff - Opensource Antivirus & Antispam and content filter solution for qmail)
Subject: *
****SPAM(36.5)***** Give her the ultimate pleasure
Date: Wed, 19 Mar 2008 19:42:33 -0500
Message-Id: <000701c88a23$495a6b10$9f8ebf44@Grace>
X-Spam-DCC: Body=1 Fuz1=467 Fuz2=many
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.2.1 (2007-05-02) on
xxxxx.stratoserver.net
X-Spam-Level: ************************************
X-Spam-Status: Yes, score=36.5 required=8.5 tests=BAYES_99,DCC_CHECK,
DIGEST_MULTIPLE,HTML_MESSAGE,IXHASH,LOGINHASH,LOGINHASH2,PYZOR_CHECK,
RAZOR2_CF_RANGE_51_100,RAZOR2_CF_RANGE_E8_51_100,RAZOR2_CHECK,TVD_RCVD_I
TVD_RCVD_IP4,URIBL_AB_SURBL,URIBL_BLACK,URIBL_JP_SURBL,URIBL_OB_SURBL,
URIBL_SC_SURBL autolearn=spam version=3.2.1
X-Spam-Pyzor: Reported 8 times.
MIME-Version: 1.0
Der ausführliche Bericht sieht dann so aus:
* 3.5 BAYES_99 BODY: Spamwahrscheinlichkeit nach Bayes-Test: 99-100%
* [score: 1.0000]
* 3.2 TVD_RCVD_IP4 TVD_RCVD_IP4
* 1.9 TVD_RCVD_IP TVD_RCVD_IP
* 4.5 LOGINHASH BODY: iXhash says its spam
* 2.5 IXHASH BODY: iXhash says its spam
* 0.0 HTML_MESSAGE BODY: Nachricht enth.lt HTML
* 2.5 LOGINHASH2 BODY: iXhash says its spam
* 1.5 RAZOR2_CF_RANGE_E8_51_100 Razor2 gives engine 8 confidence level
* above 50%
* [cf: 100]
* 0.5 RAZOR2_CHECK Gelistet im "Razor2"-System (
Vipul's Razor: home)
* 0.5 RAZOR2_CF_RANGE_51_100 Razor2 Spam-Bewertung liegt zwischen 51 und
* 100
* [cf: 100]
* 3.7 PYZOR_CHECK Gelistet im Pyzor-System (
Pyzor)
* 4.9 DCC_CHECK Gelistet im DCC-System
* (
Distributed Checksum Clearinghouse)
* 2.0 URIBL_BLACK Contains an URL listed in the URIBL blacklist
* [URIs: drogbsae.com]
* 1.9 URIBL_AB_SURBL Enth.lt URL in AB-Liste (
SURBL)
* [URIs: drogbsae.com]
* 1.5 URIBL_JP_SURBL Enth.lt URL in JP-Liste (
SURBL)
* [URIs: drogbsae.com]
* 1.5 URIBL_OB_SURBL Enth.lt URL in OB-Liste (
SURBL)
* [URIs: drogbsae.com]
* 0.5 URIBL_SC_SURBL Enth.lt URL in SC-Liste (
SURBL)
* [URIs: drogbsae.com]
* 0.0 DIGEST_MULTIPLE Mehrere Internettests (Razor, DCC, Pyzor, etc.)
* treffen zu
Da auf dem Server ne ganze Menge Spams eingehen und die trotz Kennzeichnung durch Spamassassin in den Postfächern der User landen, habe ich folgende Dinge eingebaut. Die Anleitung bezieht sich auf vpopmail und Qmail in Verbindung mit SA24, Suse 9.3(Strato)
2. Spam aussortieren bzw. in die Tonne kloppen mit qSheff und Maildrop
2.1 Maildrop einrichten(war bei mir schon drauf...)
1. Wir legen uns eine Config für Maildrop an, zB:
In diese Datei kommt folgendes,
von mir geändertes und vom orginal abweichendes Script. Das Orginal(
funktioniert so nicht!) befindet sich hier ->
Intelligenter Filtermechanismus mit Qmail, Spamassassin und separaten IMAP-Ordnern « 01 « 2007 « Ausgaben « ABO & ARCHIV « Linux-Magazin Online. Wichtig sind die Pfadangaben zu "vpopmail"! Das Script erstellt zu den vorhandenen Mailaccounts jeweils einen Ordner (
Spamverdacht und
Spamlernen)
Code:
## Maildrop fuer vpopmail (Strato SA24 + Qmail + SA + qSheff + ClamAV)
SHELL="/bin/bash"
#Logfile fuer maildrop
logfile "/var/log/maildrop.log"
import EXT
import HOST
VPOP="| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox"
VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST`
SPAMFOLDER="Spamverdacht"
LEARNFOLDER="Spamlernen"
log "EXT is $EXT"
log "HOST is $HOST"
log "VHOME is $VHOME"
`test "$EXT" == "doublebounce"`
if ( $RETURNCODE == 0 )
{
log "Delete doublebounce"
exit
}
`test "$VHOME" == ""`
if ( $RETURNCODE == 0 )
{
log "$EXT@$HOST - Mailboxname unbekannt -> Qmail!"
to "$VPOP"
# oder auf die harte Tour =)
# to "/dev/null/"
}
# BenutzerSpamverzeichnis erstellen, wenn nicht vorhanden
`test -d "$VHOME/Maildir/.$SPAMFOLDER"`
if( $RETURNCODE == 0 )
{
}
else
{
`/usr/local/bin/maildirmake -f "$SPAMFOLDER" "$VHOME/Maildir"`
`chown vpopmail:vchkpw -R "$VHOME/Maildir/.$SPAMFOLDER"`
`/usr/local/bin/maildirmake -f "$LEARNFOLDER" "$VHOME/Maildir"`
`chown vpopmail:vchkpw -R "$VHOME/Maildir/.$LEARNFOLDER"`
`echo "INBOX.Spamverdacht" >> $VHOME/Maildir/courierimapsubscribed`
`echo "INBOX.Spamlernen" >> $VHOME/Maildir/courierimapsubscribed`
}
if (/^X-Spam-Status: *Yes/)
{
log "Spam!!!"
# then try delivering it to a Spam folder
exception {
to "$VHOME/Maildir/.$SPAMFOLDER"
}
# Fuer den Fall, dass was mit dem Spamverz. in die Hose gegangen ist=)
# exception {
# to "$VPOP"
# }
}
else
{
exception {
to "$VHOME/Maildir/"
}
}
Jetzt setzen wir die Rechte noch!!!:
Code:
chmod 700 /etc/mailfilter
chown vpopmail.vchkpw /etc/mailfilter
Logfile anlegen:
Code:
cut > /var/log/maildrop.log
Nun müssen wir noch die
.qmail-default für die gewünschten Domains anpassen:
Bei mir liegt die unter
Code:
/home/vpopmail/domains/domain_xyz/.qmail-default
aus:
Code:
| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox
wird:
Code:
| maildrop /etc/mailfilter
Qmail neustarten! Logfiles auf Fehler prüfen! Es sollten nun nach einiger Zeit und je nach Spamaufkommen die Ordner (Spamverdacht & Spamlernen) innerhalb der Useraccounts angelegt werden und der Ordner
Spamverdacht sollte sich mit Spams füllen
Gute Mails werden normal in die jeweiligen Maildir's einsortiert.Dies gilt für alle Mailaccounts innerhalb der Domain! Im Logfile maildrop.log sollten sich folgende Einträge tummeln:
EXT is Empfänger
HOST is domain
VHOME is /home/vpopmail/domains/domain/Empfänger
Date: Thu Mar 20 02:13:04 2008
From:
sender@domain.de
Subj: Eine neue Nachricht ist eingetroffen
File: /home/vpopmail/domains/domain/Emfänger/Maildir/ (1363)
EXT is Empfänger
HOST is domain
VHOME is /home/vpopmail/domains/domain/Empfänger
Spam!!!
Date: Thu Mar 20 01:42:31 2008
From: "Dominc petek" <schimpte1978@2ndne.jp>
Subj: *****SPAM(36.5)***** Give her the ultimate pleasure
File: /home/vpopmail/domains/domain/Empfänger/Maildir/
.Spamverdacht (6214)
Auf den Ordner
Spamlernen gehe ich an dieser Stelle nicht ein, da der SA bei mir automatisch den Spam lernt. Der interessierte Leser wird aber die Bedeutung dieses Ordners einzuordnen wissen.
2.2 qSheff härter durchgreifen lassen(löscht Spammails)
Qsheff ist in der Lage, Spammails laut
qsheff.rules zu entsorgen, nur nicht besonders effizient. Die Mails werden ja durch Spamassassin gekennzeichnet und per qmail-queue zurückgeschrieben. Die Filterung lässt sich extrem steigern, wenn wir folgende Rules in die
qsheff.rules einfügen:
Code:
h: (X-Spam-Status:)(Yes)
h: (X-Spam-Flag:)(YES)
Dann überprüfen wir noch folgende Einträge in der
qsheff.conf
Code:
enable_quarantine = 1
enable_header_filter = 1
Die Headerprüfung reicht hier völlig aus, da wir nur nach der & - Verknüpfung von [X-Spam-Status:] + [YES] oder [X-Spam-Flag:] + [Yes] suchen.
Alle Mails, die mit dem
X-Spam-Status = Yes oder
X-Spam-Flag = YES im Header markiert sind, werden nun von qSheff gelöscht bzw. gelangen nicht mehr zu den Usermailaccounts. Im Grunde kann man sämtliche anderen Spamrules aus der Datei
qsheff.rules entfernen. Nur beiden Spamtags übernehmen jetzt die Arbeit =) Wer mutig ist, kann die Option "enable_quarantine = 1" noch auf "0" setzen. Nach einiger Zeit das Logfile von qSheff sichten:
Code:
19/03/2008 18:51:34: [qSheff] SPAM, queue=0056.....,....., rule=`(X-Spam-Status:)(Yes)
Die Variante mit qSheff entlastet auch den Server merklich, da die Spammails nicht mehr hin und her
gequeut werden.
Nun hat aber Maildrop weniger zu tun...=)
Für den Fall, dass der
qmail-scanner noch parallel zum qsheff + SA + Clam läuft, sollte die Datei
/var/qmail/supervise/qmail-smtpd/run
editiert werden. Macht ja auch keinen Sinn, alles doppelt auf Spam und Viren zu prüfen. Der Speicher und die CPU werden's danken. Bei mir war das so...warum auch immer=). Wir entfernen folgende Zeilen oder ergänzen jeweils ein
#.
...
# QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
# export QMAILQUEUE
...
Wenn die Datei schon einmal offen ist, können wir einen RBL-Check einfügen und die Berufsspamer an der Haustüre abwinken =).
...
/usr/local/bin/tcpserver -R -D -v -p -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
rblsmtpd \
-r zen.spamhaus.org \
-r bl.spamcop.net \
-r list.dsbl.org \
/var/qmail/bin/qmail-smtpd localhost /bin/cmd5checkpw /bin/true 2>&1
...
Siehe dazu ->
Open Source Heaven HowTo: Configure SpamAssassin on QmailRocks
3. Greylisting für Qmail mit "qgreylistrbl"
Eine elegantere Lösung bietet
qgreylistrbl. Es ersetzt den RBL-Check(Blocking) durch Greylisting nur für Dialin-Rechner und Rechner, die auf einer RBL gelistet sind. Die Installation erfolgt analog zu der Beschreibung auf der Webseite des Autors. README lesen! Einbinden in die /var/qmail/supervise/qmail-smtpd/
run:
...
/usr/local/bin/tcpserver -R -D -v -p -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
/var/qmail/bin/qgreylistrbl.pl \
/var/qmail/bin/qmail-smtpd localhost /bin/cmd5checkpw /bin/true 2>&1
...
Qmail Neustart
Dann /var/log/mail auf folgende Einträge überprüfen:
Code:
...
Mar 21 04:59:29 xxxx qmail: 1206071969.603687 status: local 0/10 remote 0/20
Mar 21 04:31:47 xxxx greylist[389]: IP 83.174.223.11 new - temp error for h83-174-223-11.adsl.ufamts.ru
Mar 21 04:34:10 xxxx greylist[860]: IP 83.174.223.11 back too soon - temp error again
Mar 21 04:40:01 xxxx greylist[1985]: starting greylisting sub directory clean...
Mar 21 05:00:41 xxxx greylist[6019]: IP 85.89.19.65 new - temp error for 85..89.19.65.3p.ntebb.no
Mar 21 05:00:42 xxxx greylist[6019]: Cannot create File /var/qmail/qgreylistrbl/85/85.89.19.65, I'll check if I have to create directory.
Mar 21 05:00:42 xxxx greylist[6019]: Creating Directory /var/qmail/qgreylistrbl/85
Mar 21 05:00:42 xxxx greylist[6019]: second attempt to create File /var/qmail/qgreylistrbl/85/85.89.19.65 successful
Mar 21 16:34:17 xxxx greylist[30092]: IP 195.234.61.72 is listed in RBL zen.spamhaus.org: nat2.ricona.net.ua
Mar 21 16:34:20 xxxx greylist[30092]: IP 195.234.61.72 new - temp error for nat2.ricona.net.ua
...
Bravo, Greylisting ist nun aktiv =). Wieder eine ganze Menge Systemresourcen eingespart und 80% der Müllschleudern gleich ausgesperrt...
Für den Fall, das der globale Spam und Virenscanner (Checkboxen:
Spamfilter für alle Domains aktivieren &
Antiviren-Filter für alle Domains aktivieren*,
Die einzelnen User können die Mailfilter für jede Domain separat konfigurieren und ihn de-/aktivieren.) in Visas neu gesetzt werden, so wird die /var/qmail/supervise/qmail-smtpd/
run wieder überschrieben, was das Greylisting wieder entfernt!!! Auch die
qmail-scanner-queue.pl wird wieder eingetragen, was den "
qmail-scanner" wieder aktiviert. Nix gut! Um das zu verhindern, editieren wir die:
/usr/local/visas/templates/mailfilter/qmail/run
...
/usr/local/bin/tcpserver -R -D -v -p -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
/var/qmail/bin/qgreylistrbl.pl \
/var/qmail/bin/qmail-smtpd
...
und die :
/usr/local/visas/templates/mailfilter/qmail/run-scan
...
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
# QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
# export QMAILQUEUE
exec /usr/local/bin/softlimit -m 300000000 \
/usr/local/bin/tcpserver -R -D -v -p -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
/var/qmail/bin/qgreylistrbl.pl \
/var/qmail/bin/qmail-smtpd localhost /bin/cmd5checkpw /bin/true 2>&1
...
Gruss Rico