6.7.2017 Docker Mailserver

Ein Mailserver mit IMAP/POP und SMTP ist eigentlich Standard bei eigenen virtuellen oder dezidierten Servern. Meistens wird dabei auf quelloffenen Dienste wie Dovecot und Postfix zurückgegriffen. Ganz klarer Vorteil, man kann sich eine eigene E-Mail Adresse mit seiner eigenen Domain erstellen und ist sofort einsatzbereit. Das gilt aber eigentlich fast nur, wenn man nur eine E-Mail Adresse und ein Postfach konfigurieren möchte. Hat man noch Familienangehörige und Freunde oder sogar Kunden, so wird es etwas kniffeliger und aufwändiger den Mailserver zu verwalten. Kleine Unternehmen nutzen deshalb fertige Groupware Produkte oder Microsoft Exchange. Aber es gibt kleinere Alternativen, man muss sie nur finden.

Mailcow

Das Prinzip von Mailcow ist denkbar einfach: Man nehme Dovecot, Postfix, ein bisschen Groupware und ein schönes Webinterface, packt alles in einzelne Docker-Container und fertig ist eine fertige “Mailsuit”. Natürlich kann Mailcow noch mehr, wie unter anderem einen fertigen Spam/Viren-Scanner und Filter. Mailcow wird zur Zeit ständig (vor allem vom Düsseldorfer André Peters) weiter entwickelt und in den 2 Wochen Nutzung ist vieles neues dazu gekommen. Dabei bleibt aber das Prinzip immer erhalten. Und das liegt an Dovecot und Postfix im Hintergrund.

Mailcow findet ihr unter der passenden Internet-Seite mailcow.email.

Mailcow Domain Interace

Migration von einem Dovecot Server

Wer schon Dovecot einsetzt, kann direkt mit der Migration anfangen. Dazu muss zuerst Mailcow installiert werden. Die Dokumentation der Entwickler ist dabei sehr detailliert und kann dazu genutzt werden.

Dann müssen die Domains und Postfächer angelegt werden. Hier können auch direkt die ARC/DKIM-Keys eingelagert werden. Das Importieren des Private-Keys wird dabei im Admin-Panel angeboten.

Nachdem alle Postfächer im Admin-Panel angelegt wurden, kann das “alte” vmail-Directory aus Dovecot in das “neue” von Mailcow kopiert werden. Unter Debian findet sich dieses hier: /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data/.

Natürlich muss noch ein SSL-Zertifikat hinterlegt werden: Dazu muss der Fullchain unter <Mailcow-Dir>/data/assets/ssl/cert.pem und der Private-Key unter <Mailcow-Dir>/data/assets/ssl/key.pem. Erst vor kurzem ist jedoch auch ein ACME-Container zu Mailcow hinzugekommen, der automatisch für die konfigurierten Domains Let’s Encrypt Zertifikate holt.

Rspamd als Spam-Filter Interface

Ist nun alles konfiguriert, kann man noch einen Blick auf das Spam-Filter Interface Rspamd werfen. Hier wird beschrieben, wie man dieses aktiviert. Solltet ihr Mailcow hinter einem eigenen nginx oder Apache mithilfe von einem ProxyPass verwenden solltet ihr zusätzlich noch eine Konfigurations-Datei leicht anpassen, da sonst einfach jedes Passwort genutzt werden kann. Dazu öffnet man die Datei <Mailcow-Dir>/data/config/rspamd/override.d/worker-controller.inc und kommentiert folgende Zeilen ein:

[...]
#secure_ip = "192.168.0.0/16";
#secure_ip = "172.16.0.0/12";
#secure_ip = "10.0.0.0/8";
[...]

POP abschalten

Wer kein POP braucht, weil er IMAP viel besser findet, kann dieses mithilfe der mailcow.conf einfach abschalten. Dazu muss man einfach die POP-Ports an den localhost oder besser gesagt an die IP 127.0.0.1 binden:

[...]
POP_PORT=127.0.0.1:110
POPS_PORT=127.0.0.1:995
[...]

Wer die Container schon erstellt hat, muss diese mithilfe von docker-compose neu erstellen:

docker-compose down
docker-compose pull
docker-compose up -d --remove-orphans

Firewall Hinweise

Wer, wie ich, Docker mit ufw oder einem anderen Firewall-Interface als iptables die Firewall-Regeln konfiguriert, muss folgendes beachten:

Ich habe eine Anleitung veröffentlich, wie man die automatische Portfreigabe durch Docker unterdrücken kann und die Container dann mithilfe von NAT wieder an das Internet “anschließt”. Dies ist NICHT für Mailcow geeignet. Lasst hier Docker die Regeln machen und schließt die Ports anderweitig (Beispielsweise durch binden an den localhost). Sollte das Mailcow-Netzwerk per NAT “angeschlossen” werden, wird jeglicher Mail- und Netzwerk-Verkehr als localhost an die Mailcow-Container übergeben. Das wird eine Open-Relay-Lücke nach sich ziehen, die logischerweise sehr schnell durch Spammer ausgenutzt wird.

Backup

Zu einem Mail-Server gehört natürlich auch ein vernünftiges Backup. Das Entwickler-Team hat dazu eine sehr gute Lösung bereit gestellt, die sowohl die Mailcow-Datenbank als auch das Mail-Verzeichnis sichert. Die Anleitung dazu kann hier gefunden werden.

Mein Fazit

Ich habe mit Mailcow bis jetzt sehr gute Erfahrungen gemacht. Es bringt alles fertig konfiguriert mit und lässt sich einfach und intuitiv bedienen. Patches für die einzelnen Dienste werden zügig eingespielt, da ständig daran entwickelt wird. Wichtig dabei ist natürlich ein regelmäßiges ausführen des Update-Skripts. Außerdem gefällt mir SOGo sehr gut, weil ich so das plumpe CalDAV und CardDAV von der Nextcloud los bin. Mailcow bringt noch einige andere tolle Dinge zum spielen und probieren mit, die ich hier nicht alle aufzählen und vorstellen kann. Schaut am besten einfach in die Dokumentation.

Wer gerne etwas neues im Bereich Mail-Server ausprobieren möchte und nach einer Alternative sucht, der hat mit Mailcow ein gutes System gefunden, das sich hoffentlich in der Zukunft als stabiles System beweisen wird.

Nach oben