spam

E-postproblem sucks

Som flera av er troligen märkt vid det här laget har vi under natten mellan torsdag och fredag haft en del störningar i vårt nya e-postsystem. Problemet är löst sedan kl. 10:00 idag, och även om en del förseningar fortfarande förekommer så levereras all e-post som den skall.

Problemet uppstod när samtliga databasservrar överbelastades samtidigt, vilket inträffade till följd av en uppdatering som gjordes under torsdagsförmiddagen. I vårt arbete för att utöka användarnas möjligheter till ett personligt anpassat antispam-filter hade vi dessvärre förbisett att AMaViS som är den mjukvara som hanterar virus- och spamscanning av e-post, dessvärre inte riktigt kunde hantera black- eller whitelists som innehöll mer än 6000 adresser. Detta berodde på att black- och whitelisting hanteras av en PostgreSQL-databas, vars scriptspråk har en begränsning i hur stora reguljära uttryck som kan exekveras utan att databasen hänger sig.

Överbelastningen av databasservrarna medförde i sin tur att loopdetect, som är den del av vårt e-postsystem som hanterar MX-loops, dvs e-postmeddelanden som skickas fram och tillbaka mellan två eller flera e-postservrar, inte kunde komma åt sin databas. Loopdetect tar emot ett e-postmeddelande från postfix, kontrollerar om det skickats genom e-postsystemet mer än ett visst antal gånger, och skickar sedan tillbaka det till postfix igen. Om meddelandet passerat igenom systemet ett flertal gånger uppdateras en databas, så att e-postservern kan hämta information om den faktiska slutdestinationen därifrån istället för från sin namnserver, och på så sätt snabba upp leveransen.

Eftersom kommunikationskanalen mellan loopdetect-programmet och postfix redan var öppen när databasanslutningen misslyckades resulterade det i att tomma meddelanden sändes vidare för leverans när kanalen stängdes utan att något e-postmeddelande överförts, samtidigt som de riktiga meddelandena åter placerades i kö på e-postservern för nytt leveransförsök en stund senare. Om samma problem då uppstod igen blev resultatet att ytterligare ett tomt meddelande skickades iväg, samtidigt som det ursprungliga åter hamnade i kö på servern.

Den reela effekten för den slutgiltiga mottagaren blev således att ett antal tomma e-postmeddelanden levererades innan det intakta e-postmeddelandet levererades korrekt.

Felet har rättats till, och en ny version av loopdetectmjukvaran är installerad på våra servrar. Vi har också optimerat PostgreSQL och PGPool-II för att säkerställa en stabil och högtillgänglig databasförbindelse. Vi bedriver ett ständigt arbete för att förbättra vår e-posttjänst, då vi vet att den är en stor och viktig del av våra kunders Internetnärvaro.

Slutligen vill jag poängtera att inga e-postmeddelanden, vare sig skickade eller mottagna, har gått förlorade. Alla meddelanden som passerat våra system under den problemfyllda perioden har levererats till sina slutgiltiga mottagare, dock med tomma dubletter och en del förseningar som följd av det inträffade.

Detta inlägg är skrivet av en av våra två svenska Linux-tekniker, Joakim Bomelin. Han är en av de som bland annat ser till att våra e-postservrar fungerar stabilt och tillfredställande. Och även en av dem som ni ska bli sura på när saker och ting inte fungerar som det ska… 😉

Spam? Nej, tack!

SpamSedan vi lanserade vår nya uppsättning av e-postservers, har vi nu börjat få rätsida på tekniken, vilket har inneburit en klart bättre upplevelse för kunden. Det finns självklart fortfarande problem här och var, som vi givetvis fortsätter att arbeta på, men i det stora hela har det resulterat i en väsentlig förbättring.

Dock får vi kontinuerligt in supportärenden som handlar om att man fortfarande mottar spam. Tyvärr trillar inte e-post in redan märkt som spam, då hade det blivit betydligt enklare att filtrera ut dem. Vad man även måste sätta i perspektiv, är att vi redan innan e-posten når ens inkorg har raderat ungefär 80% av all spam som träffar våra servers. Bakom dessa 80% döljer sig flera miljoner spam-meddelanden, och det är en otrolig uppgift att filtrera ut dessa.

Därför är antispam-filtrena baserade på en massa olika algoritmer och tester. Bland annat slår vi upp sändaren i ett flertal olika och enorma databaser av kända IP-adresser som det skickas spam ifrån (så kallad RBL), och det utförs även tester på själva e-postmeddelandet. Där letas det efter allt från suspekta länkar till vanliga ”spam-ord” (som till exempel det klassiska ”viagra”). Filtret undersöker även utformningen av meddelandet, för att upptäcka försök till att dölja att det faktiskt är spam, till exempel omskrivningar av ord (viagra -> v1agra).

För att få en förståelse över hur utförliga dessa tester är så kan ni till exempel se en lista över SpamAssassin’s tester som körs på varje e-postmeddelande, som är ett av många filter som körs.

”False-positives”

För att undvika ”false-positives”, det vill säga e-post som klassas som spam fast det inte är det, är det en hårfin balans hur pass aggressivt antispam-filtret ska besluta om det är spam eller inte. För hög aggressivitet – mindre spam men fler ”false-positives”. För låg aggressivitet – mer spam men mindre ”false-positives”. Och trots att vi kontinuerligt finjusterar algoritmerna som styr våra antispam-filter och lägger till ytterligare funktioner, så passar spammarna på att ändra sina algoritmer och hittar på nya sätt för att kringgå dem…

Vår nya uppsättning har gjort det möjligt för att köra ännu mer avancerade och intelligentare tester på e-postmeddelanden, och det är vad vi just nu arbetar vi på. Det innebär bland annat vi kommer kunna radera ännu mer spam, utan att radera kunders riktiga e-post. Kunder kommer dessutom själva kunna finjustera sitt antispam-filter, vilket ännu inte har fungerat felfritt med vår nya uppsättning.

Men vad kan jag göra?

• Stäng av ”catch-all” funktionen för ert e-postkonto
Då spammare ofta sänder till slumpmässiga konton på en domän, i hopp om att finna någon där det fungerar. Detta är en av de vanligaste orsakerna till att våra kunder får mer spam ”än vad de borde få”, enligt vår supportavdelning.

• Undvik att skriva ut din e-postadress i klartext
Spammare skannar konstant av nätet efter giltiga e-postadresser, som de kan skicka sitt spam till. Att ha sin e-postadress i klartext på sin hemsida gör det därför enkelt för spammarna att lägga till den i sin databas.

• Använd temporära e-postadresser
Eftersom man kan skapa ett oändligt antal e-postadresser här på Surftown, så kan du alltid skapa ett temporärt e-postkonto, som du använder när du ska registrera er på sidor där du är osäker på att de förvaltar din e-postadress på ett korrekt sätt. När registreringen är klar, och du upptäcker att det är en sida du vill fortsätta vara medlem på, så är det bara att byta till din riktiga e-postadress, och radera den temporära.

• Använd spamskydd på dina kontaktformulär
Om du har ett kontaktformulär på din hemsida, se till att ha ett ordentligt antispam-skydd, i form av Captcha eller det lite gulligare alternativet KittenAuth. 🙂

• Lägg till SPF-records för din domän
Genom att lägga till SPF-records, så kan du förhindra problemet där spammaren skickar sin skräppost i falskt namn. Läs vår guide i wiki’n över hur du utför detta.

I wiki’n hittar du dessutom information om hur ni anpassar inställningarna för Surftowns antispam-filter. Var dock försiktig med hur aggressiv nivå du ställer in, då vårt antispam-filter är betydligt effektivare än tidigare. ”Normal”-nivå är oftast tillräcklig för de allra flesta.

Om du har några egna tips, är du mer än välkomna att dela med dig av dessa i kommentarerna.

1 2