Assassinar l'spam diàriament

Fa potser ja uns quatre o cinc mesos que vaig començar la meva particular creuada contra l'spam, i de ben segur que molts de vosaltres ja us esteu plantejant agafar les armes, sinó ho heu fet ja...

Abans crec que em feia fins i tot gràcia aquells esporàdics missatges que pretenien que augmentés la meva virilitat d'una forma o altre, però quan vaig començar a rebre el doble de porqueria que missatges legítims em vaig emprenyar. En aquells circumstàncies vaig maleir totes les planes webs on havia deixat rastre d'alguna de les meves adreces de correu... però ja era massa tard.

Els spammers sembla que s'ho curren cada cop més i són lluny de ser precisament uns beneits. Apart de fer anar robotets que rastregen planes a la cerca d'emails a l'estil dels més famosos cercadors (amb les conseqüents complicacions extres que un s'ha de buscar per mostrar el seu email i sortir-ne indemne), semblen també valer-se de la mala pràctica generalitzada que impera a l'hora de reenviar cadenes de missatges amb tots els missatges acumulats al darrera (exposant públicament adreces de mil i una persones). Aquesta és una equivocació que tots hem comès alguna vegada i que es podria solucionar fàcilment estant una miqueta més al cas, dividir entre grups els destinataris i ajudant-nos de funcionalitats com la còpia oculta.
Tornant al fil del tema, fart d'aquest panorama desolador, vaig buscar una solució, i aquesta es diu SpamAssassin, una pràctica utilitat basada en mòduls i scripts de Perl per lluitar contra aquest assetjament diari. Aquest programa conté moltes aproximacions: tests sobre les capçaleres i els cossos dels emails basats en regles definides que se'ls hi assigna una puntuació; per llistes blanques (emails acceptats) o negres (emails refusats) d'adreces especificades de forma manual o automàtica; per filtres bayesians; col·laborativament via xarxa amb servidors dedicats a detectar l'spam; i altres mètodes (llengua dels missatges descartables, llistes de bloqueig d'acord amb DNS, etc.)

El meu lector preferit és l'Evolution, el qual es pot integrar amb l'spamassassin funcionant com a client. També pot fer-se d'una forma més sofisticada per exemple si ens trobem en una xarxa.
Si un rep poc spam i es fàcilment identificable (sempre d'un domini, adreça o amb unes paraules concretes) també pot filtrar-se prescindint de l'spamassassin, utilitzant les regles de filtratge del lector de correu.
Després de l'instal·lació del mata-spam, vaig veurem gratament sorprès pels resultats i se'm va filtrar gran part, i només vaig haver d'afegir alguna que altra adreça a la llista blanca o negra, escrivint a .spamassassin/user_prefs una cosa com aquesta:

whitelist_from *dominiamic.org
blacklist_from *filldeXXX.com
blacklist_from bronca@quenet.es

Van ser uns dies molt macos... però a mesura que passaven les setmanes l'spam que s'escapava dels controls pujava en nombre i vaig sentir pànic :-O
La solució era recòrrer als filtres bayesians, que fins llavores no havia utilitzat i que permetien fer aprendre al programa què és spam i què no.
El procediment és anar agafant 'mostres representatives' (com més extenses millors) de l'Spam i del que no ho és i posar-ho en subcarpetes que seràn analitzades.
Per exemple, creant 2 subcarpetes (Txitxa, Ronya) a l'Evolution sota la carpeta d'Entrada, faríem des del terminal al nostre directori 'home' d'usuari:
sa-learn --ham --showdots --mbox evolution/local/Inbox/Txitxa/mbox
sa-learn --spam --showdots --mbox evolution/local/Inbox/Ronya/mbox
Un cop fet podem eliminar el contingut d'aquestes subcarpetes. A mesura que passin els dies podem anar col·locant a 'Ronya' els missatges spam que es resisteixin i marcar-los a conèixer com a spam via sa-learn --spam.
A mesura que anem fent-ho notarem la diferència. Un procediment molt més 'user-friendly' d'aquesta metodologia bayesiana pot trobar-se a lectors com Mozilla ThunderBird, a Evolution hem de recòrrer a la consola o scripts (però no crec que fos difícil fer un GUI o incloure un mòdul).
L'increment d'spam que fugia de control que vaig anar experimentar segurament era degut a que nous tags aparexien en aquests missatges, els quals no eren inclosos a les regles per defecte de l'spamassassin que venia per defecte a la meva distribució. Desgraciadament sembla que no és trivial oferir actualitzacions de la regla (a l'estil antivirus). De totes maneres, ajudant-nos dels filtres bayesians i altres mètodes (molts dels que encara tinc que estudiar), ens treiem un bon pes de sobre.

Si teniu cap dubte, us recomano que feu una ullada a la documentació i al wiki.
Paral·lelament, sembla que servidors com Yahoo tenen polítiques antispam i l'usuari pot ajudar col·laborant marcant aquells que són spam i passen del filtratge. El que desconec és quan es descarrega email via pop, si es descarreguen també els filtrats com a spam o no?
Pels usuaris de Windows o altres plataformes no lliures, existeixen solucions comercials basades en SpamAssassin o fent servir 'emuladors de Unix' com el Cygwin. Si no poden tenir alguna d'aquestes, poden considerar molt seriosament el algun dels gestors de correu del Mozilla.
Vinga, això és tot, no esquitxeu de massa sang els vostres missatges!

Commenting on this Blog entry is closed.

Comments

Joé! Ha sigut tu publicar aquest article (molt interessant, això sí) i jo rebre el meu primer mail-spam! :@ Sens dubte, el fet que ahir em registrés a un parell de portals hi va tenir molt a veure (això em passa per no llegir les condicions de privacitat... :().

Essent un fidel usuari de Mozilla, avui he començat a usar les funcionalitats anti-spam del meu lector de correu. Quan rebi més 'merda' ja veurem com funciona. Per cert, que a banda del Thunderbird, la suite integrada Mozilla també permet fer-ho (a Tools->Junk Mail Controls).

Animat per l'spam (¿?), m'he instal·lat també l'AdBlock, per eliminar/ocultar els molestos banners (alguns fins i tot en Flash i amb soroll!). El recomano.

---
`You know,it's at times like this,trapped in a spaceship with a man from Betelgeuse,about to die asphyxiated in deep space that I really wish I'd listened to what my mum told me when I was young.'
`Why,what did she tell you?'
`Dunno,didn't listen.'