Categories
Internet, Unix en security

Fetchmail gebruiken om sa-learn aan te sturen

Nu zijn er al flink wat postings geweest over hoe SpamAssassin en Bayesian-filtering in te zetten, maar wat gebeurt er nog meer achter de schermen. In een van de eerste postings was al naar voren gekomen hoe vanaf de commandline de database gevuld kan worden, maar wat als de data op een IMAP-server staat?

Gelukkig zijn er op Unix duizend en één tooltjes beschikbaar en zo ook om berichte van een IMAP- of een POP3-server te halen. We beginnen dus met het installeren van fetchmail, wat dit al jaren kan en nog steeds regelmatig updates krijgt.

$ sudo apt-get install fetchmail

De tweede stap is om het bestand /etc/fetchmailrc te voorzien van de juiste informatie zoals in het voorbeeld hieronder. Wat al gelijk opvalt zijn de twee entries voor de spamuser en ook twee voor de hamuser. De mailserver plaatst berichten met een spam-label automatisch in de Junk-folder en hierdoor moet fetchmail twee folders leeghalen. Dit kan verschillen per mailserver configuratie uiteraard.

Een tweede kenmerk is dat tegen fetchmail wordt vertelt om een alternatieve Mail Delivery Agent te gebruiken en dat is /usr/bin/sa-learn in dit geval. Oplettende lezers zullen ook merken dat “-u amavis” ontbreekt, maar dat komt omdat in de SpamAssassin configuratie wordt afgedwongen om alles te leren onder de gebruiker amavis.

poll imap.example.org proto imap:
user "spamuser" password "password" ssl mda '/usr/bin/sa-learn --spam' folder 'INBOX' fetchall no rewrite
user "spamuser" password "password" ssl mda '/usr/bin/sa-learn --spam' folder 'Junk' fetchall no rewrite
user "hamuser" password "password" ssl mda '/usr/bin/sa-learn --ham' folder 'INBOX' fetchall no rewrite
user "hamuser" password "password" ssl mda '/usr/bin/sa-learn --ham' folder 'Junk' fetchall no rewrite

De derde stap is om het bestand /etc/default/fetchmail aan te passen met volgende opties. Het vertelt fetchmail om als daemon te draaien en 15 minuten na het beëindigen van een poll opnieuw te controleren of er nieuwe berichten zijn. Tevens wordt ook duidelijk gemaakt aan fetchmail dat hij onder geen beding bounce-berichten de wereld mag insturen.

OPTIONS="-d 900 --nobounce"
START_DAEMON=yes

Als laatste stap is het nu om fetchmail te starten en doordat de START_DAEMON op yes is gezet zal fetchmail ook automatisch starten als de machine herstart.

$ sudo invoke-rc.d fetchmail start

Zoals al gezegd is fetchmail redelijk lang op de markt en kent ook vele opties om sommige dingen nog verder te tunen. Een nadeel van de huidige opzet is dat voor elke nieuw bericht een sa-learn proces wordt opgestart. Het is dus wel verstandig om te kijken wat de impact is als je veel berichten per dag moet verwerken. Tevens valt er nog wat te spelen met fetchmail opties zoals expunge, limit en limitflush bijvoorbeeld.

By Hans Spaans

Unix & security consultant with a passion for Linux, Solaris, PostgreSQL, Perl and network services, but also a strong believer in open and free source, standards and content.