SpamAssassin to blacklist and unblacklist

SpamAssassin has a feature to blacklist and unblacklist certain e-mailaddressen. But recently I noticed something interesting that may need some more investigation. I have all addresses for domain example.org blacklisted, but also unblacklisted certain functional addresses as is shown in the example below.

blacklist_from          *@example.org
unblacklist_from        abuse@*
unblacklist_from        hostmaster@*
unblacklist_from        postmaster@*
unblacklist_from        security@*
unblacklist_from        webmaster@*

Now I expected that webmaster@example.org was going to be unblacklisted, meaning the mail would have both a spamscore of both +100 and -100 making it effective 0 again. This modification resulted in a spamscore of +100 and makes me worry that unblacklisting will demand that the domain part needs to be specified instead of having a wildcard. This will require some more testing in the near future, but for now it may affect other installations.

IPv6 voor mailverkeer

Afgelopen woensdag was het World IPv6 Day en in navolging daarvan werden een aantal maildomeinen voorzien een AAAA-record in DNS naast het gebruikelijke A-records. Hiermee wordt zowel een IPv6 als IPv4 adres geadverteerd om mail op af te leveren. Als eerste zijn de spamtrap-domeinen om gegaan afgelopen woensdag en afgelopen zaterdag zijn enkele andere kleine domeinen omgezet. Nu de time-to-live op de oude records is verlopen komt vandaag langzaam de e-mailstroom over IPv6 op gang.

Voorlopig lijken spammers IPv6 links te laten liggen, maar hoe lang dat zo zal blijven is de vraag. Hiermee komt ook gelijk de vraag of een DNSBL voor mail over IPv6 opzetten nog wel zinvol is. Een computer met IPv6 Privacy Extensions enabled wisselt om de zoveel uur van IPv6-adres en zou dus eigenlijk eigenlijk afdwingen om op network-niveau te gaan blacklisten en misschien ook wel om te gaan whitelisten en greylisten. Hiermee komt eigenlijk ook de vraag hoe valide Spamhaus nog is en wat voor impact dit gaat hebben op de Bayesian filtering opstelling die nu zijn werk doet.

Sieve heeft ook zijn eigen poort

Sieve is een gestandaardiseerde filtertaal voor mailservers en clients. Oa Dovecot heeft een implementatie van hiervan waardoor mail op de server al kan worden gefilterd ipv op de client. Om eerlijk zijn ook de enige juiste plek IMHO, maar dat zijn details. Een andere bekende implementatie is binnen de Cyrus mailsuite en waar het precies fout is gegaan laat ik even in het midden. Heel lang is er een discussie geweest of Sieve wel de oplossing was, omdat er vele wegen waren of juist ontbraken om de regels op de mailserver te krijgen.

Gelukkig is er na lang gesteggel een redelijk veilige oplossing gekomen, maar iemand had poort 2000 uitgekozen om deze dienst op te laten draaien. Helaas was deze poort door IANA al vergeven aan Cisco SCCP om hun eigen XMMP/VoIP-oplossing op te laten luisteren. Uiteindelijk is poort 4190 uit IANA komen rollen als gereserveerde poort voor het Sieve-protocol. De migratie naar deze poort is nu begonnen en zal met Debian 6.0 waarheid worden voor veel Debian-gebruikers cq installaties. Bug 560094 heeft meer informatie.

Bayesian-filtering na ongeveer een jaar

In mei 2009 besteede ik in postings PostgreSQL voor Bayesian-filtering in SpamAssassin en Een Bayesian-filter vullen met data de nodige aandacht aan Bayesian-filtering, maar hoe staat het er nu voor? En het eerste wat zal opvallen is de titel, want er staat “na ongeveer een jaar” en de postings waren in mei. Dit klopt, maar gelukkig was de opzet van Bayesian-filtering met een PostgreSQL-backend al eerder opgezet om zeker te zijn dat het zinvol was.

Een jaar later is goed te zeggen dat de keuze voor het starten van een Bayesian-filter een goede keuze was. Veel spamberichten welke normaal gesproken niet door SpamAssassin zouden worden herkent worden nu als spam gemarkeerd. Ook het snelle leren van nieuwe type spamberichten gaat redelijk vlot, hoewel je wel voldoende berichten moet voeden aan het systeem. Naarmate de tijd vorderde ging de interval dat sa-learn draaide van eenmaal per dag naar elke zes uur, naar elke vier uur en uiteindelijk naar elk uur om bij te blijven. Zeker nadat de spamdomeinen geen bescherming meer hadden van de Spamhaus regels in de mailserver.

De komende maanden zal er een herimplementatie moeten komen van het statistiekensysteem om zo duidelijk te krijgen wat de belangrijkste regels in SpamAssassin zijn en of het mogelijk is om zonder oa SURBL, URIBL en Spamhaus te kunnen, maar ook welke SARE-regels nog zinvol zijn. Een andere optie is om te kijken of een herintroductie van Spamikaze kan plaats vinden om bepaalde e-mails toch op basis van een eigen blacklist/whitelist af te handelen.

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.