[Postfixbuch-users] sa-learn von Spamassassin

Tobi tobster at brain-force.ch
Mo Jan 5 16:23:44 CET 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Wenn du eh bereits dovecot nutzt wäre dann allenfalls das
dovecot-antispam Plugin (http://wiki2.dovecot.org/Plugins/Antispam)
ein Blick wert?

Am 05.01.2015 um 15:27 schrieb Steffen Mutter:
> 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/mhttp://wiki2.dovecot.org/Plugins/Antispamailboxes/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 :-)
> 
> 
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBAgAGBQJUqqyAAAoJEDUc5iWoaKTkzoEP/RmgHCfx/D+Jxljbmptq0GDx
zGbKT0wjZriwBegQDXmyg9hcSq3oRO0PVBI4yD0yWIHyWbW64sz3jp9ZrzppnloU
0pd+lVWPWtUs6jygQ0tTLToJrgKvEcS7L2ap2NhzUArSt2Mo9AHJ81fBlm3lJ1N6
IXQt7q5EjY/loU65Hmwg4Y2tGvAPzHNjapZYHhGNv8pSjCDXcyjHkjYsR/OT3DWy
uL0dU5k4Q3U/UHzpfbCSuTJSJZnLKMjC6hb7ALkHS4HUSEkgJqEbDhWjMS+R/YWU
c9hzcJaDDyoq98mr1UaDIT52fu2pn2PNbgtzNOX0/jtZOq3l06581n4hhYIyGQZP
aZm3rtlCqWKqvpQAIZE6h3jSWbjqLZ0c/Z8Mlv3pk5YdoIcXqidJfyKY6zqi8y21
eYwBaxkJZQvfN2MBHTWA1abdUFxV54OvugfciZWqGf2il4L5fH2qnJ7QrERFfgCp
GvurN9eBKuK4UNnppJ06Wf0s/jlZvv2gphgLRslK1Acq4NblGqK5fSPGhS3iH4i0
Bg7SpGfMArNrLSc5GqaV5R9GkolkxGkizAq8PJJKRIvKBV2UHx0TWzPoCLaX5vnn
iWmF3M+tglrCOzLX1dSN9o60E+XXi8Bc0vGHEgDS472jiPWpiRfEWmmDJnROHNZL
8P6OdMuaTBb1V1kODcCq
=CumK
-----END PGP SIGNATURE-----



Mehr Informationen über die Mailingliste Postfixbuch-users