[Postfixbuch-users] sa-learn von Spamassassin
Steffen Mutter
steffen at gnuher.de
Mo Jan 5 15:27:16 CET 2015
Moin Peer,
vielen Dank dafür, dass Du Dir die Mühe gemacht hast mein Problem
aufzudröseln.
Am 05.01.2015 um 10:03 schrieb Peer Heinlein:
> Am 01.01.2015 um 17:53 schrieb Steffen Mutter:
>
>
>> Die Mailbenutzer werden von mir gerade darauf getrimmt ihre SPAM-Mails
>> die Spamassassin nicht gleich (per global-sieve-script) in INBOX.Junk
>> verschiebt auch dort abzulegen.
> Bau einen Spamfilter der das Zeug gleich in Echtzeit ablehnt, dann hast
> Du keinen Junk-Folder mehr und das Problem stellt sich nicht.
Genau das will die werte Kundschaft ja nicht haben, die wollen alle ihre
Spams zugestellt bekommen, falls deren Kundschaft mal wieder einen
Mailserver im Einsatz hat, der gegen die guten Sitten verstößt. Da gibt
es z.B. einen der keine Spams verfasst, aber eine Dial-Up-IP hat, kein
FQDN Eintrag und noch so ein paar Nettigkeiten - da war ich genötigt
seine Domain in eine whitelist einzutragen.
>> Nun habe ich sa-learn entdeckt, finde aber irgendwie keine Anleitung,
>> wie ich hier die Mdbox-Folder durchsuchen kann.
> Gar nicht. mdbox kann nur Dovecot, das kann sa-learn nicht. Du könntest
> es in ein mbox (!=mdbox!) exportieren.
Genau das habe ich gemacht.
>
>> Wünschenswert wäre eine Lösung in der Art:
>> sa-learn durchsucht den Folder INBOX aller User und taggt diese Mails
>> als HAM.
> ...und fängt sich dabei auch Spam-Mails ein, die als Ham gelernt werden.
Beim nächsten Durchlauf werden die falschen Hams als SPAM getraggt.
Nicht wirklich schlimm, wenn ich der Mailingliste der SPAM-assassin-user
Vertrauen schenken darf. False negatives werden dann rausgeschmissen und
brav als SPAM erkannt. Mehrere Durchläufe die mein Script inzwischen
hinter sich gebracht hat beweisen das.
> Welche Qualität soll die Filterung am Ende haben wenn da so ein
> Durcheinander trainiert wird?
Spamassassin scheint das nicht wirklich zu stören, wenn ich mir da so
anschaue, was dieser nach der Lernphase so ein- und aussortiert hat.
>
>> INBOX.Junk wird duchsucht und als SPAM getaggt, alle Mails darin die
>> älter als 24 h sind gelöscht und alle Mails die als gelöscht markiert
>> werden endgültig gelöscht (Mdbox Eigenart, expunge reicht da ja nicht)
> ...und die Nutzer verschieben jede Menge Mailinglisten- und
> Newsletter-Mails, die alle double-opt-in und absolut clean sind, in den
> Junk-Folder.
Dann sind sie selber schuld. Jeder hat eine E-Mail von mir bekommen, in
dem genau erklärt wird, wie das funktioniert und dass sie selber nach
falschen Eintragungen sowohl in deren INBOX als auch in INBOX.Junk
suchen sollen.
> Welche Qualität soll die Filterung am Ende haben wenn da so ein
> Durcheinander trainiert wird?
Wird sich zeigen - denkbar ist auch eine Umstellung von INBOX auf
INBOX.ham für falsch eingeordnete Mails.
> /srv/vmail/users/domain/user/mdbox/mailboxes/Junk/
> Learned tokens from 0 message(s) (0 message(s) examined)
> Klar, er hat ja auch keine Mails im mbox-Format gefunden.
Habe mal mein Script angehängt, scheint brav das zu machen, was es
machen soll. Ich hoffe ich hab's auch ganz verständlich dokumentiert,
aber als Chefguru was Dovecot und Postfix angeht, denke ich nicht dass
etwas unverständlich ist. Wenn irgendwo Denkfehler meinerseits drin sein
sollten, gerne Bescheid geben.
Das Script läuft als Cronjob 1x täglich um 0:00 h und schickt die
Ausgabe an die Admins.
--------- SPAMschool.sh ----------
# sa-learn script with wrapper for dovecots mdbox mailcontainers
# namespace is set to domain/username aka %d/%n in dovecot.conf
# seperator is . INBOX is root, subfolders created automatically are:
# INBOX INBOX.Drafts INBOX.Junk INBOX.Sent INBOX.Trash and marked as
special meaning
# Path to (my) maildir, needs to be changed in most cases /var/mail/ or
something more 'standard'
MAILPATH=/srv/vmail/users
cd $MAILPATH
# script suggests: /srv/vmail/users/domain.tld/user as HOME
# doveadm backup -u username at domain.tld maildir:/tmp/SPAMschool
# sa-learn --no-sync --ham /tmp/SPAMschool/ # ham zuerst, falls da
false positives drin sind...
# sa-learn --no-sync --spam /tmp/SPAMschool/.Junk # jetzt den Spam,
lieber eine mehr als eine zuwenig..
# rmdir /tmp/SPAMschool -rf
# sa-learn --sync
# sa-learn --dump magic
for DOMAIN in * ; do
# needs to be changed if your namespace is different
cd $MAILPATH/$DOMAIN
for USER in * ; do
if doveadm user $USER@$DOMAIN > /dev/null ; then
echo cleaning up /tmp/SPAMschool/ directory...
rm /tmp/SPAMschool -rf
echo SPAMschool lesson for $USER@$DOMAIN initialized...
doveadm backup -u $USER@$DOMAIN
maildir:/tmp/SPAMschool
echo examining INBOX as ham...
sa-learn --no-sync --ham /tmp/SPAMschool/
echo examining INBOX.Junk as spam...
sa-learn --no-sync --spam /tmp/SPAMschool/.Junk
echo $USER@$DOMAIN lesson finished.
echo DONE!
echo
else
echo $USER@$DOMAIN does not exist, deleting...
# rm -rf $MAILPATH/$DOMAIN/$USER
echo Proceeding with next entry!
echo
fi
done
done
echo
echo Cleaning up:
rm /tmp/SPAMschool -rf
echo Removing /tmp/SPAMschool...
doveadm expunge -A mailbox INBOX.Trash 3h
echo Sweeping:
echo Mails in Trash folders older 3h: expunged
doveadm expunge -A mailbox INBOX.Junk savedbefore 3d
echo Mails in Junk folders older 3d: expunged
# QUOTA
# I use MailQuota so if you don't use quota, comment these out
doveadm purge -A
echo All mails marked as expunged deleted completely this is a dovevot
MDBOX special!
doveadm quota recalc -A
echo calculating Quotas:
doveadm quota get -A
# QUOTA end
echo
echo Spamassassin is fed up...
sa-learn --sync
echo BURP!
echo Spamassassin Database synced
echo Training statistics:
sa-learn --dump magic
Scheint ganz gut zu laufen und false positives sind nicht so schlimm,
finde ich da es dem Benutzer obliegt das wieder richtig zu stellen.
LG,
Steffen
PS: Postfixbuch v 2015 ist bereits von mir bestellt, bei dem Umzug des
Servers bin ich stellenweise echt ins Schleudern gekommen, da ich auch
von Cyrus auf Dovecot umgestellt habe. Vielen Dank für die hervorragende
Arbeit.
Das Problem bei mir war, dass in dem Kapitel Dovecot als Blackbox vor
Postfix leider die Aufragen der postmap hash Datenbanken und deren
Abstimmung zueinander beim Postfix nicht so genau erklärt wurden:
relay_domains (<- sehr ausführlich und verständlich, hat problemlos
funktioniert)
virtual_alias_domains (werden nur gebraucht wenn es _nur_
Mailweiterleitungen gibt. Bei gemischten Setups braucht man zwingend
einen Eintrag in relay_domains und Einträge in virtual_alias_maps
_keinesfalls_ in virtual_alias_domains!!!)
virtual_alias_maps (Mailumschreibungen an andere e-Mailadressen, auch
externe Domains)
transport_maps (??? bei mir leer)
alias_maps (Umschreibung von wichtigen Standardmailempfängern auf lokale
Nutzer. Kann problematisch werden, wenn auch die lokalen Nutzer z.B. bei
einer Nutzung durch externe Mailclients durch das AUTH-Setup über
Dovecot eine komplette E-Mailadresse für den Loginnamen brauchen. Beißt
sich tierisch mit den login-setups auf der shell)
canonical_maps (das dürfte die Wahl sein um lokale Benutzer auf
E-Mailadressen umzuschreiben also in alias_maps gehen mails an root ->
steffen in canonical_maps gehen Mails an steffen an steffen at irgend.wo)
Das steht sicher alles genaustens im neuen Postfixbuch...
Da habe ich viel mit try & error herumprobieren müssen.
Ganz toll ist auch, wenn man bei Dovecot die Konfiguration (dann in
mehreren einzelnen Dateien aufgedröselt bei Debian) editiert und ein #
nicht entfernt. Die daraus resultierenden Meldungen in den Logfiles
waren legendär :-)
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <https://listi.jpberlin.de/pipermail/postfixbuch-users/attachments/20150105/769ef2ab/attachment.html>
Mehr Informationen über die Mailingliste Postfixbuch-users