rspamd

rspamd er spamfilteret vårt. Før 2026 brukte vi SpamAssassin. Det har et webfjes på https://rspamd.samfundet.no

Grunnleggende virkemåte

rspamd ser gjennom all innkommende e-post og gir den en spam-score basert på regler den har. Dersom denne overstiger gitte terskelverdier vil vi potensielt greyliste eller avvise e-posten.

Hver regel har en gitt vekt, og vi vektlegger selvfølgelig regler som er en tydelig indikasjon på spam høyt. Reglene summeres så opp for å produsere spam-scoren.

Moduler

rspamd kommer med mange moduler som ser på forskjellige ting, og noen av de bruker vi. Her kommer en ikke fullstendig liste over moduler:

Greylisting

Greylisting vil midlertidig avvise e-posten. Dette skjer dersom e-posten ser litt spam ut, men ikke nok til å avvise den. Avsender vil da få svar at de må prøve igjen senere. Dersom avsender prøver igjen etter riktig tidsinterval, vil e-posten gå gjennom.

Spamtrapping

Vi kan sette opp visse mottakeradresser som spamtraps. Det vil si at alt som kommer til de, behandler vi som spam uansett. Dette kan vi gjøre med gamle domener og e-postlister som ikke lengre er i bruk. E-post som senes til disse brukes til å trene bayes-modulen og fuzzing-modulen.

Fuzzing

Her genereres hasher fra spesifikt e-postinnhold (tekst, bilder, vedlegg) som vi vet er spam og vi lagrer så disse. Vi kan så generere hasher for innkommende e-post, og hvis en hash matcher, kan vi konkludere at denne e-posten også er spam. Dvs., fuzzing er en bra måte å kvantifisere likheten mellom to e-poster, selv om bare deler av de er like. Vi har et lokalt fuzzy storage som fylles via spamtraps og manuell trening. Vi slår også opp mot rspamds eget fuzzy storage. Denne modulen tar veldig mye "spamruns", der en spammer forsøker å sende samme spam-mail til hundrevis av addresser.

DNS-blacklists

DNS-blacklists er offentlige svartelister av spam-domener som kan slås opp i via DNS. Et eksempel er spamhaus. rspamd slår opp avsenders domene samt domener i eventuelle lenker i e-posten.

Konfigurasjon

All vår konfigurasjon ligger i /etc/rspamd/local.d. Konfigurasjonsfilene er delt opp etter modul. Justerte vekter for regler som ikke tilhører en spesifikk modul ligger i /etc/rspamd/local.d/groups.conf.

Merk at du også kan justere regler direkte i webfjeset - ikke gjør det, da dette ikke sjekkes inn i git, og regler satt i webfjeset overskriver de satt i konfigurasjonen.

Teknisk oppsett

Exim forwarder e-posten til rspamd-applikasjonen og avviser/greylister basert på rspamd sin respons; dette er spesifisert i /etc/exim4/conf.d/acl/40_exim4-config_check_data. rspamd har også en "Add header" - terskel, som er tiltenkt for å sette spam-headers i e-posten, men den gjør ikke det per nå, selv om terskelverdien nås.

rspamd bruker redis som in-memory cache. redis-oppsettet er ganske vanilje, med unntak av litt konfigurasjon som må til fordi vi ikke kompilerer med user namespaces i kjernen vår. Denne configen ligger i /etc/systemd/system/redis-server.service.d/override.conf

Standardkonfigurasjonen til rspamd er å eksponere lokale TCP-porter for å kommunisere med webfjeset og de interne modulene; dette er åpenbart ikke ønskelig (rspamd virker ikke i utgangspunktet designet for å kjøre på en delt tjener), så vi kjører det heller bak en UNIX-socket med strenge permissions. Webfjeset kjører så gjennom apache2 der vi reverseproxyer til denne socketen. Merk at siden cassarossa ikke har mpm-itk installert må webfjeset kjøre som brukeren www-data, mens rspamd kjører som _rspamd:_rspamd. Dermed, for at web-fjeset skal få tilgang til socketen, har www-data blitt lagt til i gruppen _rspamd. I tillegg kommer også rspamd med et eget passordsystem. Dette er slått av siden webfjeset kjører bak auth. Konsekvensene av at vi kjører socket med strenge permissions er at du må gjøre sudo rspamc -h /var/run/rspamd/rspamd.sock <resten av kommando> for å kalle rspamd-verktøy fra kommandolinjen.

Lenker: Start, exim

Epost: itk@samfundet.no | Telefon: 90 57 66 32 | Sist endret: 2026-10-30 17:36 | Revisjon: 9 (historie, blame) | Totalt: 1959 kB | Rediger