Artikel top billede

(Foto: Computerworld)

Byg et elektronisk posthus - del 2

I første afsnit fik du installeret en server med styresystemet Debian GNU/Linux. Endvidere kom du en masse software på. Den basale postserver (MTA) blev konfigureret. Her i andet afsnit skal du spam og virus til livs.

Af Kenneth Geisshirt, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Der er ikke et entydigt svar på, hvad spam er. Generelt er det e-mails, som du ikke ønsker at modtage. Du har måske sagt ”ja tak” til et nyhedsbrev, engang hvor du handlede i en butik på internettet. Efter nogen tid har du glemt det, og nyhedsbrevet er nu blevet til uønsket post. Men det falder uden for definitionen af spam, da det oprindelig ikke var uønsket. Nyhedsbreve kan du normalt også afmelde.

Spam sendes typisk ud i meget store mængder til personer, som ikke har tilmeldt sig tjenesten.

Ofte er det et lotteri, medicin, muligt ægteskab eller penge fra en afdød diktator. Den bærende ide er at lokke penge ud af dig – uden at du får noget til gengæld.

I Danmark er spam – som i mange andre lande – ulovligt at udsende. Helt præcist er det forbundet med bødestraf efter Markedsføringslovens paragraf 6. Nå, lad os se at komme i gang med dagens dont.

Lister

Inden du kommer for godt i gang med at arbejde med spam i Postfix, skal du installere understøttelse for regulære udtryk i Postfix. Det gør du med kommandoen sudo apt-get install postfix-pcre. Flere af de kommende opsætningsmuligheder benytter nemlig regulære udtryk, så det er nødvendigt.

Den mest primitive måde at slippe af med uønskede e-mails er ved at blokere for dem. Samtidig kan det være en fordel at lade kendte e-mail-adresser slippe igennem uden at blive forsinket med en række checks. Med din postserver har du rige muligheder for at styre, hvem du blokerer, og hvem du slipper igennem.

I folderen /etc/postfix/maps finder du en række filer, som alle begynder med access. Der er tale om flade tekstfiler, som du kan redigere med i en almindelig teksteditor som vi eller nano. Formatet er ganske enkelt. En linje begynder med den adresse, domæne eller ip-adresse, som du ønsker at sætte en regel op for.

Der er to mulige regler. Med ’OK’ er adressen eller domænet ikke blokeret, mens ’REJECT’ betyder, at du blokerer adressen. Det er muligt at skrive en lille besked efter ’REJECT’. I infoboks Access_sender kan du se et eksempel på filen access_sender, som sætter lister op for afsenderadresser. De blokerede domæner er kendte danske domæner for spam.

Når du har redigeret i en eller flere af filerne, skal du gøre dem klar til Postfix. Grunden er, at flade tekstfiler er uhyre langsomme at arbejde med. Så er dine lister lange, vil Postfix bruge for mange ressourcer på dem. Med kommandoen sudo make maps oversættes listerne til en intern repræsentation (indekseret som en database).

Her er du en oversigt over de listefiler, som du har tilgængelig. I virkeligheden er Postfix ligeglad med, hvilke filer du bruger til hvad, men det gør det lettere for dig selv at holde styr på.

Greylisting

De lister, som du netop har arbejdet med, omtales som enten sorte (black list) eller hvide (white list). Den sorte liste blokerer betingelsesløst, men den hvide liste gør det modsatte. Der er bare en række e-mail-adresser, som er et sted midt imellem.

Har du ikke skrevet sammen med en person før, kender du ikke vedkommendes e-mail-adresse, og du kan derfor ikke sætte den på den hvide liste. Omvendt skal adressen ikke stå på den sorte liste. For denne situation findes den grå liste (grey listing).

Teknikken i grey listing er ganske enkel. Mange spammere bruger andres computere. Når de udsender spam, skal det gå hurtigt. Svarer en postserver langsomt, droppes den. Med grey listing vil din postserver svare tilbage til ukendte postservere og ukendte e-mail-adresser, at den har meget travlt, og afsenderen må komme tilbage igen senere.

Det er helt normalt, at en postserver svarer sådan tilbage, hvis dens belastning af en eller anden årsag er meget høj. Er der tale om en rigtig afsender, vil den acceptere svaret og forsøge at sende igen senere (alt efter afsenderens opsætning kan det være 10 minutter eller 2 timer).

Problemet med grey listing er, at post fra ukendte forsinkes. Eftersom alle e-mail-adresser er ukendte for din postserver, vil en god grey listing-implementering lægge mærke til, hvilke e-mail-adresser og postservere, som gensender, er et stykke tid. Graden af tillid vil vokse, og det tidsinterval, som postserveren ikke vil modtage posten i, bliver kortere med tiden. Når du har modtaget mange e-mails fra den samme person, vil tiden være nær nul, og posten virker ikke længere forsinket.

Der findes flere glimrende implementeringer af grey listing til Postfix. Du kan med fordel installere den mest avancerede af dem alle. Det gør du med kommandoen sudo apt-get install postfix-policyd. Programmet Policyd gør egentlig en del mere end grey listing, men det hjælper al sammen til at modvirke spam. Der er endvidere to andre fordele ved Policyd.

For det første er programmet skrevet i programmeringssproget C, hvor mange andre implementeringer er skrevet i Perl eller andre fortolkede sprog. Valget af C gør programmet meget hurtigere og ofte mindre hukommelseskrævende. Den anden fordel har også med ydeevnen at gøre, idet Policyd kan bruge MySQL til at gemme data. Skrues en datamodel rigtigt sammen og har de rette indekseringer, er MySQL rasende hurtig. Og eftersom du allerede har MySQL kørende, er der ingen grund til ikke at bruge databasen.

Du er nødt til at rette lidt i Postfix’ kon- figuration for at bruge Policyd. I filen /etc/ postfix/main.cf skal du finde en linje, som begynder med ”check_policy_service” og ændre den til check_policy_service inet: 127.0.0.1:1,10031, (kommaet i slutningen er vigtigt). Programmet Policyd er en service (dæmon), som lytter til port 10031, og linjen gør, at e-mails sendes gennem programmet.

SpamAssassin

SpamAssassin er et meget avanceret stykke software til at undersøge, om en e-mail er spam eller ej. Det er godt integreret med Postfix, og du installerede det allerede i første afsnit, uden at du bemærkede det. Pakken vboxadm-sa indeholder den nødvendige integration med Vbox.Adm.

De underliggende pakker i Debian GNU/Linux hedder spamassassin og spamc. De bliver automatisk installeret, når du installerer vboxadm-sa.

Programmet starter dog ikke op automatisk, så du skal rette i filen /etc/default/spamassassin og sætte ’ENABLED’ til 1 (default-værdien er 0). Du kan med fordel også sætte ’CRON’ til 1, således at du får SpamAssassins regler automatisk opdateret hver nat. Derefter skal du udføre kommandoen sudo /etc/init.d/spamassassin start.

Postfix skal også kende lidt SpamAssassin. Tricket er at lade SpamAssassin se på indkomne e-mails, før Posfix tager sig af dem. For at få det til at ske skal du rette i filen /etc/postfix/master.cf, som er den fil, som styrer en e-mails flow gennem hele posthuset! I bunden skal du tilføje tre linjer (den første er en kommentar). Du finder de to linjer i infoboks Lidt til master.cf. Endvidere skal du tilføje linjen -o content_filter=spamassassin til afsnittet, som begynder med ”smtp inet”.

SpamAssassin virker ved, at programmet ser på en e-mail ved hjælp af en række regler. Når SpamAssassin er færdig med en e-mail, har den e-mail fået en score. Hvis en regel er opfyldt, lægges der til den score. Med andre ord: Den endelige score er summen af de individuelle regler.

En regel kan være, at hvis en e-mail kun består af store bogstaver, får den et tillæg i score. Det er velkendt, at meget spam benytter sig af store bogstaver. Men der findes jo mennesker, som ikke opdager at [CAPS Lock] er aktiveret og derved får skrevet en hel e-mail med kun store bogstaver. Det er ikke muligt alene ud fra procentsatsen af store bogstaver at afgøre, om en e-mail er spam.

I folderen /etc/spamassassin finder du en række konfigurationsfiler til SpamAssassin. Især filen local.cf kan have din interesse, da det er din lokale opsætning af programmet. I folderen /usr/share/spamassassin finder du alle SpamAssassins medfølgende regler – og dem er der mange af.

Sætte score-tærskel

SpamAssassin giver hver e-mail en score. Jo højere score, jo mere sandsynligt er det, at berørte e-mail er spam. SpamAssassin sætter selv en tærskel på scoren 5. Ved en score højere end 5 vil SpamAssassin skrive i hovedet i e-mailen, at den er spam.

Logger du ind i VBox.Adm og ser på en postkasse (mailbox), vil du se, at du kan sætte en tærskel-værdi for spam. Det betyder, at hver bruger har mere kontrol med grænsen for spam.

Virus

Virus, malware og spyware er store plager – for især Windows-brugere. Der er et stort marked for software til at detektere og fjerne sådanne plager. Der findes heldigvis også en virusscanner til din postserver – endda et open source-program med gratis virusopdateringer. Det hedder ClamAV.

ClamAV er en virus-scanner, men programmet kan ikke direkte bruges sammen med Postfix. Du skal sætte en smtp-proxy op foran Postfix, og denne proxy skal så scanne e-mails for virus. Det lyder måske kryptisk, men det kan gøres meget enkelt. Den valgte smtp-proxy er ClamSMTP, som er meget let at konfigurere. Programmet kan kun én ting: at lade ClamAV scanne for virus.

Installationen af både ClamSMTP og selve ClamAV sker med kommandoen sudo apt-get install clamsmtp clamav clamav-daemon clamav-freshclam. Som default lytter ClamSMTP til port 10026, og du skal rette i Postfix’ opsætning for at få det med. I filen /etc/postfix/master.cf skal du tilføje (eller ændre) linjen ”-o smtpd_proxy_filter=localhost:10026”. Linjen sender indkomne e-mails en tur forbi ClamSTMP, inden Postfix behandler videre. Du kan indsætte linjen lige før stedet, hvor du indsatte Spam-Assassin-linjen tidligere.

Pakken clamav-freshclam installerer en række værktøjer, som vil hente nye virusdefinitioner automatisk til din server. Som udgangspunkt opdateres virusdefinitionerne en gang i timen, men du kan ændre det ved at rette i filen /etc/clamav/freshclam.conf.

Næste gang

I den perfekte verden findes spam og virus ikke. Og i den perfekte verden var du ikke nødt til at læse dette afsnit. Det kan virke tåbeligt at skulle bruge tid på at rette op på en situation, som man ikke selv er herre over.

Forhåbentlig har du med nu set, at det er muligt at få styr på spam og virus allerede i postserveren. Næste afsnit rykker vi tættere på brugerne, da emnet bliver deres postkasser. Postkasserne styres af programmet Dovecot, som både kan give adgang med imap og pop3.

Access_sender

gavemekka.dk REJECT Go away
red1liv.dk REJECT Go away
sparmail.dk REJECT Go away
dollargrin.dk REJECT Go away
lars@aod.dk OK

Lidt til master.cf

# SpamAssassin
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Manuel test af postservere

kneth@posthus:~$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is ‘^]’.
220 posthus.aod.dk ESMTP Postfix (Debian/GNU)
helo aod.dk
250 posthus.aod.dk
mail from: <kneth@aod.dk>
250 2.1.0 Ok
rcpt to: <pia@altfordullerne.com>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Tester for virus
Det er da bare for vildt.

.
250 2.0.0 Ok, id=06637-02, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 13A541E3E1

quit
221 2.0.0 Bye
Connection closed by foreign host.

[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Få mere at vide

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Læs de andre afsnit i serien:

[/themepacific_accordion_section]
[/themepacific_accordion]