Dieses Tutorial ist VALID.

Bitte lies Dir den Disclaimer durch, bevor Du eine Anleitung umsetzt...

Haftungsausschluss / Disclaimer

Mailcow installieren – der „dockerisierte“ Mailserver

Anlegen einer Domain, Mailbox und Alias

In der Menüleiste öffnen wir erneut das Drop-Down-Menü von „Konfiguration“ und wählen hier „E-Mail-Setup“.

Domains

Bei Mailcow müssen wir zuerst die Domains anlegen, für die sie sich später um Postfächer und Weiterleitungen kümmern soll. Dazu klicken wir unten auf den grünen Punkt „Domain anlegen“. Es öffnet sich ein Fenster mit Datenfeldern. „Domain“ und „Beschreibung“ müssen wir beide ausfüllen. Zuerst legen wir eine Domain für unseren Mailserver an. Bei mir wäre das „xp-server.de“ als Domain. Die restlichen Werte lasse ich so stehen, es sei denn, wir wissen schon, ob wir mehr Postfächer, Aliasse oder Speicherplatz benötigen. Unten drücken wir dann den Button „Nur Domain hinzufügen“.

Diesen Schritt wiederholen wir jetzt für alle Domains, für die Mailcow später zuständig sein soll.
Keine Sorge, die DNS-Einträge der Domains brauchen noch nicht vorhanden sein. Die editieren wir später, wenn wir die DKIM-Schlüssel haben…

Postfächer (Mailbox)

Ein „Postfach“ ist das „Real Thing“. Eine „echte“ Mailadresse, in die wir per Benutzer / Passwort einloggen und die E-Mails empfangen, verschicken und speichern kann.

Oben bei den Reitern stellen wir nun von „Domains“ auf „Mailboxen“ um. Neue Postfächer legen wir mit dem grünen Button „Mailbox hinzufügen“ an. Auch hier öffnet sich ein Fenster mit Eingabefeldern.

Auf den Screenshots lege ich gerade den Fun-User „schneller@raser.de“ an. Für unsere Mail-Domain wählen wir was anderes:

Als erstes wählen wir die Domain über das Drop-Down-Menü aus. Dann geben wir dem Postfach seinen Namen (erstes Feld, der „linke“ Teil der Mailadresse). Hier wähle ich „postman“. Wir können ein Quota für das Postfach festlegen und müssen dann ein Passwort wählen, das wir zwei Mal eingeben.

Sehr cool ist die Funktion „Check against haveibeenpwned.com“, die eine Passwort-Datenbank beauskunftet, ob unser Passwort eventuell schon einmal geleaked wurde. In dem Fall rate ich strikt davon ab, es zu verwenden, da wir für Wörterbuchattacken extrem anfällig wären…

Sind wir fertig mit den Eingaben, klicken wir auf „Hinzufügen“ und unser Postfach ist aktiv!

Hinweis: Über dieses Postfach (postman@xp-server.de) versenden wir später die E-Mails von allen unseren Diensten und Anwendungen (WordPress, Matomo und Nextcloud). Es funktioniert aber auch jedes andere Postfach, auf das wir Zugriff haben…

Weiterleitungen (Alias)

Eine „Weiterleitung“ kann E-Mails empfangen, diese aber nicht speichern und auch keine Mails versenden. Die Weiterleitung stellt E-Mails nur in ein anderes Postfach zu. Die Alias-Funktion von Mailcow ist sehr mächtig: Es kann eine 1:1, 1:n, n:1 oder n:m bzw. sogar eine „Catch-All“-Weiterleitung angelegt werden. Dazu gleich mehr:

„Normale“ Weiterleitung(/en)

Oben bei den Reitern wählen wir „Aliasse“ und im Drop-Down ebenfalls „Aliasse“. Eine neue Weiterleitung legen wir mit einem Klick auf den grünen Button „Alias hinzufügen“ an. Die „Quelle“ muss eine Domain sein, die von unserer Mailcow verwaltet wird. Das Ziel darf auch außerhalb unseres Mailservers liegen.

Der einfachste Fall wäre eine 1:1 Weiterleitung:
Wir möchten „info@xp-server.de“ an „postman@xp-server.de“ weiterleiten. Dazu tragen wir „info@xp-server.de“ oben als Quelle und „postman@xp-server.de“ unten als Ziel ein. Wir müssen nur darauf achten, dass hier die komplette E-Mail Adresse eingegeben werden muss. Mit „Hinzufügen“ speichern wir unsere Weiterleitung.

Die „Sonderfälle“ funktionieren im Prinzip genau so…
Eine 1:n Weiterleitung leitet eine Quelle auf mehrere Ziele um. So könnten wir alle Mails, die auf „info@xp-server.de“ aufschlagen, auch an zwei Adressen leiten. Einfach bei Ziel „postman@xp-server.de,fiedler@cpf.de“ eingeben. Dann würde jede Mail von „info@xp-server.de“ sowohl an „postman@xp-server.de“ als auch an „fiedler@cpf.de“ weitergeleitet werden.

n:1 ist das Spielchen anders rum: Wollen wir zum Beispiel die Adressen „postmaster@xp-server.de“ und „abuse@xp-server.de“ zusammen auf eine Adresse weiterleiten, schreiben wir beide bei „Quelle“ – durch Komma getrennt – und bei Ziel dann zum Beispiel „fiedler@cpf.de“. Das spart uns das Anlegen von zwei Einzel-Aliassen.

n:m wäre dann „postmaster@xp-server.de“ und „abuse@xp-server.de“ an sowohl „postman@xp-server.de“ als auch „fiedler@cpf.de“. Hier tragen wir – ganz logisch – oben die beiden Quellen kommagetrennt und unten, ebenfalls kommagetrennt, die beiden Ziel-Adressen ein.

„Catch-All“ Weiterleitungen

Ein „Catch-All“ ist eine Besonderheit bei den E-Mail Weiterleitungen. Er steht für „Alles außer unseren angelegten Postfächern und Aliassen“. Eingerichtet wird er als Quelle mit „@xp-server.de“. Dann würden *alle* Phantasieadressen von xp-server.de, die nicht bereits als Postfach oder Weiterleitung angelegt worden sind, von der Regel erfasst (blabla@, xxx@, werzp@ uswusf…).

Früher war das eine beliebte Art, „alle“ Postfächer in einem zu bündeln. Mit dem heutigen Spam-Aufkommen rate ich aber davon ab, einen Catch-All zu verwenden…

„Domain“ Aliasse

Ein Domain-Alias schreibt den „rechten“ Teil der E-Mail Adresse um. Haben wir zum Beispiel die beiden Domains „xp-server.de“ und „xpserver.de“ einmal mit und einmal ohne Bindestrich, brauchen wir für die „Nebendomain“ nicht noch mal Postfächer anlegen. Ein „Catch-All“ Alias würde uns aber zu viel Spam von der Nebendomain mitnehmen. „Normale“ Aliasse sind eventuell umfangreich anzulegen und müssen gepflegt werden.

Abhilfe schafft hier einen Domain-Alias: Als Quelle „xpserver.de“ und im Drop-Down-Menü wählen wir die „xp-server.de“ als Ziel aus. Mit „Hinzufügen“ schalten wir den Alias aktiv.

Jetzt wird jede Mail, die an [xxx]@xpserver.de versendet wird, auf [xxx]@xp-server.de zugestellt. Dort gelten dann die jeweiligen Postfächer, Aliasse und Regeln. Sprich wenn „meinereiner“ nicht als Postfach oder Alias bei xp-server.de existiert, eine Mail aber an meinereiner@xpserver.de geschickt wird, schreibt der Alias um auf meinereiner@xp-server.de – und der lehnt die Mail dann ab, weil kein Postfach existiert.

Anzeige *

33 Kommentare zu „Mailcow installieren – der „dockerisierte“ Mailserver“

  1. ZITAT
    “Hostname” darf NICHT “Mailname” sein. Heißt der Mailserver “mail.xp-server.de”, dann darf der Hostname nicht genau so lauten. Hostname wäre hier z.B.: “xp-server.de”.
    ZITAT-END

    Was das für ein Schwachsinn?
    xp-server.de = Domainname!
    Und wo steht bitte das FQDN nicht Mailname sein darf?

  2. Hallo,
    ich habe noch ein Problem mit den Zertifikaten.
    Folgender Fehler im ACME Protokoll:
    mail.mydomain – Cannot validate any hostnames, skipping Let’s Encrypt for 1 hour.
    mail.mydomain – Confirmed A record with IP xx.xx.xx.xx, but HTTP validation failed
    Ich habe keine Idee warum.
    Port 80 ist freigeschaltet.

    Gruß Rolf

    1. Peter Fiedler

      Hallo Rolf,
      tut mir leid, aber den Fehler hatte ich noch nicht und kann darum keinen Tipp geben, woran das liegen könnte.
      Die Mailcow hat keine Firewall – 80 sollte auf dem Server offen sein, ja.

      Bitte mach einen Eintrag im Community Forum, da tummeln sich auch Entwickler. Die sollten Dir da kompetent weiterhelfen können.

      Beste Grüße
      Peter.

  3. Hallo,
    ich habe ein Testsystem aufgesetzt und es lief wunderbar.
    Dann habe ich ./update.sh ausgeführt.
    Nun starten die Container nicht mehr.
    Fehler beim Ausführen von docker-compose up -d
    ERROR: The Compose file ‚./docker-compose.yml‘ is invalid because:
    networks.mailcow-network.ipam.config.subnet is invalid: should use the CIDR format
    Ich habe keine Idee, was ich machen soll.
    Gruß
    Rolf

    1. Peter Fiedler

      Hallo Rolf,
      hab auf meinem Testserver auch gerade ein update.sh gefahren und da ist die Mailcow danach wieder anstandslos hochgekommen.

      Da ich an der Stelle auch nur raten kann, fragst Du am besten direkt im MailCow Forum die Community um Rat:
      https://community.mailcow.email/

      Viel Glück!
      Peter.

    2. Fehler gefunden.
      In der mailcow.conf
      IPV4_NETWORK=172.22.1
      stand dummes Zeug drin.
      Vorsicht beim unsachgemäßen editieren.

      Gruß
      Rolf

  4. Ich möchte die bisherige Installation von Mailcow unter einer anderen URL verfügbar machen, beudetet das Admin-Interface aber auch die SOGO-Instanz. Worauf sollte ich achten und wo muss ich die Anpassungen vornehmen? Der Mail-Hostname ist identisch zur bisherigen URL. Könnte das Probleme geben?

  5. Hallo,
    vielen Dank für die ausführliche Anleitung.
    Hat einer von euch es geschafft Mailcow mit in den Traefik verbund einzufädeln?
    Komme da leider nicht weiter.

    MFG

    1. Okay, habs scheinbar doch selbst geschafft.
      Nachdem ich herausgefunden habe, dass meine DB Passwörter nicht gematched haben.
      Hier meine docker.compose.overwrite.yml – https://pastebin.com/Hg13S0xP
      Zusätzlich halt in der mailcow.conf:
      HTTP_BIND=127.0.0.1
      HTTP_PORT=8080
      HTTPS_BIND=127.0.0.1
      HTTPS_PORT=8443
      SKIP_LETS_ENCRYPT=y
      Dann sollte alles so starten, dass man Mailcow mit dem hier schon vorher eingerichteten Traefik nutzen kann.

      1. Hallo Sascha,
        schön, dass Du es hinbekommen hast und vielen Dank für das Posten der Lösung :)

        Ich hab das immer sein lassen mailcow mit den anderen Diensten zu verbinden, weil die Mailserver bei mir wirklich systemkritisch sind und ich die darum tatsächlich lieber auf eigenen Maschinen hoste. Ein Ausfall würde mein Geschäft schädigen.

        In dieser Anleitung wird das Vorgehen auch beschrieben, die hat Juno damals gefunden:
        https://goneuland.de/mailcow-e-mail-komplettsytem-mit-antivirus-spam-filer-webmail-webfrontend-installieren-mittels-docker-und-traefik/#4_Anpassungen_fuer_Traefik_vornehmen

        Was mich abhält sind zwei Sachen:
        – die Möglichkeit, dass Container „überlappen“ und dann auf einmal Dienste stehen bleiben, weil die sich um die IP prügeln
        – ein Wildcard-Zertifikat für den Mailserver. Für Wildcard muss die API vom Domainanbieter mit in die Config. Und die API von netcup ist leider viel zu mächtig, als dass ich die irgendwo stehen haben will.

  6. Hi, wenn du mal Zeit hast, wäre es toll wenn du mal schauen schauen kannst, ob du eine Möglichkeit siehst, Piler oder einen ähnliches Email Archiv aufzusetzen. Am betsen natürlich in Docker und wie das funktioniert dann. :-)

    1. Da such ich selber so sehr danach, Jan…
      Das ist das Einzige, das dem Mailcow „out of the box“ fehlt – eine Archiv-Funktion.

      Piler hat ein Bekannter von mir am Laufen für seine Firma und dessen Mailarchiv. Muss ich mir doch mal ansehen…

  7. Nachdem ich jetzt mehrmals dieses tolle Tutorial durchforstet habe, habe ich nun doch eine Frage (auf die Gefahr hin, dass ich den Bereich überlesen habe):
    Woher bekomme ich den „Crypt-Key“ für das backup oder wo lege ich diesen fest?

    1. So wie ich das verstanden habe, erzeugt die Mailcow den Schlüssel selbst bei der Installation. Im Backup wird der Schlüssel mit gesichert, damit Du nachher beim Rücksichern die Mails wieder entschlüsseln kannst.
      Jedenfalls hab ich „crypt-key“ beim Backup als Verzeichnis gesehen…

      1. Hallo Peter, danke für die Antwort :-)
        Ich frage nur für den Fall der Fälle. Ich sichere mir den Server auch noch regelmäßig per Backup, aber ggf. benötige ich ja nur mal die Datensicherung.
        Diese tolle ANleitung habe ich übrigens heute einem Freund weiterempfohlen :-D
        Viele Grüße Michael

  8. Ich kam wegen meiner Traefik-Probleme – nun habe ich einen Mail-Server :D

    Deine Erklärungen passen wirklich genau zu meinem Wissenstand. Macht echt Spaß sich da durchzuarbeiten! Danke

  9. Hallo Peter !
    Vielen Dank für diese klasse Anleitung !!!

    Vor allem das Thema Backup & Restore ist sehr hilfreich …
    … sehr passend, da ich es hinbekommen habe, den Cloudspeicherplatz ( HiDrive ) so einzubinden,
    dass nach Aufruf des Backup-Scriptes, die Dateien in ein Verzeichnis gespeichert werden, welches automatisch
    mit HiDrive synchronisiert.

    Jetzt muss ich nur noch die Restore Funktion testen … ;-)
    Gäbe es hier auch die Möglichkeit – wie beim Backup – alles auf einmal wieder herzustellen ?!

    Ach ja, wie sieht es denn mit einer Archiv-Funktion aus ?

    Gruß, Martin

    1. Peter Fiedler

      Gerne, Martin.

      Der Restore funktioniert seit einem der Updates nun auch auf einen Rutsch. Da wurde die Option „All“ mit eingebaut.

      Archiv gibts wohl noch keins – zumindest hab ich noch keins gefunden.

      Beste Grüße
      Peter.

  10. Hallo, hört sich gut an… Ich habe mittlerweile mehrere Container auf deiner Basis installiert. Jetzt möchte ich gerne auch Mailcow ins Leben rufen. Klappt das? Meine Ports sind ja schon sozusagen belegt.

    Danke für deine Hilfe

    1. Nein, leider nicht.
      Die Mailcow läuft bei mir auf einer separaten Maschine. Auch die Macher der Mailcow empfehlen eine eigene Maschine dafür.

      Beste Grüße
      Peter.

        1. Peter Fiedler

          Hi Juno,
          wow, das ist pfiffig…

          Versucht hab ich es, ja. Allerdings hatte ich damals alle Änderungen direkt in der docker-compose.yml drin, die bei jedem Update überschrieben wurde. Dann hab ich es sein lassen.
          Beste Grüße
          Peter.

          1. Schade wie es ausschaut muss ich wohl doch in einen zweiten Server investieren.

          2. Peter Fiedler

            Sorry, da hab ich mich wohl falsch ausgedrückt…
            Mit der Anleitung, die Du mir geschickt hast, ist das Betreiben von mailcow und den Anwendungen auf der selben Maschine möglich. Gibt halt die beschriebenen Konflikte, falls die IP-Range schon in Gebrauch ist. Und Du hängst von einem Image ab, das die Zertifikate von Let’s Encrypt an die mailcow weiterreicht. Aber ansonsten sollte das funktionieren.

            Ich persönlich trenne gerne Mail vom Rest des Systems, nicht nur weil die Macher von der mailcow das empfehlen, sondern auch um unterschiedliche Management-Strategien zu fahren.

          3. Verstehe deine Entscheidung. Die erwähnte Anleitung ist auch sehr kurz gehalten. Über seine DNS-Config erzählt er auch nichts…

          4. Hier geb ich den Tipp den man auch in mailcow’s Anleitungen findet deine Änderungen anstelle sie in die docker-compose.yml zu schreiben, sie in die (zu erstellende Datei) docker-compose.override.yml zu schreiben. Beim Start der docker-compose.yml werden hier noch die Änderungen / überschriebenen Werte aus der docker-compose.override.yml angewendet. Vorteil ist auch bei Updates wird nichts überschrieben, weil die .override.yml nicht Teil des git-repository/des Updates ist.

          5. Danke für den Hinweis!
            Das mit den Updates ist wirklich eine gute Sache… Da bin ich offenbar drüber gestolpert, als ich die Config damals bearbeitet habe.

            Beste Grüße und ein schönes Wochenende ;)
            Peter.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Verwendung
von Cookies

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung.

Scroll to Top