Exim

I løpet av et typisk døgn i ikke-UKE-tid mottar vi 3000-4000 og leverer 12000-14000 e-post-meldinger på Samfundet. (I UKEtid er tallene typisk rundt 150 000 og 450 000.) All denne e-posten blir flyttet på av programvaren Exim, på cassarossa.

Vi relayer e-post for dc_other_hostnames i update-exim4.conf. I tillegg til samfundet.no og uka.no er vi MX for et antall tilknyttede domener, som stv.no og pirum.no, samt noen private domener.

E-post relayes fritt for nettene 193.35.52.0/24 og 2001:67c:29f4::/64, i tillegg til autentiserte SMTP-tilkoblinger (se under).

Vi støtter selvsagt både SSL og TLS på IPv6 og IPv4.

Konfigurasjon

Vi bruker exim4, rett fra standard Debian. Exim i Debian kommer med ganske ekstensiv konfigurasjon, som vi har gjort noen lokale endringer i. Exim-konfigen ligger i cassarossa:/etc/exim4/. I denne katalogen finner vi filen update-exim.conf.conf, som er konfigurasjonsfilen til skriptet update-exim4.conf, derav navnet. Denne filen forteller hvordan konfigurasjonen skal hentes og genereres. I Debian ligger ikke den faktiske konfigurasjonsfilen exim bruker i /etc/exim4 - her ligger bare konfigurasjon som forteller hvordan den egentlige konfigfilen skal bli. Skriptet update-exim.conf knar på konfigurasjonen og plasserer den i /var/lib/exim4/config.autogenerated, som exim leser. Denne filen skal aldri røres for hånd.

Vi bruker såkalt split config, (dc_use_split_config='true' i update-exim.conf.conf). Det fører til at konfigurasjonen genereres ut fra alle filene i /etc/exim4/conf.d/ og underkataloger. Konfigurasjonen er svær, men godt kommentert. Steder med norske kommentarer er stort sett lokale endringer (-:

Konfigurasjonen er ganske standard for Debian, men noe er verdt å merke seg for vårt oppsett.

Vanlig levering til brukere

Alle brukere mottar e-post på <brukernavn>@samfundet.no og <brukernavn>@uka.no. Det skilles ikke mellom de to domenene, e-post leveres til samme sted for brukere, men ikke nødvendigvis for e-postlister eller generelle aliaser. berge@samfundet.no og berge@uka.no er altså i praksis samme adresse, men de fiktive Amsit-listene bergefoo@samfundet.no og bergefoo@uka.no er forskjellige.

UKEmennesker vet gjerne ikke at de har en @samfundet.no-adresse, og Samfundet-brukere vet gjerne ikke det motsatte.

Vi bruker Maildir på brukernes hjemmeområder for lagring av e-post.

Amsit

Amsit er kort fortalt et tynt, hjemmelaget e-post-listesystem gjengene administrer selv. Skriptet /root/exim4-amsit/update-amsit-lists.pl generer konfigurasjon for hver Amsitgruppe og lager filene router/4*_amsit-$gruppe. Disse autogeneres og overskrives hver gang noen kjører skriptet, så det er ikke mye poeng i å redigere dem selv. Amsit-konfigurasjonsfilene i Exim slår opp i databasefilene til Amsit (BerkeleyDB-filer), legger på noen headere for å indikerer at det er listepost og sender av gårde. Amsit er egentlig bare en litt avansert aliases-fil - en e-post-adresse som er en Amsit-liste ekspanderer bare til en rekke mottakere.

Autentisert SMTP

SMTP-tilkoblinger med TLS eller SSL kan autentiseres, og det åpnes da for fri relay. I auth/30_exim4-config er måtene å autentisere seg på konfigurert. Vi støtter den vanlige IMAP-metoden PLAIN, samt GSSAPI, som gir oss Kerberos-autentisert SMTP. Begge metodene snakker SASL og krever SSL eller TLS, såfremt man ikke er på Samfundet-trådnett. (De lærde kan få diskutere om vi burde tillate GSSAPI for ukrypterte forbindelser - i så fall er implementering en øvelse for leseren). Med PLAIN-metoden skaffer SASL TGT for brukeren.

GSSAPI-autentiseringen skjer med principalen smtp/cassarossa.samfundet.no@SAMFUNDET.NO, lagret i keytaben /etc/exim4/exim.keytab, lesbar av Debian-exim. I /etc/init.d/exim4 er KRB5_KTNAME satt i ENV til å peke på keytaben.

Så, i acl/30_exim4-config_check_rcpt, sørger en simpel accept authenticated = * for at alle autentiserte tilkoblinger får fri relay.

Mailman

Vi har en Mailman -installasjon på Samfundet. Denne har historisk sett ikke skilt mellom domener, men har hatt mulighet for det siden våren 2008. Det er ønskelig å opprette mailman-lister med et domene for å hindre feilleveranse. Mailman har en egen router router/499_itk-mailman og en egen transport transport/30_itk-config_mailman_pipe.

For å opprette en ny e-post-liste i mailman bruker du kommandoen newlist som root på cassarossa. newlist tar listenavn, administrators mailadresse og administrasjonspassord som parametere (eks: % newlist minliste minadresse@samfundet.no hemmelig). Gå deretter inn i administrasjonsgrensesnittet på https://lists.samfundet.no/ og sett opp listen slik du vil ha den.

Aliaser for mailman-listene ligger i /etc/aliases.mailman på cassarossa. Denne må manuelt oppdateres med aliaser for hver ny liste (newlist gir deg kommandoen).

Spamhåndtering

Greylisting

Vi har hjemmelaget, men effektivt system for greylisting. Idet en ny e-post kommer inn, sjekkes det om vi har mottatt e-post fra den IPen og domenet de siste syv dager. Dersom vi ikke har gjort det, sendes det en midlertidig feil tilbake til senderen, med beskjed om å prøve igjen om kun kort tid. Når det har gått ett minutt, anses senderen som whitelistet. Alle korrekt konfigurerte tjenere skal prøve igjen, og når de gjør det, leveres e-posten. Fascinerende mange spammere reagerer aldri på feilmeldinger og prøver aldri igjen.

Systemet består av en postgres-database på cirkus, greylisting, som inneholder én tabell med oversikt over domener og IPer vi har mottatt e-post fra tidligere. I main/30_samfundet-greylisting og acl/40_exim4-config_check_data finnes det enkel konfigurasjon som basically får exim til å spørre databasen om vi har mottatt e-post tidligere.

Svartelisting / Blacklisting

Enkelte senderdomener avviser vi blankt fordi de sender spam. Vi har en lokal svarteliste som kan endres ved å redigere /etc/exim4/local_sender_blacklist før exim oppdateres med update-exim4.conf og systemctl reload exim4. Exim spør også (via DNS-oppslag) zen.spamhaus.org for å sjekke om avsender er en kjent spammer.

SpamAssassin

SpamAssassin er et verktøy som gjør en vurdering på hvor spammete eposten er, og Exim handler på grunnlag av dette. Alle eposter tagges med spamscoren sin, og hvis den er for høy bli eposten avvist. Innkommende epost får også headerne X-Spam-Score og X-Spam-Report satt – merk at dette ikke skjer for utgående epost, inklusiv epost som passerer gjennom mailman.

Merk at vi ikke avviser eposter til lister (dvs. eposter med Precedence: bulk/list eller som kommer fra listene på stud.ntnu.no). Dette er fordi epostlister ofte blir forvirret av rejects (og med god grunn :-) ). Derfor blokkeres spam til disse listene med en egen "devnull"-router, se router/350_itk-devnull.

SpamAssassin bruker flere metoder for å sette en spamscore, grovt delt inn i tre metoder:

Online-tester
Oppslag mot eksterne databaser. Blant annet sjekkes lenker i eposten og avsenders domene/IP mot databaser som Spamhaus, URIBL og SURBL.
Offline-regler
Anvendelse av regler definert i konfigurasjonen, spesielt matching mot regexer. En bråte standardregler ligger i /usr/share/spamassassin, og egendefinerte regler legger vi i /etc/spamassassin/local.cf.
Bayesisk
Bayes-filteret til Spamassassin bruker en dynamisk ordliste til å avgjøre om en epost er spam eller ham. Når filteret trenes opp, leter den etter ord som ofte forekommer i spam og lagrer dem i en liste. Ord som ofte forekomer i ham lagres også. Når filteret skal klassifisere en epost, brukes den Bayes' teorem til å gi en sannsynlighet for at eposten er spam. I dag bruker vi ikke det bayesiske filteret.

Clamav

Vi skanner eposter for virus med clamav.

Legge til nytt e-postdomene

Vi antar her at vi skal lage nytt underdomene av uka.no, mer presist 2013.uka.no.

På cirkus:

  1. Legg til domenet i /etc/bind/pz/uka.no og inkrementer seriellen. Det skal være en MX-post.
  2. Reload bind: systemctl reload bind9

På cassarossa:

  1. Legg til domenet i /etc/exim4/update-exim4.conf.conf
  2. Kjør update-exim4.conf (som root)
  3. Reload exim4: systemctl reload exim4

Listesøk

Slette epost fra epostkøen

Case: et eller annet, f.eks. Billig, sender ut en drøss med feilmeldingseposter som hoper seg opp i køen.

I et rotskall på cass gjør du følgende:

cassarossa:~# exiqgrep -r "<mottakeradresse>" -i | xargs exim -Mrm     # -r filterer på mottaker, bruk -f om du vil filtrere på sender. man exiqgrep er din venn.

Om exim klager på at flere av meldingene er låste, må du stoppe exim4 med systemctl stop exim4, drepe hengende exim-prosesser (sjekk hvilke som henger først!) og så slette igjen, før du deretter starter exim på nytt.

Lenker: Start, amsit, internt epost-oppsett, kurs, medlemsdb2, lister, saslauthd, til nye itkere

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2022-12-26 17:57 | Revisjon: 32 (historie, blame) | Totalt: 1905 kB | Rediger