Artikel top billede

(Foto: Computerworld)

Byg et elektronisk posthus - del 1

Elektronisk post – ofte betegnet e-mail eller blot mail – er stadig et bærende element på internettet. Mange tjenester bruger ligefrem din adresse som brugernavn. Men i stedet for at bruge mailtjenester så lærer vi dig, hvordan du opretter dit eget eposthus, hvor du har den fulde kontrol.

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.

Denne artikel er første del i en serie på fem, hvor vi vil vise dig, hvordan du kan installere, konfigurere og drive dit eget elektroniske posthus – med open source-software alene. Her i første afsnit er der fokus på grundsystemet, det vil sige styre- systemet og det program, som tager imod posten samt en webapplikation til administration.

Debian GNU/Linux er valgt som styresystem, og selve postserveren hedder Postfix. Når din server har modtaget posten, er det nødvendigt at tjekke den for spam og virus – og det er fokus i andet afsnit. Desværre er store dele af dagens elektroniske post blot forsøg på at narre dig. Heldigvis findes der mange gode metoder til at tjekke, om pos-ten er rigtig.

I tredje afsnit kommer du til at se, hvordan dine brugere kan få adgang til deres postkasser, men vi har lige et par trin, vi skal igennem først.

I denne serie er valget faldet på Dovecot. Den er let at administrere og giver typisk en god ydeevne. Dovecot understøtter både imap og pop3, og alle moderne postklienter kan håndtere både imap og pop3.

Grupper bruger ofte e-mail til diskussioner og planlægning. Det kan være et festudvalg, en ejerforening eller måske blot dig og dine venner. Det bliver hurtigt besværligt at bruge postklienten til at holde styr på, hvem som skal have en e-mail. Postlisten er redningen, og i fjerde afsnit bruges Mailman til at oprette og styre postlister.

I dag er dine brugere på farten og forventer at kunne læse e-mails allevegne. I femte og sidste afsnit er temaet webmail. Der findes en række open source-webmailpakker, men i femte afsnit er valget faldet på Roundcube. For at gøre livet en smule lettere, skal VBox.Adm også installeres. Det er et forholdsvist nyt open source-projekt, og det kan hjælpe dig med at administrere Postfix og Dovecot. Endvidere er der en integration med Roundcube.

Lidt om post

Elektronisk post er en af de oprindelige teknologier på internettet. Det er muligt at gå så vidt som at sige, at internettet blev udviklet for at kunne sende post mellem brugerne på tværs af store geografiske afstande. Men elektronisk post går helt tilbage til 1960’erne, hvor MIT implementerede et sys-tem til at sende beskeder mellem brugerne på CTSS (Compatible Time-Sharing System).

Et brev/besked/e-mail er en tekstfil, som sendes mellem to computere. En e-mail kan opdeles i to dele: hovedet (header) og kroppen (body). Hovedet minder mest om kuverten, mens kroppen indeholder teksten i brevet.

Hovedet indeholder en masse information, som postserveren skal bruge. Hvert felt består af en linje med feltnavn og en værdi. Du kender uden tvivl mindst tre af disse felter, nemlig Fra, Til og Emne (på engelsk To, From, Subject henholdsvis). Det er muligt at vedlægge filer (billeder, lydfiler og så videre) i en e-mail. Det sker ved at pakke filerne sammen med hovedet og kroppen og skrive i hovedet, at der er flere dele.

Binære filer som billeder skal omkodes, så de kun bruger 8bit-tegnsæt. På samme måde skal kroppen omkodes, hvis den anvender tegnsæt som utf-8. Al denne pakning og omkodning sker i postklienten (mua, mail user agent), inden den gives til postserveren (mta, mail transfer agent). Indpakning sker ved hjælp af en åben standard, som alle leverandører af postklienter og -server anvender. Standarden hedder mime (multipart intermet mail extension).

Grundinstallation

Debian GNU/Linux er en af de ældste Linux-distributioner. Den er fuldstændig styret af frivillige, det vil sige, der er ikke et firma bag. Igennem årene har den fået det ry, at den er meget stabil og meget administratorvenlig. Muligvis skifter Debian-folkene ikke hurtigt til de nyeste versioner, men det kan have sine fordele.

Netop elektronisk post er en tjeneste, som bare skal virke – og så er det ikke altid en god ide at bruge den nyeste version af et stykke software med ukendte fejl. Seneste udgave af Debian GNU/Linux er version 6.0 (med dæknavnet Squeeze efter de små rumvæsener i Toy Story-filmene).

Du kan downloade mange forskellige udgaver af Debian GNU/Linux, eftersom mange platforme er understøttet. Sandsynligvis ønsker du enten at bruge AMD64 (64bit Intel/AMD) eller i386 (32bit Intel/AMD). Du kan med fordel nøjes med at downloade et cd-image, som installerer det meste fra internettet.

Du kan vælge en grafisk installation. Du ledes igennem installation ved at blive spurgt om en række ting. Det er muligt at vælge en række grundlæggende serverinstallationer såsom web- og postserver. Det skal du ikke gøre, da du i løbet af serien får installeret det, du skal.

Efter installationen er det en god ide at tilføje sudo til din server, men det er ikke et krav. Med sudo kan du logge ind med din almindelige brugerkonto og udføre kommandoer som administratoren (root i Linux) ved at skrive sudo foran. Log ind som root, og udfør kommandoen apt-get install sudo. Efter installationen skal du tilføje dit brugernavn til filen /etc/sudoers.

Det er praktisk, hvis du kan logge ind på din server over nettet og ikke sidde fysisk foran maskinen. I Linux-verdenen er Secure Shell (ssh) den mest udbredte metode. Du får ”kun” en kommandolinje, når du logger ind. Men ssh er meget sikkert (al kommunikation sker over krypteret forbindelse).

Du installerer Secure Shell med kommandoen sudo apt-get install openssh-server. Du kan nu logge ind på din server fra en computer, hvor Secure Shell-klienten er installeret (Putty er meget udbredt under Windows). Du kan også udføre kommandoen sudo -i, så du slipper for at skrive sudo foran alle dine kommandoer. Det trick bliver brugt mange gange i denne artikel.

I Linux er det muligt at holde brugere og postkasser adskilt, forstået på den måde, at det ikke er nødvendigt at være Linux-bruger for at have en postkasse. Det betyder, at du kan begrænse adgangen til din server, så dine brugere (Linux-brugere såvel som postbrugere) kan nøjes med et minimalt sæt rettigheder.

Postbrugere skal have data liggende på din server, og for at kunne styre filrettighederne skal du oprette en Linux-konto til formålet. I infoboks Opret vmail-brugeren kan du se, hvilke tre kommandoer som du skal udføre. Brugeren vmail er til virtual mail users, og nærlæser du især kommando nummer to, kan du se, at denne bruger ikke kan logge ind på din server.

Med andre ord det er pladsholder til dit postsystem for at styre sikkerheden mere præcist. Når du udfører kommando nummer to, får du to tal at vide: vmail-brugerens bruger-id og gruppe-id (små heltal omkring 100-120). Disse to tal får du brug for senere.

Installation af postfix med mere

Det er nu blevet tid til at installere selve postserveren – eller mta’en i administrator-jargon. Mta er en forkortelse for mail transfer agent og hentyder til det faktum, at Postfix overfører posten mellem computere på internettet.

VBox.adm er en webbaseret applikation til at administere Postfix og de andre komponenter, som bruges i denne serie. Selve web-applikationen kan køre under flere webservere, så du har frihed til at vælge. I denne serie er Apache valgt som serversoftware, da Apache er kendt for at være korrekt og robust.

Inden du går videre, kan du med fordel installere Apache med kommandoen sudo apt-get install apache2. Skal du bruge din server til andre webapplikationer og websites, bør du nok overveje Apache-konfigurationen – og dens moduler – nærmere. Til VBox.adm er Debians generelle opsætning god nok.

Ved at installere VBox.adm bliver en del af de andre komponenter installeret, da VBox.adm afhænger af dem gennem Debians pakkesystem. Som det første skal du tilføje VBox.adm’s pakker til Debians pakkesystem. Det gør du ved at tilføje linjen deb http://packages.gauner.org/ squeeze main contrib non-free i slutningen af filen /etc/apt/sources.list.

Linjen fortæller pakkesystemet, at der findes Debian-pakker på et website. VBox.adm-udviklerne er så venlige at digitalt underskrive Debian-pakkerne med en PGP-nøgle. Det betyder, at du kan være mere sikker på, at pakkerne ikke indeholder malware fra en tredje person. Nøglerne skal du importere til pakkesystemet.

Kommandoerne gpg --keyserver x-hkp://gpg-keyserver.de --recv-key D31FA054C85AEFAC og gpg --export D31FA054C85AEFAC | apt-key add henter nøglen og giver den til pakkesystemet. Du er nu klar til installationen, som du sætter i gang med kommandoerne apt-get update og apt-get install vboxadm.

Opsætning af VBox.Adm og Postfix

Databasesystemet MySQL installeres også, eftersom VBox.adm, Postfix og andre komponenter bruger en sql-database. Desværre er det lidt tricky at få den del til at virke, men du kan gøre som følgende. Du skal oprette en database til VBox.adm, og det gør du med kommandoen mysqladmin -uroot -p create vboxadm.

Databasen skal have nogle tabeller, og nu kommer det svære. Definitionen af tabellerne kommer i en tekstfil, men du skal kopiere den og dekomprimere den. Kommandoen zcat /usr/share/doc/vboxadm-common/examples/mysql/schema.sql.gz | sed -e ‘s/utf8/latin1/g’ > schema.sql gør det hele for dig. En del af denne lange kommando skriver definitionen om, så den ikke bruger tegnsættet utf-8, men derimod Latin-1. Grunden er, at utf-8 ikke er et godt valg i den version af MySQL, som kommer med Debian GNU/Linux 6.0.

Definitionerne af tabellerne kan nu indlæses i MySQL med kommandoen mysql -uroot -p vboxadm < schema.sql. Du skal oprette en række brugere og tildele rettigheder til dem i MySQL. I Infoboks Tilføj brugere i MySQL er MySQL-kommandoer angivet, men du bør nok skifte kodeordet “qwerty” til noget andet.

Nu er det tid til at få den basale Postfix- konfiguration på plads. Postfix’ konfiguration placeret i folderen /etc/postfix, og det skal du gå ned i. Med VBox.adm følger en samling konfigurationsfiler, som du kan tage udgangspunkt i.

Du kopierer dem alle med kommandoen cp -R /usr/share/doc/vboxadm-common/examples/postfix/* . (bemærk punktum) og udpakker to filer med kommandoen gunzip ma*cf.gz.

For at forbinde Postfix med MySQL skal du skifte til folderen /etc/postfix/maps og udføre kommandoen find . -name ”virtual*cf” | while read f ; do sed -e ’s/PASSWORD/qwerty/g’ $f > $f.tmp && mv $f.tmp $f ; done – husk at skifte kodeordet ud med det, som du tidligere har valgt.

I folderen /etc/postfix finder du filen main.cf, som er Postfix’ primære konfigurationsfil. Du skal rette lidt i den (linjerne, hvor der står ”CHANGEME” i). Det er her, du får brug for at vide bruger-id og gruppe-id på vmail-brugeren. I infoboks Dele af /etc/postfic/main.cf kan du se et udklip fra filen. Konfigurationen af Postfix afsluttes med at udføre kommandoen make maps, som bygger optimerede udgaver af komfigurationsfilerne.

For at afslutte konfigurationen skal du rette lidt i filen /etc/vboxadm/vboxadm.conf – herunder kodeordet til MySQL-databasen. Der skal oprettes en administrator til VBox.adm, og du skal bruge kommandoen vboxadm mailbox add kneth@aod.dk --bootstrap -a 1 --siteadmin=1 (skift adressen ud med en, som passer til din virkelighed). Kommandoen vil give dig et kodeord, men det er muligt at ændre det ved hjælp af VBox.adm web-applikationen.

Administration

Du har nu alt klar til at arbejde som post- mester i dit eget posthus. Du skal blot pege din web-browser mod din postserver, og du kan logge ind.

Du bliver præsenteret for en overordnet menu. Som administrator kan du tilføje ny domæner, som du gerne vil modtage post for. Når nye domæner tilføjes, skal du huske at ændre på MX record på din dns-server, så den peger på din postserver.

Det er også muligt at oprette et domæne-alias, for eksempel sniksnak.com som alias for aod.dk. Et domæne-alias er ikke et selvstændigt domæne, men er knyttet til et domæne. Opretter du en postkasse i et domæne, vil du automatisk få sendt al post for domæne-aliasset til de rette postkasser, for eksempel vil kneth@sniksnak.com videresendes til kneth@aod.dk.

Det er også muligt at oprette et alias for en e-mail-adresse. Det er praktisk, hvis en person har flere e-mail-adresser. Posten sendes så automatisk videre. Det er muligt at få videresendt til flere e-mail-adresser – du skal blot skrive adresserne adskilt af et komma.

Næste gang

Du har nu et basalt posthus kørende – dog kan det kun tage imod posten. Postfix og VBox.adm danner sammen med MySQL et fint fundament til at bygge videre på. I næste artikel i serien kommer vi til at se nærmere på, hvordan du og dine brugere undgår virus og spam. Postfix byder på et sandt overflødighedshorn af software, teknikker og konfigurationsmuligheder.

Opret vmail-brugeren

mkdir -p /srv/vmail
adduser --system --home /srv/vmail --no-create-home --group --disabled-password --disabled-login vmail
chown -R vmail:vmail /srv/vmail

Dele af /etc/postfix/main.cf

myhostname = posthus.aod.dk
mynetworks = 192.168.122.0/24 [::1]/128
virtual_minimum_uid = 105
virtual_uid_maps = static:105
virtual_gid_maps = static:109
mydestination = posthus.aod.dk, localhost
relayhost =
inet_protocols = all
smtpd_tls_cert_file = /etc/ssl/certs/hostname.pem
smtpd_tls_key_file = /etc/ssl/private/hostname.key

Tilføj brugere i MySQL

GRANT ALL ON vboxadm.* TO ’vboxadm’@’localhost’ IDENTIFIED BY ’qwerty’;
GRANT SELECT ON vboxadm.* TO ’postfix’@’localhost’ IDENTIFIED BY ’qwerty’;
GRANT SELECT ON vboxadm.mailboxes TO ’dovecot’@’localhost’ IDENTIFIED BY ’qwerty’;
GRANT SELECT ON vboxadm.domains TO ’dovecot’@’localhost’ IDENTIFIED BY ’qwerty’;
GRANT ALL ON roundcube.* TO ’roundcube’@’localhost’ IDENTIFIED BY ’qwerty’;
GRANT SELECT,UPDATE ON vboxadm.mailboxes TO ’vboxadm_user’@’localhost’ IDENTIFIED BY ’qwerty’;
GRANT SELECT ON vboxadm.domains TO ’vboxadm_user’@’localhost’ IDENTIFIED BY ’qwerty’;
FLUSH PRIVILEGES;

[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Opret vmail-brugeren

[/themepacific_accordion_section]
[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]