Mailserver mit Mailcow betreiben

Mi, 10. November 2021, Lioh Möller

Einen eigenen Mailserver zu betreiben ist in der Regel komplex und mit grossem Aufwand verbunden. Mit Mailcow lässt sich in wenigen Schritten ein Postfix basierter Mailserver mit einem Webfrontend zur einfachen Verwaltung einrichten.

Die Installation ist dank Docker mit wenig Aufwand durchführbar. Dazu sollte zunächst Docker aus den offiziellen Repositories bezogen werden.

curl -sSL https://get.docker.com/ | CHANNEL=stable sh
# After the installation process is finished, you may need to enable the service and make sure it is started (e.g. CentOS 7)
systemctl enable --now docker

Mailcow setzt eine ältere Version von docker-compose voraus, welche wie folgt installiert werden kann:

curl -L https://github.com/docker/compose/releases/download/$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Eine Installation von Mailcow erfolgt daraufhin beispielsweise unter /opt mit folgenden Befehlen

cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized

Mithilfe von ./generate_config.sh lässt sich eine initiale Konfigurationsdatei erstellen. Dabei muss der fqdn des Servers angegeben werden.

Hinweis: das Script sollte nur bei der Ersteinrichtung ausgeführt werde, da zufällige Datenbankpasswörter generiert werden, welche andernfalls überschrieben würden.

Die benötigten Images können daraufhin mithilfe von docker-compose pull bezogen werden.

Über den folgenden Befehl werden abschliessend die Docker Instanzen gestartet:

docker-compose up -d

Damit ist die eigentliche Installation bereits abgeschlossen und das Webfrontend lässt sich über https://${MAILCOW_HOSTNAME} aufrufen, wobei die URL an die lokalen Gegebenheiten angepasst werden muss.

Um einen reibungslosen Mailversand und Empfang sicherzustellen müssen entsprechende DNS Einträge auf der Domain für die Mailcow zuständig sein soll definiert werden. Im einfachsten Falle sehen diese wie folgt aus:

# Name              Type       Value
mail                IN A       1.2.3.4
autodiscover        IN CNAME   mail.example.org. (dein ${MAILCOW_HOSTNAME})
autoconfig          IN CNAME   mail.example.org. (dein ${MAILCOW_HOSTNAME})
@                   IN MX 10   mail.example.org. (dein ${MAILCOW_HOSTNAME})

Es empfiehlt sich darüber hinaus DKIM, SPF und DMARC zu konfigurieren wie in der offiziellen Anleitung beschrieben.

Sofern eine Firewall zum Einsatz kommt, sollte ausserdem sichergestellt werden, dass die TCP-Ports 25|80|110|143|443|465|587|993|995|4190|5222|5269|5443 erreichbar sind.

Nach der Anmeldung am Webfrontend als Benutzer admin mit dem Passwort moohoo sollte in einem ersten Schritt ein neues Passwort vergeben werden. Dazu wählt man in der Übersicht beim Benutzer Admin den Punkt Bearbeiten.


Daraufhin kann die eigene Domain über den Punkt Konfiguration / E-Mail-Setup hinzugefügt werden. Im einfachsten Fall befüllt man lediglich das Feld Domain und belässt zunächst die Voreinstellungen.

Der für die Konfiguration vom DKIM im DNS benötigten Informationen, lassen sich nach der Erstellung der Domain über den Punkt Bearbeiten auslesen.

Über den Punkt Mailboxen lassen sich neue Postfächer hinzufügen. Sofern Sieve zum Einsatz kommen soll, muss darauf geachtet werden, dass in den Mailboxeinstellungen im Bereich Erlaubte Protokolle Sieve aktiviert ist. Zur Erstellung von Abwesenheitsnotizen wird Sieve vorausgesetzt,

Aliase lassen sich über die gleichnamige Funktion anlegen. Dort ist es auch möglich sogenannte Catch-All Aliase anzulegen, über die E-Mails an eine beliebige Adresse entgegengenommen werden könne. Diese lassen sich an eine Zieladresse, wie die einer zuvor angelegten Mailbox weiterleiten.

Weiter Informationen finden sich in der ausführlichen Dokumentation des Projektes.