SpamAssassin op automatische piloot

In de afgelopen periode is SpamAssassin al meerdere malen aanbod gekomen en vooral in de context met Bayesian-filtering, maar er is nog veel meer. Zeker nu recentelijk release 3.3 het daglicht heeft gezien wordt het tijd om eens wat dieper in SpamAssassin te duiken.

Een van de grootste probleempunten met SpamAssassin was altijd de ruleset en de strijd met de spammers om die rules net te omzeilen. Bayesian-filtering lost een deel van dit probleem op, maar het andere probleem is de ruleset zelf. Voorheen werden rules met SpamAssassin meegeleverd en werden ze pas bijgewerkt als je een nieuwe versie van SpamAssassin installeerde. Het mag duidelijk zijn dat dit een onbegonnen strijd is, maar ook een gevaarlijke strijd. Zeker voor installaties die afhankelijk waren van DNS blacklists cq whitelists en waarbij de beheerder van de lijst besloot om zijn lijst op te heffen bijvoorbeeld.

De SARE-regels zijn een hele tijd populair geweest en zijn dat helaas nog steeds. Dit terwijl ze stelselmatig worden opgenomen in de ruleset van SpamAssassin zelf. Gelukkig heeft oa SARE er wel voor gezorgd dat er een update methode kwam die met de 3.3 release verplicht is geworden. Hiermee volgt SpamAssassin eigenlijk ClamAV in de voetsporen en is het verspreiden van een vaste ruleset overbodig geworden.

De eerste stap is eigenlijk heel simpel met het draaien van het commando sa-update als de gebruiker root op Debian. Als we nu in /var/lib/spamassassin/ kijken dan zien we het volgende:

$ ls -l /var/lib/spamassassin/ /var/lib/spamassassin/*/
/var/lib/spamassassin/:
total 8
drwxr-xr-x 3 root root 4096 2010-01-02 14:46 3.002005

/var/lib/spamassassin/3.002005/:
total 8
drwxr-xr-x 2 root root 4096 2010-01-02 14:46 updates_spamassassin_org
-rw-r--r-- 1 root root 2431 2010-01-02 14:46 updates_spamassassin_org.cf

We zien netjes de betreffende versie van SpamAssassin en in die directory de ruleset zoals die nu voor versie 3.2.5 wordt aanbevolen door SpamAssassin. Deze regels worden automatisch meegenomen als SpamAssassin de volgende keer start. Nu kan je zelf een paar regels in de crontab van de gebruiker root zetten, maar in Debian zijn al voorzieningen getroffen. Door het onderstaande aan te passen in het bestand /etc/dedault/spamassassin zal automatisch de sa-update worden gedaan en wanneer nodig SpamAssassin worden geherstart.

CRON=1

Helaas stopt hier het verhaal niet, want op dit moment worden services zoals Amavisd-new, die ook de SpamAssassin ruleset kan gebruiken, niet herstart. Op moment van schrijven staan bugs 315961 en 567205 hier nog over open. Totdat die zijn opgelost kan de volgende extra code geen kwaad aan het einde van /etc/cron.daily/spamassassin

test -f /var/run/amavis/amavisd.pid && /etc/init.d/amavis force-reload

Dit laatste is natuurlijk op eigen risico, maar het lost de bug voor mij al een redelijke tijd op.

Debian + Linux 2.6.32 + DKMS == FAIL

Bij de introductie van Linux 2.6.32 is blijkbaar besloten om anders om te gaan bij bumps in de ABI en DKMS reageert daar nog niet goed op. Helaas merk je dit bij oa VirtualBox vrij snel en zo te zien zijn ze er nog niet uit hoe ze oa bug #563246 gaan oplossen. Het onderstaande commando zorgt voorlopig voor de juiste triggers om de modules opnieuw te laten genereren.

$ sudo apt-get install --reinstall virtualbox-ose-dkms

Misschien wordt het tijd om strikter de testing-tree te gaan volgen nu de freeze voor Debian 6.0 onderweg is.

DKIM verifiëren

DKIM aka DomainKeys Identified Mail is een alternatief op SPF aka Sender Policy Framework en hoewel het lastiger is op te zetten aan de verzenderkant is het wel goed te gebruiken als ontvanger. Zeker omdat oa grote partijen zoals Google en Yahoo het ook gebruiken om hun e-mail te versturen. Gelukkig zijn er ook steeds meer kleinere partijen die DKIM gebruiken.

Op Debian kan door het installeren van Mail::DKIM het oa worden gebruikt door SpamAssassin en Amavisd-new.

$ sudo apt-get install libmail-dkim-perl

Voor SpamAssassin om gebruik te maken van DKIM hoeft in het bestand /etc/spamassassin/v312.pre de volgende regel staan zonder #-teken ervoor.

loadplugin Mail::SpamAssassin::Plugin::DKIM

Je kan los een DKIM-proxy installeren om een header te laten toevoegen of de DKIM-signature voldoet, maar als je al al gebruikt maakt van Amavisd-new dan kan het al automatisch worden gedaan door Amavisd-new. Zorg dat in het bestand /etc/amavis/conf.d/50-user de volgende regel staan en herstart de daemon.

$enable_dkim_verification = 1;

Je zal nu zien dat de volgende regels zien verschijnen in /var/log/mail.log:

Dec 29 20:36:45 server amavis[7162]: Module Mail::DKIM 0.32
Dec 29 20:36:45 server amavis[7162]: DKIM code loaded

Als je bijvoorbeeld RoundCube gebruikt dat kan je met DKIM verification plugin de status automatisch laten weergegeven als de gebruiker zijn e-mail leest. Het zal je ook opvallen waar het voorlopig niet verstandig is om e-mail te rejecten op basis van een invalide DKIM signature. Bij sommige mailinglisten worden extra regels aan de body van de e-mail toegevoegd waardoor het signature niet meer valide is.

Ubuntu 9.10

Ubuntu logoOp 29 oktober was het weer zover en werd Ubuntu 9.10 de wereld in gestuurd. Een nieuwe release die als Windows 7 killer werd aangekondigd, maar is dat zo? Berichten op oa Slashdot vertellen anders en bekende die al upgrade hebben gedaan zijn ook niet echt te spreken. Tijd om met VirtualBox eens te gaan kijken wat hier van waar is.

De eerste test met een verse installatie ziet er goed uit. De installatie ziet er goed uit en is duidelijk geleerd van projecten zoals OpenSolaris-project Caiman, maar hier stopt het ook redelijk. Ubuntu maakt nog steeds dezelfde fouten die ze niet willen oplossen blijkbaar. Mirroring, LVM en fatsoenlijke diskencryptie zijn nog steeds geen onderdeel van de standaard installer en niet de huidige oplossing met eCryptFS wat een redelijk brakke oplossing is. Een positief punt blijft wel dat je met een enkele CD-ROM een werkende desktopomgeving kan krijgen.

Na de installatie staat de eerste set update al klaar en blijft het met z’n 24MB beperkt en lijkt het beter te gaan dan bij release 8.10 en 9.04. Helaas stopt het sprookje hier en beginnen de eerste hindernissen. Ubuntu developers lijken een voorkeur te hebben om hun muis te gebruiken en alleen hun muis. GNOME is op een dermate manier bijgewerkt dat sommige functies niet meer te besturen zijn met een toetsenbord. Ook lijkt de keuze voor Empathy minder goed uit te pakken dan ze voor ogen hadden. Elke keer Empathy opstarten om de contactlijst te krijgen of je moet meerdere muisklikken willen doen om hetzelfde te bereiken. Ook starten sommige dingen niet vanzelf bij het inloggen terwijl dit wel hoort.

Kijkende naar de bugreports en naar de voorgaande releases begint er een trend te ontstaan. Ubuntu splitst Debian Unstable af en compiled de laatste versie van oa Glibc, GNOME en Linux-kernel. Vanaf dat moment worden openstaande problemen verholpen en hier beginnen ook de structurele problemen. Dit is ook waar Ubuntu anders is dan Debian en waarom Debian minder vaak released dan Ubuntu. Als Ubuntu iets meer aan QA zou doen ipv altijd op de cutting-edge te zijn dan kan het wel wat worden, maar voorlopig is het nog echt niet productierijp. Hopelijk wordt het beter met de komende LTS-release in april 2010.

Debian optimaliseren

Computers mogen dan wel sneller zijn geworden, maar onder aan de streep zijn ze meestal trager geworden in hun doen en laten. In een vorige posting werd het gebruik van filesystemen op disk al beperkt waardoor oa disken niet minder hoeven te worden aangesproken.

Gelukkig zitten diskfabrikanten ook niet stil en kan met behulp van NCQ de volgorde van diskacties opnieuw worden gerangschikt zodat de processor minder lang op de disk hoeft te wachten. Hierbij komt natuurlijk wel dat er voldoende opdrachten naar de disk moeten gaan en een van de punten om dat te doen is bij het opstarten van de machine.

Door readahead te installeren op bv Debian of Ubuntu met het onderstaande commando worden alle bestanden voor het opstarten van de machine in batch vorm ingelezen. Dit wordt ook gedaan bij het starten van de desktopomgeving. Wel een kleine waarschuwing vooraf, want bij sommige updates kan er een trigger komen waardoor readahead opnieuw gaat bekijken welke bestanden moeten worden ingelezen. Hierdoor die keer het opstarten wat trager verlopen.

$ sudo apt-get install readahead

Als je ook bv bootchart zou installeren en de grafieken gaat vergelijken zal je zien dat diskoperaties nu ineens bijna allemaal aan het begin plaats vinden ipv op willekeurige momenten. Heb wel een paar machines gezien die van soms pieken van 40 MB/s naar burst van z’n 75 MB/s zijn gegaan en hierna bijna geen diskopdrachten meer. Een gevolg hiervan was dat de machine een paar seconden eerder klaar was met opstarten. Maar resultaten kunnen verschillen per machine en nu met solid state disks blijft de vraag of dit readahead nog nodig is.