Eigener und sicherer Mailserver einfach aufgesetzt: Mailcow

2

Als ich meine erste VM bestellt hatte, war ich ganz euphorisch darauf, meinen ersten „schnelleren“ Webserver einzurichten. Was ich dabei ganz vergessen hatte: eine Webseite ohne Mailserver bringt nicht viel. Im Lauf der folgenden Jahre habe ich aufgrund von Serverumzügen, rumprobieren und Anleitungen testen um die 5 Mailserver installiert, migriert und verwaltet. Jedes Mal mit Postfix, Dovecot, Spamassasin, Amavis etc.

Und immer waren es kurz nach Neuinstallation des Mailserver die gleichen Probleme, die sich ergaben: Spamassassin wollte nicht so recht Spam erkennen, Zertifikatsfehler, unhandliche Postfixverwaltungen u.ä. Vor der letzten Migration meines Mailservers auf einen neuen Server habe ich mir gut überlegt, ob ich wieder eine tolle Anleitung von Thomas Leister zu Rate ziehe oder auf ein fertiges System setze. Denn letztlich ist es nur ein Mailserver und ein solider Standard, der alles integriert hat, vollkommen ausreichend. So bin ich auf Mailcow gestoßen. Ich bin kein Docker Fan, aber da ich Protonmail keine Konkurrenz machen möchte und es einfach zu migrieren ginge, habe ich mich für dieses schöne Docker Konstrukt entschieden.

Mailcow enthält:

  • Postfix, Dovecot
  • Rspamd
  • Fail2ban
  • SOGo Webmail
  • DKIM
  • Quotas, …

Vorbereitung

Nehmt am besten eine neue, frische VM um den Mailserver zu starten. Natürlich lässt sich ein Mailserver auch mit anderen Diensten am Server installieren, aber beim Mailserver braucht es eine wichtige Voraussetzung: Der Hostname des Servers muss gleich dem Mailserver FQDN sein und gleich dem rDNS.

Beispiel: unser Mailserver hat den Hostname und rDNS mail.webinx.eu und im Mailserver selbst ist mail.webinx.eu als Sende- und Empfangsserver gesetzt. Diesen Hostname solltest du zu allererst anlegen und in /etc/hosts sowie dem rDNS hinterlegen.

Installation

Für den Betrieb von Mailcow benötigst du nur Docker und Docker-Compose. Wenn du den Server auch für andere Sachen verwenden möchtest, kannst du nginx zusätzlich installieren. Im folgenden anhand von Debian 10 dargestellt.

add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable"
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-compose

Um mit Mailcow zu starten, musst du das Mailcow Github Repo nach /opt/ auschecken und dann den Mailcow Einrichtungswizard starten:

cd /opt/
apt install git
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh

Hier ist es wichtig, den Hostnamen des Mailservers zu hinterlegen (= Hostname des Servers selbst, siehe oben). Die Zeitzone sollte automatisch erkannt werden, also einfach Enter drücken. Bevor ihr den Mailserver hochfahrt, die generierte mailcow.conf überprüfen. Solltet ihr einen externen nginx verwenden (Mailcow selbst hat einen nginx im Docker), solltet ihr hier andere Ports für den internen nginx einstellen, z.B.:

HTTP_PORT=8080
HTTP_BIND=127.0.0.1

HTTPS_PORT=8089
HTTPS_BIND=127.0.0.1

Solltet ihr noch weitere Customizings einstellen wollen, könnt ihr im weiteren Verlauf der Datei noch bestimmte Dienste ausschließen, was ich nicht empfehlen würde.

Wenn ihr damit fertig seid, im mailcow Verzeichnis folgende Befehle ausführen. Dann ist der Server auch schon online:

docker-compose pull
docker-compose up -d

Für den nginx  Reverse Proxy der offiziellen Installationsanleitung folgen.

Konfiguration

Nach der Installation solltest du sofort den Admin User festlegen, indem du die Mailcow URL (siehe Reverse Proxy) aufrufst. Unter Konfiguration => Server-Konfiguration setzt du die wichtigsten Parameter: Logo, Weiterleitungshosts (Relay Hosts), DKIM Keys, Fail2ban, Rspamd Web Passwort. Bevor man effektiv DKIM Schlüssel anlegen kann, muss man Domains hinzufügen, denen man dann Mailboxen oder Aliases zuordnen kann. Das geht unter Konfiguration => E-Mail Setup:

Eine Domain kann unabhängig von den DNS Einträgen dieser Domain hinzugefügt werden. So kannst du das komplette Setup vor einer Migration fertig machen. Das globale Adressbuch sollte per default nicht aktiviert sein – außer die Domain wird für ein Unternehmen genutzt. Nachdem man eine Domain hinzugefügt hat, muss der SOGo Container neu gestartet werden, um sie verwenden zu können.

Die restlichen Features werde ich nicht im Detail erklären, da sie leicht verständlich und vom Prinzip klar sein sollten. Um bestehende Mailkonten bequem nach Mailcow migrieren zu können, gibt es den Punkt Synchronisation. Hier gut die Einstellungen durchlesen und am besten External als Migrationsordner löschen, damit die Struktur gleich bleibt. Die Synchronisation sollte man nach DNS Umstellung maximal 2 Tage laufen lassen.

DNS

Damit Mails zugestellt werden können, müssen einerseits die DNS Einstellungen für den Mailhost selbst und natürlich für jede Maildomain eingestellt werden. Unter Domains in Mailcow sieht man die richtige DNS Einstellung für jede Domain.

Einfach die entsprechenden DNS Vorschläge rauskopieren und jeweils beim Domainhoster hinterlegen. SRV sollte unterstützt sein. Damit die DKIM Keys generiert sind, die als Public Key auch im DNS hinterlegt sein müssen unter Server-Konfiguration DKIM Keys für alle fehlenden Domains generieren lassen:

Wichtig: Änderungen im DNS können bis zu 24 Stunden dauern.

Die Sicherheit in Mailcow

Der Anbieter von Mailcow meint zum Thema Sicherheit, dass die meisten Dinge schon out-of-the-box konfiguriert sind. Für DNSSEC Validierung hat Mailcow Unbound dabei als DNSSEC-enabled Recursor.
Es ist grundsätzlich nur verschlüsselte Passwortübertragung aktiv. Wer es ganz sicher mag, sollte in Mailcow ein- und ausgehende Mails per TLS erzwingen. Das ist eine pro-Mailbox Einstellung. TLS 1.3 ist aktiv.

Zum Abschluss

Testet nun euren neuen Mailserver und die Qualität eurer Mails mit mail-tester.com. 10/10 sollte auf jeden Fall als Ergebnis herauskommen. Wenn ihr hier Hilfe braucht, wendet euch auch jederzeit gern an den Mailcow Support. Support-Pakete sind nicht teuer und wer gar nichts hosten möchte, bekommt auch ein Managed Mailcow System.

Wenn der Mailserver selbst Mails verschicken können soll, weil z.B. Webformulare Mails ausschicken oder Serverdienste selbst Benachrichtigungen versenden, anhand dieser offiziellen Anleitung einen lokalen Postfix installieren.

Updates sind denkbar einfach: ihr müsst nur die update.sh im mailcow Verzeichnis aufrufen.


Du möchtest regelmäßig Neuigkeiten von meinem Blog? Trag dich für meinen Newsletter ein:

2 Comments
  1. Marc says

    kleiner tipp noch zum testen vom mailserver: internet.nl
    recht nett um mailserver und websiten zu testen auf verschiedenste dinge 🙂

  2. Michael Voelker says

    Weitere coole Containerizierung sind diese Images:

    Darkstat – Monitoring your Network
    Ideal um den Traffic im Netzwerk zu überwachen.

    https://hub.docker.com/r/agrrh/darkstat

    Overleaf– Latex in a webapp
    Ideal um Latex zentral mit schönen Frontend zu bedienen

    https://hub.docker.com/r/sharelatex/sharelatex

    SeoBot – Monitoring your Websites
    Mein Telegramm-Bot um die Platzierung von Websites bei Google zu checken

    https://software-and-testing.de/seo/
    https://gitlab.com/mvoelker/seo_telegram_bot.git

    Grüße

    Hanseatic-Webdesign.de

Leave A Reply

Your email address will not be published.