Archief

Berichten met tag ‘e-mail’

Sieve heeft ook zijn eigen poort

12 januari 2010 Reacties uit

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

6 januari 2010 Reacties uit

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

29 december 2009 Reacties uit

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.

Marketeers en Tweets

22 december 2009 Reacties uit

Het was te verwachten uiteraard, maar bij het bekijken waarom sommige spamberichten niet netjes naar de Junk-folder viel me iets grappigs op. Sommige partijen zijn begonnen om niet alleen hun responses te monitoren met Google Analytics, maar laten nu ook automagisch een Tweet aanmaken om zo hoger op sommige lijsten te scoren. Of het fair is laat ik even in het midden, maar het lijkt wel langzaam een trend te worden om Twitter-achtige dingen te gebruiken in marketing en de kans dat gebruikers dit naar elkaar doorsturen is vrij klein.

describe LOCAL_TWEET Mailing with Tweet-API
rawbody __A_LOCAL_TWEET /\bhttp:\/\/api\.tweetmeme\.com\/share\?url/i
rawbody __B_LOCAL_TWEET /\bunsubscribe\b/i
meta LOCAL_TWEET ( __A_LOCAL_TWEET && __B_LOCAL_TWEET )
score LOCAL_TWEET 0.001

Met de bovenstaande ruleset voor SpamAssassin is te controleren wat de impact gaat zijn. Een paar dagen loslaten op de honeypot die het bayesianfilter van kenmerken voorziet zou voldoende moeten zijn om te kijken wat de score daadwerkelijk moet gaan zijn en of het effectief is.

Een Bayesian-filter vullen met data

18 mei 2009 Reacties uit

In een vorige posting werd SpamAssassin zo geconfigureerd dat het Bayesian-filter gebruik maakte van PostgreSQL om de data in op te slaan. Ook werd aangegeven dat er niet automatisch werd geleerd met de optie bayes_auto_learn 0 om zo te voorkomen dat het filter zijn eigen waarheid ging verzinnen van wat spam was en wat niet.

Een manier om aan data te komen voor het filter is door een mailbox met alleen ham en een mailbox met alleen spam regelmatig te importeren. De ham is natuurlijk nog wel gemakkelijk aan te komen door deze mailbox aan te melden op een paar mailinglists en nieuwsbrieven waarvan je weet dat ze te vertrouwen zijn en bijna 100% non-spam zijn en dus geschikt zijn voor de ham mailbox.

Voor spam zelf wordt het wat lastiger. Je kan vertrouwen op wat je gebruikers markeren als spam en dan importeren, maar hierdoor loop je altijd achter de feiten aan. Een makkelijkere en betrouwbare methode is door spamtraps op te zetten, maar het kan even duren voordat deze functioneel zijn. Je kan op sommige websites die jezelf onder beheer hebt de onderstaande string opnemen en hopen dat de robotjes van e-mailverzamelaars het oppakken.

<!-- <a href="mailto:spamtrap@example.org">spamtrap@example.org</a> -->

Het kan lang duren voordat er resultaat is. Een tweede optie kan zijn door in bepaalde groepen zoals bijvoorbeeld in nl.test op usenet te posten en dit kan redelijk snel resultaat opleveren. Een derde optie kan zijn door een PGP-key te uploaden naar de keyservers, maar deze methode is niet aan te bevelen aangezien het echt vervuiling is en je wordt traceerbaar.

Nu je spam en ham netjes in hun eigen mailbox binnenkomen kan je met de volgende commando’s op gestelde tijden je filter opschonen en vullen met spam en ham:

sa-learn -u amavis --force-expire
sa-learn -u amavis --spam --mbox spam.mbox
sa-learn -u amavis --ham --mbox ham.mbox

Zoals te zien is forceer ik dat alles gedaan wordt onder de gebruiker amavis aangezien amavisd-new de daemon is die tussen Postfix en SpamAssassin en ClamAV zit om de mail te scannen, te beoordelen en in geval van een virus ook in quarantine te plaatsen. Er kan binnen SpamAssassin met de optie bayes_sql_override_username amavis in local.cf hetzelfde effect worden afgedwongen.