SpamAssassin als Milter
weihnachtszeit, ferienzeit.. nachdem diverse renovierungsarbeiten in der wohnung erledigt waren, hatte ich mal wieder etwas zeit. mich hatte schon laenger die milter schnittstelle in postfix gereizt, weil es damit ja theoretisch moeglich sein muesste spam noch im smtp dialog abzuweisen, statt diesen erst nachtraeglich in spam ordner zu sortieren. als ich postfix seinerzeit installiert hatte, gab es die milter schnittstelle noch nicht.. als sie dann vor einem knappen halben jahr in den stable releases verfuegbar wurde, gab es noch keine ordentlichen anleitungen und es funktionierte auch noch lange nicht jedes milter programm mit postfix zusammen. es wurde also mal wieder zeit eine kleine recherche zu starten, was es so gibt und was funktionieren koennte. folgende programme habe ich finden koennen: MIMEDefang, milter-spamc, smtp-vilter und spamass-milter.
zeile 2: eigentlich unwichtig, aber alle meine sockets liegen in /tmp
zeile 3: -f = fork into background, -p sollte ersichtlich sein, -r 7 = ab 7.0 spampunkten mail rejecten, -m = mailbody nicht veraendern (wichtig, denn das kann die postfix milterschnittstelle nicht!), -a mail von smtp-auth verbindungen ignorieren ("WITH_ADDAUTH_PATCH=yes" beim compilen nicht vergessen) und -- (ab hier optionen an spamc weiterreichen) -u spamd = spamc unter dem user spamd starten, so ist das bei mir naemlich konfiguriert, da ich die meissten mails an virtuelle postfaecher zustelle, sprich keine wirklichen systemuser existieren
zeile 4: ist eigentlich egal, sollte nur ein gueltiger systemuser sein
zeile 5: das ist wichtig, denn sonst kommt postfix nicht an das socket
zeile 6: hier ist g+w wichtig, denn in der defaulteinstellung kann die gruppe nicht auf das socket schreiben - das waere hier postfix.
mein system ist leider nicht ganz so flott, daher musste ich im rc-script in zeile 38 noch ein "sleep 1" einfuegen, sonst war das programm noch nicht weit genug gestartet um das socket erstellt zu haben, wenn das script schon versucht die besitzrechte anzupassen. nun kann man spamass-milter starten.
jetzt muss man postfix noch mitteilen, dass er seine mails da durchzujagen hat. dazu traegt man in der main.cf folgendes ein:
manchmal sieht man vielleicht noch diese meldung:
nun hoffe ich, dass mein taeglicher spamreport (was so in den spam-ordner wegsortiert wurde) wieder etwas kuerzer wird.. der war in den letzten wochen naemlich leicht ausgeufert.
- MIMEDefang erschien mir fuer mein kleines vorhaben als etwas zu gross
- milter-spamc sieht ziemlich vielversprechend aus, scheint auch genau das zu koennen was ich brauche, ist aber leider nicht in den freebsd ports vorhanden, sonst waere das wohl das mittel meiner wahl geworden
- zu smtp-vilter habe ich keinen downloadlink finden koennen.. das programm scheint kommerziell zu sein und kann zudem auch wieder mehr als ich brauche
- bleibt also nur spamass-milter.. opensource, einfach zu findender downloadlink und es funktioniert angeblich auch mit postfix
spamass_milter_enable="YES"
spamass_milter_socket="/tmp/spamass-milter.sock"
spamass_milter_flags="-f -p ${spamass_milter_socket} -r 7 -m -a -- -u spamd"
spamass_milter_socket_owner="spamd"
spamass_milter_socket_group="postfix"
spamass_milter_socket_mode="664"
zeile 2: eigentlich unwichtig, aber alle meine sockets liegen in /tmp
zeile 3: -f = fork into background, -p sollte ersichtlich sein, -r 7 = ab 7.0 spampunkten mail rejecten, -m = mailbody nicht veraendern (wichtig, denn das kann die postfix milterschnittstelle nicht!), -a mail von smtp-auth verbindungen ignorieren ("WITH_ADDAUTH_PATCH=yes" beim compilen nicht vergessen) und -- (ab hier optionen an spamc weiterreichen) -u spamd = spamc unter dem user spamd starten, so ist das bei mir naemlich konfiguriert, da ich die meissten mails an virtuelle postfaecher zustelle, sprich keine wirklichen systemuser existieren
zeile 4: ist eigentlich egal, sollte nur ein gueltiger systemuser sein
zeile 5: das ist wichtig, denn sonst kommt postfix nicht an das socket
zeile 6: hier ist g+w wichtig, denn in der defaulteinstellung kann die gruppe nicht auf das socket schreiben - das waere hier postfix.
mein system ist leider nicht ganz so flott, daher musste ich im rc-script in zeile 38 noch ein "sleep 1" einfuegen, sonst war das programm noch nicht weit genug gestartet um das socket erstellt zu haben, wenn das script schon versucht die besitzrechte anzupassen. nun kann man spamass-milter starten.
jetzt muss man postfix noch mitteilen, dass er seine mails da durchzujagen hat. dazu traegt man in der main.cf folgendes ein:
smtpd_milters = unix:/tmp/spamass-milter.sock
wenn einen postfix danach mit derartigen meldungen beglueckt:Dec 26 02:43:02 mailserver spamass-milter[4800]: SpamAssassin: st_optionneg[134600192]: 0x3d does not fulfill action requirements 0x13dann muss man noch eine weitere zeile in die main.cf einfuegen:
Dec 26 02:43:02 mailserver postfix/smtpd[4773]: warning: milter unix:/tmp/spamass-milter.sock: can't read SMFIC_OPTNEG reply packet header:
Unknown error: 0
Dec 26 02:43:02 mailserver postfix/smtpd[4773]: warning: milter unix:/tmp/spamass-milter.sock: read error in initial handshake
milter_end_of_data_macros = b i j _ {daemon_name} {if_name} {if_addr} {mail_addr}
nun sollte alles funktionieren...manchmal sieht man vielleicht noch diese meldung:
Dec 26 03:51:57 mailserver spamass-milter[19292]: Could not retrieve sendmail macro "i"!. Please add it to confMILTER_MACROS_ENVFROM for better spamassassin resultswarum die kommt weiss ich nicht.. ich konnte sie auch nicht zuverlaessig reproduzieren, aber sie scheint den laufenden betrieb auch nicht zu stoeren.
nun hoffe ich, dass mein taeglicher spamreport (was so in den spam-ordner wegsortiert wurde) wieder etwas kuerzer wird.. der war in den letzten wochen naemlich leicht ausgeufert.
geschrieben am 26. Dezember, 21:06 in geeky · 946x gelesen
keine kommentare · kommentieren