E-Mail-Server mittels Docker und Mailcow

Mit Docker und Mailcow lässt sich ein eigener E-Mail-Server einrichten. Wichtig dabei sind die korrekten DNS-Einträge, bevor überhaupt mit dem Aufsetzen vom E-Mail-Server begonnen wird. Das Docker-Image von Mailcow installiert nginx als Web- und mariadb als Datenbankserver. Es ist durchaus ratsam, den E-Mail-Server getrennt zu betreiben. WordPress lässt sich zwar auch unter nginx und php-fpm installieren, harmonisiert jedoch nicht optimal damit. Im folgenden Beispiel installieren wir Mailcow mittels GitHub in Docker.

Folgende Einträge sind für die Domain example.com für einen funktionierenden Mailcow-Server IP: 123.45.678.900 notwendig. Mit Mailcow können durchaus mehrere Domains als E-Mail verwaltet werden.

mail.example.com           A        123.45.678.900
autoconfig.example.com     CNAME    mail.example.com
autodiscover.example.com   CNAME    mail.example.com
example.com                MX       mail.example.com
_dmarc.example.com         TXT      v=DMARC1; p=reject; rua=mailto:mailauth-reports@example.com
example.com                TXT      v=spf1 mx -all

I. Docker installieren

Docker lässt sich mit wenigen Schritten in Debian installieren.

# apt install ca-certificates curl gnupg lsb-release
# curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# echo \ 
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# apt update
# apt-get install docker-ce docker-ce-cli containerd.io
# apt install docker-compose

II. Mailcow installieren (git)

Weise dem Server zu, Docker bei jedem Neustart zu laden und starte den Service:

# systemctl enable docker.service
# systemctl start docker.service

Wechsle nun nach /opt

# cd /opt

und lade das Docker-Image herunter:

# git clone https://github.com/mailcow/mailcow-dockerized

Welchsel das Verzeichnis und generiere die generate_config.sh

# cd mailcow-dockerized/
# ./generate_config.sh

Baue schlussendliche das Docker-Image:

# docker-compose pull
# docker-compose up -d


Mailcow starten


Nach erfolgreicher Installation wird Mailcow per Subdomain aufgerufen. In diesem Beispiel zeigt unser MX-Eintrag auf mail.example.com
Ändere unbedingt das Standard-Login vom User: admin und Passwort: moohoo ab. Zudem ist nach erfolgreicher Installation ein ARC/DKIM-Key zu setzen und zu importieren. Den soeben generierten Key fügen wir schlussendlich noch als TXT in die DNS-Einträge ein.

# openssl genrsa -out private.key 2048

Den Schlüssel findest du unter: (oder im aktuellen Verzeichnis, in welchem du dich befindest) /opt/mailcow-dockerized/private.key
Erstelle den DNS-Eintrag nach dem Muster:
dkim._domainkey.example.com     TXT     v=DKIM1 (...)