Published: October 01, 2024 by Lucas Rolff
Sådan beskytter PerfGrid din indbakke: Indblik i vores Rspamd-drevne spamfilterløsning
Spam og dets påvirking for kunder
Hos PerfGrid hoster vi tusindvis af e-mailkonti, mange for virksomheder. Antallet af virksomhedsmails betyder en højere risiko for phishing, tab af produktivitet og rod i indbakken. Vores mål er at reducere antallet af spam-beskeder, der når kundernes indbakker. Spam er ikke bare irriterende; det indeholder ofte phishing, svindel eller endda virus.
Samtidig med at vi filtrerer spam, skal vi sikre, at legitime e-mails ikke går tabt. Vi ønsker ikke, at vigtige beskeder ender i spammappen. Det er svært at opnå denne balance, fordi spam er blevet mere sofistikeret. Nogle gange ser spam-mails bedre ud end ægte. Avancerede filtreringsteknikker er afgørende, da de hjælper os med at minimere falske positiver og samtidig fange mere spam.
Vores vej til Rspamd
Vi startede med cPanel, som bruger SpamAssassin til spamfiltrering. SpamAssassin fanger åbenlys spam, men har begrænsninger, og det er ikke ligetil at udvide funktionerne i cPanel.
For mange år siden skiftede vi til SpamExperts®, en kommerciel løsning med meget bedre spamdetektion end SpamAssassin. Men den var dyr, hvilket gjorde den upraktisk til brug i stor skala.
Senere blev SpamExperts opkøbt, og kvaliteten faldt, mens priserne steg. Så vi udforskede andre muligheder. Vi prøvede Proxmox Mail Gateway (PMG), som også bruger SpamAssassin. Selv om det forbedrede spamdetekteringen, gav det flere falske positiver og større administrative omkostninger.
Til sidst besluttede vi at prøve Rspamd. Det er et højtydende spamfilter, som er i stand til at fange spamkampagner hurtigt ved hjælp af et fuzzy-system i realtid og omfattende RBL-lister. Rspamd kan også nemt udvides ved hjælp af Lua.
Efter en længere periode med at teste, erstattede vi PMG med en kombination af Rspamd og Postfix. Vi har siden udvidet Rspamd med ekstra Lua-kode og yderligere spamsignaturer for bedre at kunne målrette de e-mails, vi modtager.
Hvordan vi implementerede Rspamd i vores infrastruktur
Uanset om vores kunder bruger cPanel eller vores eget kontrolpanel til Grid Hosting, bliver e-mails gemt på backend-servere. For cPanel er det Exim; for Grid Hosting bruger vi Postfix.
Oprindeligt brugte vi kun Rspamd til vores cPanel-løsninger. Rspamd blev sat op separat og videresendte filtrerede e-mails til deres destination. Det var en fordel at være ekstern, fordi det holdt spamfiltreringen uden for cPanel og gav os mulighed for at bruge Postfix som en mellemliggende MTA (Mail Transfer Agent). Postfix håndterer en højere mængde forbindelser grundet sin Postscreen-funktion end Exim.
Da vi udviklede vores eget kontrolpanel, strømlinede vi alt. Alle e-mails, uanset destination, går gennem det samme Rspamd-system. At være centraliseret reducerer omkostningerne og forbedrer filtreringsnøjagtigheden fordi vi arbejder med et større datasæt.
Vores infrastruktur giver mulighed for nedbrud ved at forblive fuldt funktionsdygtig, selv hvis en enkelt server dør, uanset om det er en Rspamd-server, KV-server eller DNS-server. Vi kører to uafhængige Rspamd/Postfix-servere i forskellige datacentre og netværk.
Begge servere kommunikerer med eksterne tjenester som vores hosting-panel.net-API, Rspamd fuzzy storage, RBL'er og DNSBL'er. Samtidig har de en forbindelse til et såkaldt "Valkey Sentinel"-cluster på tværs af tre datacentre og netværk. Denne opsætning giver mulighed for ensartet filtrering, uanset hvilken server der behandler e-mailen.
For nylig tilføjede vi en lokal Large Language Model (LLM), der er kompatibel med OpenAI's API. Denne AI hjælper os med at analysere e-mails, som vi er usikre på. Selv om den ikke spiller en stor rolle endnu, hjælper den filtreringsmotoren med at træffe bedre beslutninger.
Sikkerhed og privatliv
Sikkerhed er en prioritet i vores Rspamd-opsætning. Fra en e-mail ankommer til vores filtreringsservere, til den når backend, sker al kommunikation over et krypteret netværk ved hjælp af en selvhostet version af Tailscale. Brugen af Tailscale's private netværk sikrer krypteret datatransmission i vores system. E-mails, der videresendes til backend, sendes over internettet ved hjælp af mindst TLSv1.2, hvilket sikrer kryptering under transport.
Vi tager privatlivets fred alvorligt. Rå e-mails bliver aldrig sendt til tredjeparter. Når der udføres DNS-forespørgsler (f.eks. kontrol af spamdomæner via DNS RBL'er), er det kun domæner - ikke fulde URL'er - der deles.
Rspamd bruger såkaldte "maps" til at gemme kendte spamdomæner og -fraser, som downloades fra offentlige lister og forespørges efterfølgende lokalt. Fuzzy storage fungerer ved at hashe dele af e-mailindholdet; kun disse hashes deles eksternt, så indholdet forbliver privat. Det er værd at bemærke, at hashes ikke er retningsbestemte, hvilket betyder, at du ikke kan gendanne den oprindelige tekst fra hashen.
Et kig på fremtiden
Vi fortsætter med at forbedre vores spamfiltreringssystem, så vi kan fange mere spam og samtidig minimere antallet af falske positiver. Der er meget under udvikling, og efterhånden som spamtaktikken udvikler sig, vil vores filtreringsfunktioner også gøre det.
I vores næste blogindlæg vil vi snakke om, hvordan vi håndterer filtrering af udgående spam. Vi bruger stadig Rspamd, men vi har udviklet specifikke regler for at forhindre spam i at forlade vores systemer. Mere om det snart!