8.3. Exim

Exim er en mailserver som er nem at sætte op til almindeligt brug. Den har også en del avancerede funktioner, som for eksempel indbygget filter og vacation-program. Og så skulle den iøvrigt være sendmail-kompatibel.

Man finder den her: http://www.exim.org. Her er der dog ingen rpm-filer, men dem kan man finde på http://rpmfind.net.

Der følger desværre ikke nogen fil med til automatisk at lave en rpm-fil, så hvis man selv vil lave den, så er det vigtigt at følge installationsvejledningen.

Exim styres fra 1 stor opsætningsfil, som ligger i /etc eller for SuSE 9.0 i /etc/exim/. Opsætningsfilen er indelt i 7 dele, og det er normalt ikke nødvendigt at ændre i den for at få et virksomt system, da det enten er noget som er defineret i systemet, eller fordi standard-værdierne er fornuftigt valgt.

Dog skal man sikre sig at kommandoen hostname giver det rigtige navn. Ellers skal man rette det i opsætningsfilen.

Her er de 7 dele af opsætningsfilen kort beskrevet:

  1. Main configuration: Her indstiller man værtnavn, videresendelse mm. Dette er det eneste sted det kan være nødvendigt at rette noget for at få det til at virke.

  2. Transports configuration: Dette er hvordan en mail bliver leveret til destinationen. Dette er kun selve leveringen som er defineret her.

  3. Directors configuration: Når en mail skal afleveres lokalt, er det her man definerer hvad der skal ske med den. Man kan for eksempel indsætte et kald af en virusskanner, og det er også her man kan bestemme om .forward filer skal bruges. Herfra kalder man en transport som blev defineret ovenfor.

  4. Routers configuration: Dette er opsætning af hvordan post skal sendes videre til andre maskiner. Man kan også her skanne for virus, men i modsætning til ovenstående, så forhindrer man her virus i at komme ud, og ikke ind. Også her kaldes en transport.

  5. Retry configuration: Her indstiller man timeoutværdier, både for levering af post til andre maskiner, men også lokalt, som hvis en virus-skanner er gået død, og det er et krav at al post skal skannes. Man kan for eksempel også lade nogen domæner have en meget lang timeout, mens man kan sætte den til meget lidt for andre.

  6. Rewrite configuration: Man kan her lave regler til at omskrive emailadresser, men dette skal man normalt holde sig fra at gøre, medmindre man ved hvad man gør, og har en god grund til dette. At gøre dette bliver af nogen betragtet som noget forbudt, og det er kun nødvendigt i sjældne og specielle tilfælde.

  7. Authentication configuration: Under authentication har man mulighed for at åbne for relay af post fra specifikke maskiner. Det sker ved at man skal identificere sig over for mailserveren. Dette bliver defineret i denne del.

8.3.1. Brug af procmail under exim

Hvis procmail altid skal bruges til at afleve posten til indbakken, så skal dette rettes til i opsætningsfilen.

Følgende skal sættes ind i exim.conf under Transports configuration:

# This transport is used for local mail deliveries with procmail

procmail_pipe:
  driver = pipe
  command = /usr/bin/procmail -d $local_part
  return_path_add
  delivery_date_add
  envelope_to_add
  check_string = "From "
  escape_string =">From "
  user = $local_part
  group = mail

Og under directors skal følgende indsættes lige før linjen med localuser:

procmail:
  driver = localuser
  transport = procmail_pipe

8.3.2. Brug af Mailman listmanager sammen med Exim

Når man bruger Exim og Mailman sammen, så behøver man ikke at tænke på at rette forskellige alias-adresser til når man opretter og nedlægger lister. Dette sker automatisk, men kræver at man retter lidt i exim.conf.

Hvis man ikke vil dette, så skal man i stedet for huske at rette i filen /etc/alias hver gang man opretter eller nedlægger en liste.

I afsnittet Main configuration indsætter man følgende lige før linjen hvor der står "end":

## Mailman definitions
MAILMAN_HOME=/var/mailman
MAILMAN_DATA=/var/mailman
MAILMAN_WRAP=MAILMAN_HOME/mail/wrapper
MAILMAN_UID=mail
MAILMAN_GID=mail

Disse rettes selvfølgelig til, så de passer med installationen.

Under Transports configuration skal man indsætte:

# Mailman definitions

list_transport:
  driver = pipe
  command = MAILMAN_WRAP post ${lc:$local_part}
  current_directory = MAILMAN_HOME
  home_directory = MAILMAN_HOME
  user = MAILMAN_UID
  group = MAILMAN_GID

list_request_transport:
  driver = pipe
  command = MAILMAN_WRAP mailcmd ${lc:$local_part}
  current_directory = MAILMAN_HOME
  home_directory = MAILMAN_HOME
  user = MAILMAN_UID
  group = MAILMAN_GID

list_admin_transport:
  driver = pipe
  command = MAILMAN_WRAP mailowner ${lc:$local_part}
  current_directory = MAILMAN_HOME
  home_directory = MAILMAN_HOME
  user = MAILMAN_UID
  group = MAILMAN_GID

Dette skal igen være før "end"

Og endelig under Directors configuration skal følgende indsættes (det _skal_ stå lige før "end", da det er de sidste regler som skal kontrolleres).

# Mailman definitions

# Accept mail to listname-owner and send it to listname-admin
list_owner_director:
  driver = smartuser
  require_files = MAILMAN_DATA/lists/${lc:$local_part}/config.db
  suffix = "-owner"
  new_address = "${lc:$local_part}-admin@${domain}"

# Accept mail to owner-listname and send it to listname-admin
owner_list_director:
  driver = smartuser
  require_files = MAILMAN_DATA/lists/${lc:$local_part}/config.db
  suffix = "owner-"
  new_address = "${lc:$local_part}-admin@${domain}"

list_admin_director:
  driver = smartuser
  suffix = "-admin"
  require_files = MAILMAN_DATA/lists/${lc:$local_part}/config.db
  transport = list_admin_transport

list_request_director:
  driver = smartuser
  suffix = "-request"
  require_files = MAILMAN_DATA/lists/${lc:$local_part}/config.db
  transport = list_request_transport

list_director:
  driver = smartuser
  require_files = MAILMAN_DATA/lists/${lc:$local_part}/config.db
  transport = list_transport

Herefter kan man blot oprette og nedlægge lister uden at bekynre sig om at sørge for at posten bliver sendt til Mailman programmet.