Installer en komplet mailserver med Postfix og Webmail i Debian 9


Denne vejledning vil guide dig, hvordan du installerer og konfigurerer en komplet mailserver med Postfix i Debian 9-udgivelse. Det vil også dække, hvordan du konfigurerer postkasser til konti ved hjælp af Dovecot for at hente og komponere mails via IMAP-protokol. Brugerne bruger Rainloop Webmail-interface som mailbrugeragent til at håndtere mail.

  1. Minimal installation af Debian 9
  2. En statisk IP-adresse konfigureret til netværksgrænsefladen
  3. Et lokalt eller et offentligt registreret domænenavn.

I denne vejledning bruger vi kun en privat domænekonto til opsætning af mailserver konfigureret via/etc/hosts-fil uden nogen DNS-server, der er involveret i håndtering af DNS-opløsning.

Trin 1: Indledende konfigurationer for Postfix Mail Server på Debian

1. I det første trin skal du logge ind på din maskine med en konto med rodrettigheder eller direkte med rodbrugeren og sørge for, at dit Debian-system er opdateret med de nyeste sikkerhedsrettelser og frigivelse af software og pakker ved at udstede følgende kommando.

# apt-get update 
# apt-get upgrade 

2. På det næste trin skal du installere følgende softwarepakker, der vil blive brugt til systemadministration, ved at udstede følgende kommando.

# apt-get install curl net-tools bash-completion wget lsof nano

3. Åbn derefter /etc/host.conf-filen til redigering med din yndlings teksteditor, og tilføj følgende linje i begyndelsen af filen for at DNS-opløsning skal læse værtsfilen først.

order hosts,bind
multi on

4. Konfigurer derefter din maskins FQDN og tilføj dit domænenavn og dit system FQDN til/etc/hosts-filen. Brug systemets IP-adresse til at løse navnet på domænet og FQDN som illustreret i nedenstående skærmbillede.

Udskift IP-adresse og domæne i overensstemmelse hermed. Genstart derefter maskinen for at anvende værtsnavnet korrekt.

# hostnamectl set-hostname mail.linux-console.net
# echo "192.168.0.102 linux-console.net mail.linux-console.net" >> /etc/hosts
# init 6

5. Efter genstart skal du kontrollere, om værtsnavnet er konfigureret korrekt ved at udstede følgende række kommandoer. Domænenavnet, FQDN, værtsnavnet og IP-adressen på systemet skal returneres ved hjælp af kommandoen værtsnavn.

# hostname
# hostname -s
# hostname -f
# hostname -A
# hostname -i
# cat /etc/hostname 

6. Test også, om domænet svarer korrekt på lokale forespørgsler ved at udstede nedenstående kommandoer. Vær opmærksom på, at domænet ikke afspilles på eksterne forespørgsler, der er udstedt af andre systemer i dit netværk, fordi vi ikke bruger en DNS-server.

Dog skal domænet svare fra andre systemer, hvis du manuelt føjer domænenavnet til hver af deres/etc/hosts-filer. Vær også opmærksom på, at DNS-opløsningen for et domæne, der er føjet til/etc/hosts-filen, ikke fungerer via gravekommandoer.

# getent ahosts mail.linux-console.net
# ping linux-console.net
# ping mail.linux-console.net

Trin 2: Installer Postfix Mail Server på Debian

7. Det vigtigste stykke software, der kræves for, at en mailserver fungerer korrekt, er MTA-agenten. MTA er en software indbygget i en server-klientarkitektur, som er ansvarlig for mailoverførsel mellem mailservere.

I denne vejledning bruger vi Postfix som mailoverførselsagent. For at installere postfix i Debian fra officielle arkiver, udfør følgende kommando.

# apt-get install postfix

8. Under installationen af Postfix vil du blive stillet en række spørgsmål. På den første prompt skal du vælge Internet Site-indstilling som den generelle type til Postfix-konfiguration og trykke på [enter] -tasten for at fortsætte og derefter tilføje dit domænenavn til system-mailnavnet, som illustreret i de følgende skærmbilleder.

Trin 3: Konfigurer Postfix Mail Server på Debian

9. Dernæst sikkerhedskopier Postfix hovedkonfigurationsfil og konfigurer Postfix til dit domæne ved hjælp af følgende kommandoer.

# cp /etc/postfix/main.cf{,.backup}
# nano /etc/postfix/main.cf

Konfigurer nu Postfix-konfigurationen i main.cf-filen som vist.

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.debian.lan

mydomain = debian.lan

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

#myorigin = /etc/mailname
myorigin = $mydomain

mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#inet_protocols = all
inet_protocols = ipv4

home_mailbox = Maildir/

# SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

Udskift variablerne myhostname, mydomain og mynetworks for at matche dine egne konfigurationer.

Du kan køre postconf -n-kommandoen for at dumpe Postfix-hovedkonfigurationsfil og kontrollere eventuelle fejl, som vist i nedenstående skærmbillede.

# postconf -n

10. Når alle konfigurationer er på plads, skal du genstarte Postfix-dæmonen for at anvende ændringer og kontrollere, om tjenesten kører ved at undersøge, om Postfix-mastertjenesten er bindende for port 25 ved at køre netstat-kommandoen.

# systemctl restart postfix
# systemctl status postfix
# netstat -tlpn

Trin 3: Test Postfix Mail Server på Debian

11. For at teste, om postfix kan håndtere mailoverførsel, skal du først installere mailutils-pakken ved at køre følgende kommando.

# apt-get install mailutils

12. Send derefter en mail til rodkontoen ved hjælp af e-mail-kommandolinjeprogrammet, og kontroller, om e-mailen blev sendt med succes ved at udstede nedenstående kommando for at kontrollere e-mail-køen og liste over indholdet af rodens hjemmepostdirektkatalog.

# echo "mail body"| mail -s "test mail" root
# mailq
# mail
# ls Maildir/
# ls Maildir/new/
# cat Maildir/new/[TAB]

13. Du kan også kontrollere, hvordan mailen blev håndteret af postfix-tjenesten ved at inspicere indholdet af maillogfilen ved at udstede følgende kommando.

# tailf /var/log/mail.log

Trin 4: Installer og konfigurer Dovecot IMAP på Debian

14. Den mailleveringsagent, som vi bruger i denne vejledning til at levere e-mail-meddelelser til en lokal modtagers postkasser, er Dovecot IMAP. IMAP er en protokol, der kører på 143 og 993 (SSL) porte, som er ansvarlig for læsning, sletning eller flytning af mails på tværs af flere e-mail-klienter.

IMAP-protokollen bruger også synkronisering for at sikre, at en kopi af hver besked er gemt på serveren og giver brugerne mulighed for at oprette flere mapper på serveren og flytte mails til denne mapper for at sortere e-mails.

Dette er ikke tilfældet med POP3-protokollen. POP3-protokollen tillader ikke brugere at oprette flere mapper på serveren for at sortere din mail. Du har kun indbakke-mappen til at administrere mail.

For at installere Dovecot-kerneserver og Dovecot IMAP-pakke på Debian, skal du udføre følgende kommando.

# apt install dovecot-core dovecot-imapd

15. Når Dovecot er installeret i dit system, skal du åbne nedenstående dovecot-filer til redigering og foretage følgende ændringer. Åbn først /etc/dovecot/dovecot.conf-filen, søg og fjern kommentar til følgende linje:

listen = *, ::

16. Åbn derefter /etc/dovecot/conf.d/10-auth.conf for redigering og lokaliser og skift nedenstående linjer for at se ud i nedenstående uddrag.

disable_plaintext_auth = no
auth_mechanisms = plain login

17. Åbn filen /etc/dovecot/conf.d/10-mail.conf, og tilføj følgende linje for at bruge Maildir-placering i stedet for Mbox-format til at gemme e-mails.

mail_location = maildir:~/Maildir

18. Den sidste fil, der skal redigeres, er /etc/dovecot/conf.d/10-master.conf. Søg efter Postfix smtp-auth-blok og foretag følgende ændring:

# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
 }

19. Når du har foretaget alle ovenstående ændringer, skal du genstarte Dovecot-dæmonen for at afspejle ændringer, kontrollere dens status og kontrollere, om Dovecot er bindende for port 143 ved at udstede nedenstående kommandoer.

# systemctl restart dovecot.service 
# systemctl status dovecot.service 
# netstat -tlpn

20. Test om mailserveren kører korrekt ved at tilføje en ny brugerkonto til systemet, og brug telnet eller netcat-kommandoen til at oprette forbindelse til SMTP-serveren og sende en ny mail til den nye tilføjede bruger, som vist i nedenstående uddrag.

# adduser matie
# nc localhost 25
# ehlo localhost
mail from: root
rcpt to: matie
data
subject: test
Mail body
.
quit

21. Kontroller, om mailen er ankommet til den nye brugerpostkasse ved at angive indholdet i brugerens hjemmekatalog som vist i nedenstående skærmbillede.

# ls /home/test_mail/Maildir/new/

22. Du kan også oprette forbindelse til brugerens postkasse fra kommandolinjen via IMAP-protokol, som vist i nedenstående uddrag. Den nye mail skal vises i brugerens indbakke.

# nc localhost 143
x1 LOGIN matie user_password
x2 LIST "" "*"
x3 SELECT Inbox
x4 LOGOUT

Trin 5: Installer og konfigurer Webmail i Debian

23. Brugere administrerer deres e-mails via Rainloop Webmail-klient. Inden du installerer Rainloop mail-brugeragent, skal du først installere Apache HTTP-server og de følgende PHP-moduler, der kræves af Rainloop, ved at udstede følgende kommando.

# apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml

24. Når Apache-webserveren er installeret, skal du ændre biblioteksstien til/var/www/html/biblioteket, fjerne index.html-filen og udstede følgende kommando for at installere Rainloop Webmail.

# cd /var/www/html/
# rm index.html 
# curl -sL https://repository.rainloop.net/installer.php | php

25. Når Rainloop Webmail-klienten er installeret i systemet, skal du navigere til din domænes IP-adresse og logge ind på Rainloop admin-webgrænsefladen med følgende standardoplysninger:

http://192.168.0.102/?admin
User: admin
Password: 12345

26. Gå til menuen Domæner, tryk på knappen Tilføj domæne, og tilføj dine domænenavnindstillinger som vist i nedenstående skærmbillede.

27. Når du er færdig med at tilføje dine domæneindstillinger, skal du logge ud fra Ranloop admin-interface og pege browseren på din IP-adresse for at logge ind på webmail-klienten med en e-mail-konto.

Når du er logget ind på Rainloop webmail, skal du se den e-mail, der blev sendt tidligere fra kommandolinjen til din Indbakke-mappe.

http://192.168.0.102
User: [email 
Pass: the matie password

27. For at tilføje en ny brugerudstedelse brugeradd kommando med -m flag for at oprette brugerens hjemmekatalog. Men sørg først for at konfigurere Maildir-sti-variablen for hver bruger med følgende kommando.

# echo 'export MAIL=$HOME/Maildir' >> /etc/profile
# useradd -m user3
# passwd user3

28. Hvis du vil omdirigere al rods e-mail til en bestemt lokal mail-konto fra systemet, skal du køre nedenstående kommandoer. Alle mails omdirigeret eller bestemt til root-konto vil blive videresendt til din mailbruger som vist på nedenstående billede.

# echo "root: test_mail" >> /etc/aliases
# newaliases

Det er alt! Du har med succes installeret og konfigureret en mailserver i dine lokaler, så lokale brugere kan kommunikere via e-mails. Denne type mailkonfiguration er dog ikke sikret på nogen måde, og det tilrådes kun at blive implementeret til små opsætninger i systemer og netværk under din fulde kontrol.