Kapitel 8. E-post servere

Hvis du installerer rpm-pakken imap, kan din Linux-maskine bruges som server for indgående post i et netværk. Ved installationen af pakken skulle hele opsætningen faktisk være på plads, så brugerne på de enkelte maskiner blot skal angive Linux-maskinen som postserver i deres e-post-programmer – og så naturligvis være oprettet som brugere på Linux-maskinen!

Hvis du kun har en modemforbindelse til internettet, kan du lade Linux-serveren sende og hente post for alle brugere på et lokalt netværk. Programmet fetchmail (se bogen "Linux - friheden til at lære Unix") er ret nemt at sætte op til at hente post til flere forskellige brugere på samme tid hos internetudbydere.

Udgående post håndteres af programmet sendmail. Hvis sendmail skal acceptere at videresende udgående e-post fra andre maskiner på et lokalnet, er det nødvendigt at angive dette i filen /etc/mail/ip_allow, ellers vil forsøg på at bruge Linux-maskinen som SMTP-server blive afvist med beskeden "We do not relay".

I /etc/mail/ip_allow skriver du adresser på enkelte maskiner eller netværk, som må bruge Linux-maskinen som udgående postserver. Hvis for eksempel alle maskiner på netværket 192.168.100.0 skal accepteres, skal indholdet af /etc/mail/ip_allow være dette:

192.168.100

Hvis post kun skal accepteres fra nogle af maskinerne på netværket, skrives adresserne på de enkelte godkendte maskiner. Alternativt kan man tillade alle maskiner i eget domæne at være "relay"-maskine ved at tilføje FEATURE(`relay_entire_domain`) i /etc/sendmail.mc og derefter køre m4 /etc/sendmail.mc /etc/sendmail.cf. Bemærk, at man skal have sendmail-cf-pakken installeret.

At tilpasse sendmail's opsætning er i øvrigt et emne, som kan fremkalde nervøse trækninger og koldsved hos store voksne systemadministratorer. Red Hat Linux sætter sendmail ganske fornuftigt op fra starten, så medmindre du er meget videbegærlig eller masochistisk anlagt, vil vi foreslå dig at glemme alt om opsætning af sendmail, indtil det er absolut nødvendigt. Du kan med fordel erstatte Sendmail med Postfix. Se Afsnit 8.1.

8.1. Postfix

Postfix er en moderne MTA (mail transfer agent), dvs. et program til at flytte e-post fra én postserver til en anden. I mange år var Sendmail den MTA, alle brugte, men i de sidste par år har det vist sig, at Sendmail ikke kan leve op til de sikkerhedskrav, man typisk stiller.

Postfix har umiddelbart tre fordele:

Mandrake Linux kommer med Postfix og Sendmail, og du kan under installationen vælge hvilken MTA, du vil bruge. Dette valg har du endnu ikke under Red Hat eller SuSE, og i det følgende vil vi antage at du har Red Hat kørende.

Først skal du stoppe og afinstallere sendmail inden du går i gang med Postfix.

[root@linus /root]# cd /etc/rc.d/init.d
[root@linus init.d]# ./sendmail stop
Shutting down sendmail:                [ OK ]
[root@linus init.d]# rpm -e --nodeps sendmail

Du er nu klar til at hente og installere Postfix. Find den på http://www.postfix.org/ eller http://rpmfind.net. Se efter en fil kaldet postfix-*.i386.rpm.

Efter du har hentet filen, skal du installere den.

[root@linus /root]# rpm -i postfix-1.1.7-1.i386.rpm
postfix-script: Warning: Creating missing Postfix pid directory
postfix-script: Warning: Creating missing incoming directory
postfix-script: Warning: Creating missing bounce directory
postfix-script: Warning: Creating missing defer directory
postfix-script: Warning: Creating missing deferred directory
postfix-script: Warning: Creating missing saved directory
postfix-script: Warning: Creating missing corrupt directory
postfix-script: Warning: Creating missing public directory
postfix-script: Warning: Creating missing private pid directory
[root@linus /root]# mkdir /var/log/mail
[root@linus /root]# cd /etc/rc.d/init.d
[root@linus init.d]# ./postfix start
Starting postfix: postfix-script: starting the Postfix mail system
[root@linus init.d]# chkconfig --level 3 postfix on

Nu har du fået udskiftet Sendmail med Postfix, og den nye MTA vil altid blive startet op, når du kører i runlevel 3 (den sidste kommandolinje).

Postfix er god til at tilpasse sig til dit system og behøver sjældent nogen opsætning. Du skal dog sikre dig, at kommandoen hostname giver det korrekte navn på din maskine:

[root@linus /root]# hostname
linus.kongeh.dk

Navnet skal eksistere i DNS.

Hvis du ikke kan sende email til root@linus.kongeh.dk, så se i /var/log/maillog eller /var/log/mail/*. Her skriver postfix hvis der er noget galt.

Tip: Typisk skal man sætte at man afleverer epost til den SMTP-gateway ens internet-udbyder har (TDC har smtp.mail.dk). Dette gøres ved at udkommentere linjen med relayhost i filen /etc/postfix/main.cf og skrive navnet på den server man anvender:

...
relayhost = smtp.mail.dk
...
...

Postfix har hjemmesiden www.postfix.org, hvor der også er en god FAQ.

8.1.1. Modtage e-mail for flere domæner samtidigt

Postfix kan nemt sættes op til at modtage e-mail fra flere domæner samtidigt, og sende disse e-mails videre til flere forskellige steder. Filen der styre dette ligger i filen /etc/postfix/virtual, der er grundlaget for databasen /etc/postfix/virtual.db.

Det første der skal sættes op, er at få Postfix til at bruge filen /etc/postfix/virtual til at slå domæner og brugere op. I filen /etc/postfix/main.cf indsættes følgende linje:

# Filnavn: /etc/postfix/main.cf
virtual_maps = hash:/etc/postfix/virtual

Og så lige den obligatoriske reload:

[root@linus /root]# /etc/init.d/postfix reload

Postfix kan ved hjælp af koden hash: se at det er filen /etc/postfix/virtual.db der skal slås op i. Dette er en binær fil der skal genereres hver gang der sker ændringer i /etc/postfix/virtual.

Herefter kan domæner oprettes i filen /etc/postfix/virtual. For overskuelighedens skyld, er her først vist opsætning for eet domæne. Der er kun e-mailadressen postmaster@eksempel.dk, og e-mail sendes til brugeren root, der har en konto lokalt på maskinen.

# Filnavn: /etc/postfix/virtual
eksempel.dk anything
postmaster@eksempel.dk root

virtual kan nu afprøves ved at kompile den til virtual.db, hvilket skal gøres hver gang der er ændret i virtual.

[root@linus /root]# postmap hash:/etc/postfix/virtual

Efter at have kompilet virtual kan man udføre en reload til postfix. Gør man ikke det, vil der gå ca. 1 minut inden postfix selv opdager at virtual.db er ændret, og så reloader denne.

Hvis man gerne vil have at al anden mail end ovenstående, skal sendes til brugeren linus, tilføjes en ekstra linje hvor der ikke er noget user-name.

# Filnavn: /etc/postfix/virtual
eksempel.dk anything
@eksempel.dk           linus
postmaster@eksempel.dk root

Mail kan også sendes videre til en helt anden bruger på en helt anden server. Herunder er brugeren abuse@eksempel.dk tilføjet, og sendes videre til et domæne udenfor serveren.

# Filnavn: /etc/postfix/virtual
eksempel.dk anything
@eksempel.dk           linus
abuse@eksempel.dk      nogen@tagersigafdet.com
postmaster@eksempel.dk root

Når der skal tilføjes et domæne mere, skal der være en blank linje til næste blok. Herunder er der tilføjet domænet linux.dk. E-mailreglerne for disse to domæner er de samme, så al mail der måtte komme sendes blot videre eksempel.dk. Mail til postmaster@linux.dk vil således blive sendt videre til root.

# Filnavn: /etc/postfix/virtual
eksempel.dk anything
@eksempel.dk           linus
abuse@eksempel.dk      nogen@tagersigafdet.com
postmaster@eksempel.dk root

linux.dk anything
@linux.dk              @eksempel.dk