driftstörning

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… 😉

Ny driftsinformationssida!

Så då har vi äntligen fått en ny driftsinformationssida. Nu kan du enkelt följa upptiden för dina tjänster, utan att behöva känna till alla de olika servers du befinner dig på. Det är nämligen den stora fördelen, det räcker med att man skriver in sitt domännamn så visa automatiskt driftsinformationen för de servers som man ligger på. Den uppdateras dessutom automatiskt direkt via samma övervakningssystem som vi själva använder oss av. Bra, va? 🙂

Man har även möjlighet att se historik över den senaste veckans händelser med tidsangivelser och förklaringar, och vi kommer även skriva om kommande underhåll i den högra boxen (Viktig information).

Klicka här för att besöka den nya driftsinformationssidan!