Eigen mailserver opzetten met Modoboa

Eigen mailserver opzetten met Modoboa

Geschreven op 29-12-2020 door Robert Van der heide
Eigen mailserver opzetten met Modoboa

Run je liever om privacyredenen je eigen mailserver, maar vind je het lastig om zelf een mailserver op te zetten? Kijk dan eens naar het Modoboa open source project, waarmee je heel simpel een volledige mailserver kunt opzetten en installeren op je eigen VPS. In deze how-to laten we dat stap-voor-stap zien.

Wat is Modoboa?

Modoboa is een open source mailserver welke je op een Linux VPS kunt installeren. Het bevat veel features en opties:

  • Administratief panel waarmee je domeinen, mailboxen, forwarders/aliasen en meer kunt aanmaken en beheren
  • Je kunt filterregels aanmaken om mails te organiseren
  • Maak zoveel domeinen, mailboxen en forwarders/aliasen als je nodig hebt
  • SPF, DKIM en DMARC records kun je instellen voor je domeinnaam om de afleverbaarheid van je e-mail te vergroten
  • Je kunt contacten en agenda's bijhouden
  • Het heeft een webmail-interface,
  • Het heeft ondersteuning voor zowel MySQL/MariaDB, als ook PostgreSQL databases
  • Let's Encrypt ondersteuning voor het genereren van SSL certificaten
  • Uitgebreide statistieken en migratietools

Stap 1: voorbereiding van de installatie van Modoboa

Server aanmaken

Allereerst hebben we een VPS nodig. Een Server X2 van 10 euro per maand bij Cloud Provider met Ubuntu 20.04 als besturinssysteem voldoet.

Domein kiezen + hostname instellen

Voordat we kunnen beginnen met de installatie van Modoboa op een server, moet je eerst een (sub)domein bepalen welke je gaat gebruiken voor de e-mail. Dit kan bijvoorbeel in de vorm zijn van mail.je-domein.nl. Dit (sub)domein stel je in als hostname tijdens het aanmaken van de server.

DNS instellen

Zorg er voor dat de DNS van je gekozen (sub)domein gekoppeld is aan het IP adres van je server. Dit geldt dan voor het A record als ook het MX record. Dit kun je doen bij de provider waar je domeinnaam is geregistreerd. De 2 DNS records zien er als volgt uit:

  • mail A 123.123.123.123
  • MX mail.je-domein.nl.

PTR record instellen

Als laatste voorbereidende stap dienen we het PTR record van het IP adres van je server te wijzigen naar het door jou (sub)domein. Dit kun je in onze portal doen onder Netwerk > IP adressen.

Inloggen op de server

Dan kunnen we via SSH als root inloggen op de nieuw aangemaakte server, en gaan we eerst het systeem updaten met:

apt update

Stap 2: Modoboa installeren

Vervolgens installeren we Python en Git - wat nodig is voor het installeren van Modoboa:

apt install python-virtualenv python-pip git -y

Nu klonen we de repository van Modoboa op Github met:

git clone https://github.com/modoboa/modoboa-installer

We gaan dan naar het installer mapje:

cd modoboa-installer

En met het volgende comanndo maken we een configbestand aan, waarin je ook je gekozen (sub)domein opgeeft:

./run.py --stop-after-configfile-check mail.je-domein.nl

De output ziet er als volgt uit:

Welcome to Modoboa installer!
Configuration file installer.cfg not found, creating new one.

Dan gaan we vervolgens het aangemaakte configbestand editten:

nano installer.cfg

Met de onderstaande config geven we aan dat SSL certificaten via Let's Encrypt, en dat we MySQL als database willen gebruiken (in plaats van Postgres wat Modoboa standaard gebruikt):

[certificate] 
generate = true
type = letsencrypt 

[letsencrypt] 
email = mail@voorbeeld.nl

[database]
engine = mysql
host = 127.0.0.1
install = true

Nu dat we de config klaar hebben staan, kunnen we de installatie van Modoboa uitvoeren met:

./run.py --interactive mail.je-domein.nl

Je krijgt nu de volgende output en vraag te zien, waar je y op antwoordt:

Welcome to Modoboa installer!
Warning:
Before you start the installation, please make sure the following DNS records exist for domain 'example.com':
 mail IN A <IP ADDRESS OF YOUR SERVER>
 IN MX mail.example.com.
Your mail server will be installed with the following components:
modoboa automx amavis clamav dovecot nginx razor postfix postwhite spamassassin uwsgi radicale opendkim
Do you confirm? (Y/n) y

Vervolgens gaat de installer druk aan de slag om een SSL certificate via Let's Encrypt aan te vragen en alle onderdelen van de Modoboa mailserver te installeren. Dit duurt een minuut of vijf, dus neem - zoals voorgesteld wordt - gerust een kopje koffie.

The process can be long, feel free to take a coffee and come back later ;)

Starting...

Generating new certificate using letsencrypt

Installing amavis
Installing spamassassin
Installing razor
Installing clamav
Installing modoboa
Installing automx
Installing radicale
Installing uwsgi
Installing nginx
Installing opendkim
Installing postfix
Installing postwhite
Installing dovecot

Congratulations! You can enjoy Modoboa at https://mail.example.com (admin:password)

Modoboa is nu met succes geinstalleerd.

Stap 3: inloggen op Modoboa

Je kunt nu inloggen op je Modoboa mailserver door in je browser naar https://mail.je-domein.nl te gaan, en in te loggen met de gebruikersnaam en wachtwoord die in de vorige stap aan het einde van de installatie werd getoond.

Modoboa inlogscherm

Ga dan na het inloggen op "admin account" linksbovenin, en ga dan naar Settings > Profile om je wachtwoord te wijzigen.

Wachtwoord wijzigen in Modoboa

Vervolgens moet je even opnieuw inloggen.

Stap 4: domein aanmaken in Modoboa

Nu gaan we een domeinnaam aanmaken op de mailserver. Ga naar Domains en klik op de Add knop. Je krijgt dan het volgende scherm te zien, welke je ook als volgt invoert. Bij name voor je je (sub)domein in, en bij "Key selector" het (sub)domein zonder de domeinextensie zoals .nl of .com.

Domein aanmaken in Modoboa

In het volgende scherm gaan we een domain administrator aanmaken. Neem de volgende instellingen over:

Het domein is nu met succes aangemaakt. Als laatste stap kunnen we het SPF, DKIM en DMARC record gaan instellen. Ga hiervoor naar Domains, klik op de domeinnaam, en ga dan naar DNS.

Domeinnaam kiezen
DNS gedeelte voor domeinnaam in Modoboa

SPF record

Het SPF record heeft het volgende formaat wat je als TXT record voor je domein instelt.:

mail TXT "v=spf1 a mx ip4:123.123.123.123 ~all"

hierbij vervang je 123.123.123.123 door het IP adres van je server.

DKIM record

De inhoud van het DKIM record kun je vinden door op de "Show Key" knop te drukken. Kopieer en plak wat bij "bind/named" genoemd staat om als TXT record in te stellen voor je domein.

DKIM record

DMARC record

Het DMARC record heeft het volgende formaat, en stel je ook weer als TXT record in voor je domein:

_dmarc TXT "v=DMARC1; p=quarantaine; pct=100; rua=mailto:dmarc-reports@je-domein.nl"

Stap 5: Automatisch verlengen van Let's Encrypt SSL certificaten

Standaard werkt Ubuntu met certbot voor het verlengen van SSL certificaten. Helaas werkt dit niet altijd goed met Modoboa samen. Daarom is het goed om certbot te vervangen door een cronjob.

Certbot uitschakelen kan met:

sudo systemctl disable certbot.timer && sudo systemctl stop certbot.timer

En de cronjob instellen kan met:

crontab -e

Voeg dan de volgende regel toe:

0 */12 * * * /opt/certbot-auto renew -q && systemctl reload nginx postfix dovecot