Beveilig je ISPConfig 3 mailserver met een geldig Let’s Encrypt SSL certificaat

Als je je eigen mailserver hebt, is het een goed idee om er veilig mee te verbinden via een SSL/TLS verbinding. Je hebt een geldig certificaat nodig voor deze beveiligde verbindingen. In deze handleiding leggen we uit hoe je je mailserver beveiligd met een Let’s Encrypt certificaat in dat automatisch vernieuwd wordt.

Deze handleiding gebruikt certificaten uitgegeven door acme.sh. Als je certbot gebruikt, volg dan in plaats daarvan deze tutorial: https://www.howtoforge.com/community/threads/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-ssl-certificate-certbot.86372/

Opmerking voor ISPConfig 3.2: ISPConfig 3.2 kan tijdens de installatie automatisch een geldig Let’s Encrypt SSL certificaat voor de hostnaam van de server aanmaken, dat ook voor de mailserver gebruikt wordt. Het is niet nodig om handmatig een Let’s Encrypt SSL certificaat aan te maken zoals hier beschreven op ISPConfig 3.2 systemen, tenzij je verschillende domeinnamen in het SSL certificaat nodig hebt naast de server hostnaam.

Vereisten

  • Je server moet ge├»nstalleerd zijn volgens de Perfect Server handleiding voor jouw OS.

Aan de slag

Ik zal de volgende hostnamen gebruiken voor mijn mailserver: mail.example.com, smtp.example.com, imap.example.com.

Vervang alle rood onderstreepte hostnamen in deze handleiding door je eigen.

Maak de DNS records voor je hostname(s), zodat ze naar je server wijzen. Dit moeten A (en eventueel AAAA) records zijn. Ga dan in de ISPConfig interface naar het tabblad Sites.

Uitgeven van het certificaat

Klik onder Sites op “Add new website”. Stel mail.example.com in als domein. Schakel Auto-Subdomain uit, en vink het vakje Let’s Encrypt aan.

Hierna kun je je andere hostnamen als aliasdomeinen toevoegen, door naar de lijst met aliasdomeinen te gaan en op “Add new aliasdomain” te klikken. Kies smtp.example.com als domein, en mail.example.com als bovenliggende website. Schakel Auto-Subdomain uit en sla het nieuwe record op. Herhaal dit voor al je andere hostnamen.

Controleer of het certificaat op zijn plaats is. Je kunt dit doen met een hulpmiddel als https://www.sslshopper.com/ssl-checker.html

Het zou er ongeveer zo uit moeten zien:

Schermafbeelding van SSL controle

Als de hostname(s) vermeld staan en er geen andere fouten zijn, kun je verder gaan. Controleer anders de fouten en los ze op voor je verder gaat.

Het certificaat vervangen door het Let’s Encrypt certificaat

Nu kunnen we het huidige certificaat vervangen door je vertrouwde certificaat. Log in op je server en voer deze commando’s uit:

(vervang mail.example.com door de hostnaam die je voor de website gebruikte)

cd /etc/postfix/
mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak
mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak
ln -s /root/.acme.sh/mail.example.com/fullchain.cer smtpd.cert
ln -s /root/.acme.sh/mail.example.com/mail.example.com.key smtpd.key
systemctl restart postfix
systemctl restart dovecot

Het certificaat zou nu gebruikt moeten worden voor je Postfix en Dovecot server. Maar we zijn nog niet klaar! Het Let’s Encrypt certificaat vernieuwt elke 60 dagen, dus moeten we het proces van vervangen van het certificaat in de toekomst automatiseren, zodat je het niet kunt vergeten.

Zet een script voor automatische vernieuwing op

Open een nieuw script bestand:

nano /etc/init.d/le_mailserver_restart.sh

Plak dit in dat bestand:

#!/bin/sh
### BEGIN INIT INFO
# Provides: LE MAILSERVER CERT AUTO UPDATER
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: LE MAILSERVER CERT AUTO UPDATER
# Description: Restart mail server automatically when a new Let's Encrypt certificate is issued.
### END INIT INFO
systemctl restart postfix
systemctl restart dovecot

Om dit script bij vernieuwing automatisch te laten starten, gaan we incron installeren en instellen.

apt install incron

Maak het script uitvoerbaar en sta root toe incron te gebruiken:

chmod +x /etc/init.d/le_mailserver_restart.sh
echo "root" >> /etc/incron.allow

Open nu de incrontab editor:

incrontab -e

Voeg dit (nogmaals, vervang mail.example.com door de hostnaam die je gebruikte) toe aan het bestand:

/root/.acme.sh/mail.example.com/ IN_MODIFY /etc/init.d/le_mailserver_restart.sh

Met grote dank aan forumgebruiker Ahrasis voor de originele code en handleiding.

Werkt het niet?

Ik had hier eens een probleem mee, omdat Let’s Encrypt een van de alias domeinen als hoofddomein gebruikte. Je kunt het hoofddomein vinden in het eerder genoemde SSL gereedschap als “Common name” of door de inhoud van /etc/letsencrypt/live op te sommen om te zien welke van de (alias)domeinen daar een map heeft.

Als je nog steeds een probleem ondervindt, open dan een draad op het forum zodat anderen je kunnen helpen.