een e-mailserver installeren met ISPConfig op Debian 10

Deze handleiding gebruikt een enkele server opstelling als voorbeeld. ISPConfig 3.1 is geïnstalleerd op Debian 10.0, Buster (zie deISPConfig Perfect Server installatie handleiding voor de eigenlijke server installatie), de bedoeling van deze handleiding is je de stappen te laten zien na de eerste server geïnstalleerd te hebben om een werkend mailsysteem voor je eigen domeinnaam op te zetten. Tijdens het testen van deze handleiding heb ik ISPConfig opgewaardeerd naar 3.1.15.

Wat is nodig

Om deze handleiding met succes te gebruiken voor een goed werkende mailserver heb je nodig

  • een host waarop je ISPConfig installeert (en een Besturingssysteem)
  • Ik adviseer 2 GB geheugen met 4 GB swap, dat zou genoeg moeten zijn voor de mailserver.
  • host moet een Internet verbinding hebben met poort 25 open beide kanten op
  • host heeft een vast IP-adres
  • host moet A record hebben voor zijn IP-adres (of AAAA als je IPv6 gebruikt)
  • je moet MX record aanmaken bij de DNS naamservice voor de host
  • je moet host reverse DNS name service PTR record krijgen dat overeenkomt met hosts FQDN

Het benodigde geheugen is voor SPAM filters. Je kunt toe met 1 GB geheugen, zelfs met draaiende SPAM filters, als de 4 GB swap er is om out of memory situaties te voorkomen.

Open poorten

Mailserver moet poort 25 open hebben, zowel ingaand als uitgaand. Controleer of je host die poort wel open heeft staan voordat je de e-mailserver op die host instelt.

Er zijn manieren om e-mail werkend te krijgen ook als poort 25 niet open is, maar dat houdt in dat je e-mails verstuurt via een andere host die poort 25 wel open heeft. Het kan zinvoller zijn om op die andere host een e-mailserver te installeren en de eerste helemaal te vergeten wat e-mail betreft.

DNS Naam Dienst ingangen

Mailserver heeft een FQDN nodig, Fully Qualified Domain name (volledig gekwalificeerde domeinnaam)(Lees erover in Wikipedia: FQDN). In dit voorbeeld is de domeinnaam taleman.ovh. Om aan te tonen dat de hostnaam van de mailserver niet mail hoeft te zijn, gebruiken we posti als hostnaam. De FQDN is dus posti.taleman.ovh.

Deze host is geïnstalleerd op een systeem van een dienstverlener, ze bieden registratie van domeinen, naamservice en omgekeerde naamservice. Die heb ik gebruikt.

Het IP adres is 178.33.154.66. Ik deed het volgende:

  • registreerde het domein taleman.ovh
  • voegde dit IP-adres als A record toe aan DNS naamdienst met naam posti.taleman.ovh
  • toegevoegd MX record voor domein taleman.ovh met waarde posti.taleman.ovh
  • omgekeerd naamsdienst PTR record toegevoegd voor dat IP-adres, dat wijst naar posti.taleman.ovh

Het MX record wordt aangemaakt voor het e-maildomein. Ik maak het dus aan voor taleman.ovh, en het wijst naar posti.taleman.ovh, de e-mailserver die e-mail voor dat domein ontvangt.

Omgekeerde naam dienst

Lees over omgekeerde naamdienst uit Name Service tutorial. In dit voorbeeldgeval moet omgekeerde naamdienst posti.taleman.ovh teruggeven.

Mijn service provider controleerde het bestaan van A records voor het toevoegen van overeenkomstige PTR mogelijk was, ik had een beetje problemen voor ik doorhad dat het toevoegen daarom mislukte.

Testen van de naamservice

Het is beter om nu de naamservice te testen, want e-mails versturen en ontvangen lukt niet als de naamservice niet goed ingesteld is. Als je werkstation Windows is in plaats van Linux of Unix, gebruik dan het commando nslookup in plaats van host.

$ host taleman.ovh
taleman.ovh has address 188.165.143.5
taleman.ovh mail is handled by 10 posti.taleman.ovh.

Het bovenstaande resultaat toont dat aan de domeinnaam wel degelijk een IP-nummer verbonden is (dat in dit geval verschilt van het IP-nummer van de e-mailserver, maar dat heeft geen invloed op de e-mails), en dat er een MX record is dat naar posti.taleman.ovh wijst. Het deel “mail is handled by” komt van het MX record. Dit MX record is nodig als e-mail die naar @taleman.ovh adressen gestuurd wordt, ontvangen moet worden op posti.taleman.ovh.

Controleer dan of de name service entry voor de mailserver FQDN (in dit geval posti.taleman.fi) een A record is en naar het juiste IP-nummer wijst.

$ dig posti.taleman.ovh |grep "ANSWER SECTION" --after-context=3 
;; ANSWER SECTION:
posti.taleman.ovh. 3600 IN A 178.33.154.66
;; Query time: 56 msec

Controleer tenslotte of de omgekeerde naamdienst het IP-nummer weer omzet naar het FQDN van de mailserver.

$ host 178.33.154.66
66.154.33.178.in-addr.arpa domain name pointer posti.taleman.ovh.

In plaats van commando’s host en dig kun je webpagina’s gebruiken die de naamdienst testen. Ik ken intoDNS en MXToolbox.

Als de bovenstaande tests niet lukken, kun je deze Setting up Name Service -tutorial proberen.

Installeren van het OS

Ik gebruik Debian versie 10 Buster, dus volg ik deze handleiding:

https://www.howtoforge.com/tutorial/debian-10-buster-minimal-server/

Vervang het IP-nummer, de hostnaam en de domeinnaam door je eigen waarden.

Omdat ik deze handleiding in het Engels schrijf, koos ik Engels als Taal, maar Finland als Land en United_Kingdom en_GB.UTF-8 als locale instelling.

[email protected]:/tmp# cat /etc/debian_version 10.0
[email protected]:~# locale
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
[email protected]:~# cat /etc/timezone
Europe/Helsinki

Controleer of je de hostnaam juist hebt ingesteld. De mail systeem configuratie die ISPConfig doet werkt niet als hostnaam verkeerd is.

[email protected]:~# hostname posti
[email protected]:~# hostname -f posti.taleman.ovh
[email protected]:~#

Installeren van ISPConfig

Ik kies ervoor Apache als webserver te installeren, dus voor Debian Buster volg ik deze Perfect Server Gids.

Ik installeerde openssh-server op de host en stelde root login in met ssh sleutel, zodat ik direct als root naar de host kan ssh’en. Wachtwoordloos inloggen met OpenSSH of Secure Passwordless Logins met SSH.

[email protected]:/tmp# free -h

Gratis commando resultaat

Ik geef de voorkeur aan editors in Emacs stijl boven nano, dus installeer ik nu jed om het bewerken van bestanden aangenamer te maken.

Ik had /etc/host en /etc/hostname correct ingesteld na de installatie van het besturingssysteem, dus ik controleerde alleen of ze correct waren volgens de Perfect Server Guide. Let goed op de hostname en FQDN, als je die verknoeit zul je uiteindelijk ontdekken dat je e-mail server niet werkt. De schade kan hersteld worden, maar het is gemakkelijker om het vanaf het begin goed te doen.

[email protected]:/tmp# hostname
posti
[email protected]:/tmp# hostname -f
posti.taleman.ovh

Voor de rest volg ik gewoon de Perfect Server Guide. Merk op dat je de commando’s uit de gids meestal kunt knippen en plakken op de commandoregel.

Ik installeerde Mailman niet, ik ben niet van plan Mailman op deze host te gebruiken. Evenzo liet ik de installatie van BIND DNS Server, Webalizer en AWStats achterwege. Ik installeerde wel Roundcube Webmail omdat deze host een e-mail server wordt.

In hoofdstuk 18 (Installeer PHPMyAdmin Database Beheer Gereedschap) gebruikte ik commando

/usr/bin/apg -m 32 -x 32

om het 32 karakter lange blowfish geheim te genereren.

Gebruik van het systeem

E-mail domein en mailboxen aanmaken

Nu log ik in als admin op ISPConfig en

  • Nieuwe client toevoegen
  • Voeg nieuw Domein toe (E-mail Domain!), en vul het formulier in
  • Voeg nieuwe Mailbox toe

Maak de DKIM sleutels en het record door op de knoppen te klikken in de volgorde genummerd in de afbeelding. Je kunt over DKIM lezen in Wikipedia.

Maak een Mail Domain in ISPConfig

Figuur 1: Mail domein aanmaken

Wacht dan twee minuten of tot het rode bolletje met nummer in het bovenste deel van het ISPConfig Paneel weggaat.

Log als eerste test in op Roundcube Webmail met de hierboven aangemaakte mailbox en stuur een e-mail naar datzelfde adres. ISPConfig stuurt een welkomstbericht naar elke aangemaakte mailbox, dus er zou daar al een bericht moeten staan. Gebruik de knop Compose en schrijf een kort testbericht.

RoundCube Inloggen

Figuur 2: Roundcube webmail

Verstuur e-mail in Roundcube

Figuur3: Zenden vanuit Roundcube

Het bericht zou snel in de mailbox moeten verschijnen.

Test dan het zenden van een e-mail naar een andere mailbox die je hebt en kun je controleren of de mail daar aankomt. Bij de volgende test kun je van ergens anders naar de hierboven aangemaakte mailbox zenden.

Merk op, dat als je greylisting voor de mailbox hebt ingeschakeld, de e-mail die van buiten je server wordt gestuurd niet meteen in de mailbox aankomt. Je zou echter in de mail log vermeldingen van de afleverpoging meteen moeten zien, zodat je ziet dat mail je server kan bereiken. De greylisting entry in het bestand /var/log/mail.log ziet er ongeveer zo uit:

Aug 29 19:08:42 posti postfix/smtpd[16911]: NOQUEUE: reject: 
  RCPT from mta-out1.inet.fi[62.71.2.194]: 450 4.2.0 
  <[email protected]>: Recipient address rejected: Greylisted, 
  see http://postgrey.schweikert.ch/help/taleman.ovh.html; 
  from=<****@*****.***> to=<[email protected]> proto=ESMTP 
  helo=<******.****.***>

Je kunt het mail log in een terminal venster als volgt volgen, bijvoorbeeld:

tail -f /var/log/mail.log

Of met deze commando’s, als je alleen geïnteresseerd bent in de greylisting entries:

tail -f /var/log/mail.log | grep Greylisted

of

grep Greylisted /var/log/mail.log

Greylisting vertraagt alleen de eerste e-mail van dezelfde afzender naar dezelfde ontvanger. Zodra die eerste e-mail ontvangen is, komen de volgende e-mails aan zonder extra vertraging.

In mijn geval werkte alles bij de eerste poging. Dit toont aan dat de ISPConfig Perfect Server Gids echt werkt.

Verbind e-mail client

Gebruik Thunderbird als voorbeeld mail client. Andere mail client toepassingen werken op een vergelijkbare manier.

ISPConfig laat de accountnaam het e-mail adres zijn.

Thunderbird Account Instellingen

Figuur 4: Thunderbird account instellingen

Thunderbird Server Instellingen

Figuur5: Thunderbird server instellingen

Verbindingsbeveiliging STARTTLS betekent dat de verbinding onbeveiligd begint en dan overgaat op versleuteld als beide partijen de versleuteling ondersteunen. SSL/TSL betekent dat de sessie vanaf het begin versleuteld is. SSL/TSL is waarschijnlijk iets veiliger, dus probeer of je cliënt daarmee werkt.

Thunderbird uitgaande mailserver

Figuur 6: Thunderbird instellingen voor de uitgaande server

SPF gebruiken

Lees over Sender Policy Framework uit Wikipedia. Oorspronkelijk stond SPF voor Sender Permitted From, wat leuk is om te onthouden wat het betekent. Na het lezen over SPF kun je het record zelf maken, kijken of je naamsdienstverlener SPF record kan genereren of met behulp van Internet zoekmachines met

SPF wizard

vind je een website die het SPF name service record voor je aanmaakt. Knip en plak dan het record in je naamdienst. Voeg een TXT record toe, of misschien op sommige DNS systemen een SPF record.

Kijk hoe de SPF er in de naamdienst uitziet, zoals dit

$ dig taleman.ovh -t TXT | grep spf
taleman.ovh. 3000 IN TXT "v=spf1 mx ~all"

Of zoals dit:

$ dig +short taleman.ovh TXT
"v=spf1 mx ~all"
"1|www.taleman.ovh"

DKIM gebruiken

Lees over DomainKeys Identified Mail uit Wikipedia. ISPConfig heeft de DKIM sleutels voor je aangemaakt bij het aanmaken van het e-mail domein (als je eraan gedacht hebt het vakje DKIM aan te vinken). Knip en plak het DNS-Record dat de publieke sleutel is aan je naamdienst als TXT record. Je naamserviceprovider kan een hulpmiddel aanbieden om het aanmaken van DKIM records gemakkelijker te maken. Houd de DKIM Private-sleutel geheim.

Kijk hoe de DKIM er in de naamservice uitziet, zoals hier:

$ host -t txt default._domainkey.taleman.ovh.
default._domainkey.taleman.ovh descriptive text "v=DKIM1;h=sha256;s=*;p=MIIB(I cut long string shorter)0rp" "sTGLXyK(cut shorter)B;t=s;"

Als het ISPConfig was dat de DKIM sleutels aanmaakte, is de privésleutel naar de juiste plaats gekopieerd in de amavis instellingen.

Er is een website mail-tester.com die handig is om te controleren of SPF en DKIM werken. Ga naar die website, hij geeft een e-mail adres en je stuurt er een e-mail naartoe vanaf je server. Wacht dan een minuutje en controleer de website opnieuw.

Certificaten maken

ISPConfig kan zelf ondertekende certificaten aanmaken, deze worden tijdens de installatie van ISPConfig aangemaakt, tenzij je ervoor koos ze niet aan te maken. Zelfs als je die zelf ondertekende certificaten aanmaakte, is het een goed idee om goede certificaten aan te maken die browsers, e-mail programma’s en andere e-mail servers vertrouwen.

Er is een prima handleiding: ISPConfig beveiligen met een gratis Let’s Encrypt SSL Certificaat

Na het volgen van die handleiding merkte ik dat de aangemaakte website Debian standaard webpagina toonde, totdat ik het LE certificaat voor de website aanmaakte. Ook het ISPConfig Paneel deed raar, ik geloof omdat het het zelf ondertekende certificaat had en nu dit nieuwe certificaat of helemaal geen certificaat. Vernieuwen van pagina’s in browser loste dit op.

Als certificaten ingesteld zijn, voer je in browser https adres van server in. Klikken met andere muisknop op het pictogram links in de adresbalk van de browser toont informatie over het certificaat.

Ga naar ISPConfig Paneel Systeem tab, Interface Hoofdconfig en Mail tab. Stel daar

Use SSL/TLS encrypted connection for SMTP

op SSL.

Verder testen van het certificaat is mogelijk met hulpmiddelen op websites, gebruik Internet zoekmachines met

ssl testing

als zoekwoorden. Die gereedschappen testen meestal de website, bij het testen van certificaten die de e-mailserver heeft, zoek je met

ssl testing mail server

ISPConfig Roundcube Plugins

Deze plugins zijn nuttig voor webmail gebruikers. Ze maken het bijvoorbeeld mogelijk het e-mail wachtwoord in Roundcube te veranderen. Ook enkele andere instellingen kunnen in Roundcube gewijzigd worden. Ze kunnen allemaal in het ISPConfig paneel gewijzigd worden, maar sommige e-mail gebruikers willen het paneel misschien niet gebruiken.

Ik installeerde ISPConfig Rouncube Plugins met behulp van de Tutorial ISPConfig 3 Roundcube Plugin op Debian 9. De Tutorial werkte precies op Debian 10 Buster, behalve dat nu ispconfig3_account/config/config.inc.php een regel meer heeft:

$config['soap_validate_cert'] = true;

Dit kan op waarde true blijven, want het certificaat is goed ingesteld en getest in het vorige hoofdstuk van deze handleiding. Als de host echter geen geldig certificaat heeft, verander deze instelling dan in false.

Ik had één probleem. Sommige items in Account Section vertoonden een foutmelding

An error occurred.
Soap Error: The login is not allowed from <host ip-number>

Ik loste dit op door de Remote Access aan te vinken en posti.taleman.ovh te schrijven voor die rcmail-remote gebruiker die ik volgens de Tutorial had aangemaakt. Het lijkt erop dat de Tutorial zich vergist over het niet nodig hebben van “Remote Access” aangevinkt. Het lijkt me nu dat het zowel nodig is voor enkelvoudige server opstellingen als voor ISPConfig multiserver opstellingen met een aparte e-mail server.

Verder gebruik

Nu kun je een ander e-mail domein aanmaken. Vergeet niet voor dat domein MX record aan te maken, en het naar je e-mail server te laten wijzen. Je kunt dezelfde e-mail server gebruiken voor alle e-mail domeinen die je aanmaakt. Dit is de manier waarop het meestal gedaan wordt, want het zou nogal zonde zijn om voor elk e-mail domein een aparte e-mail server aan te maken.

Problemen oplossen

Na deze Handleiding werkt mijn vers opgezette e-mail server. Als de jouwe niet werkt, controleer dan of je deze handleiding gevolgd hebt en niet enkele stappen overgeslagen hebt.

Lezen op het Forum heeft uitgewezen dat veel voorkomende manieren om een niet werkende e-mailserver te hebben zijn verkeerde instelling voor hostname en hostname -f en/of fouten in het bestand /etc/postfix/main.cf.

Als je problemen met de DNS naamdienst vermoedt, controleer die met DNS met ISPConfig -tutorial. Er zijn website hulpmiddelen die DNS controleren, zoals intodns.com, dnschecker.com, mxtoolbox.com.

Als e-mails niet ontvangen of niet verzonden worden, is het postfix die die functies uitvoert en ze worden gelogd in /var/log/mail.log. Dus doe

tail -f /var/log/mail.log | grep postfix to see what happens when mail is being received or sent.

Als je problemen hebt om verbinding te maken met een e-mail programma (Thunderbird, bijvoorbeeld) gebruik je dit om te zien wat er gebeurt:

tail -f /var/log/mail.log | grep dovecot

Als een bepaalde e-mail problemen geeft, kun je de mail log entries vinden met het ID van die e-mail. Bijvoorbeeld:

Sep 23 14:19:34 posti postfix/smtps/smtpd[10260]: A9F2880C76:
client=dsl-tkubng21-58c1ce-191.dhcp.inet.fi[99.99.99.99],
sasl_method=PLAIN, [email protected]

Het ID voor die e-mail is A9F2880C76. Je kunt logregels voor die e-mail vinden met

# grep A9F2880C76 /var/log/mail.log

Commando mailq toont e-mails die in de uitgestelde wachtrij van postfix staan. Dat wil zeggen, die e-mails die nog niet afgeleverd zijn. Het is normaal dat daar enkele recente vermeldingen staan, e-mails kunnen niet altijd onmiddellijk bezorgd worden. Je kunt de inhoud van die e-mails zien met behulp van het Queue ID, zoals zo:

# postcat /var/spool/postfix/deferred/A/A9F2880C76

Howtoforge heeft ISPConfig Forums, vraag daar om advies.