mailcow Toolkit

SOGo als beliebiges Postfach, ohne die Admin-Sitzung zu verlieren, mailcow-Updates aus der Oberfläche und die DNS-Einträge jeder mailcow-Domain, auch in Cloudflare.

DNS & Cloudflare page: every mailcow domain with its status, and what is wrong with each record, why it matters and how to fix it1 von 8

mailcow-dockerized hält eine Sitzung pro Hostnamen. Wenn ein Administrator neben einem Postfach auf SOGo klickt, wechselt dieselbe Sitzung zum Postfach: SOGo öffnet sich, aber der Administrator ist nicht mehr an der Admin-Oberfläche angemeldet, und solange die Admin-Sitzung geöffnet ist, schickt dich SOGo zurück zum Admin-Dashboard. Ein Update von mailcow bedeutet eine SSH-Sitzung und update.sh. Jede neue Mail-Domain braucht ihre MX-, SPF-, DKIM- und DMARC-Einträge, von Hand beim DNS-Anbieter gesetzt. Das mailcow Toolkit behebt alle drei Probleme in deinem eigenen mailcow und funktioniert auch nach mailcow-Updates weiter.

Was es macht

SOGo als beliebiges Postfach, mit erhaltener Admin-Sitzung

  • Die Schaltfläche SOGo in der Postfachliste (nur für den Plattform-Administrator; Domain-Administratoren behalten mailcows eigene Schaltfläche) öffnet SOGo als dieses Postfach in einem neuen Tab. Dein Admin-Tab bleibt angemeldet.
  • SOGo läuft unter einem eigenen Webmail-Hostnamen (zum Beispiel webmail.example.com) und hat damit ein eigenes Sitzungs-Cookie, getrennt von der Admin-Oberfläche.
  • Die Übergabe nutzt einen Einmal-Token, 60 Sekunden gültig und nur einmal verwendbar. Auf dem Webmail-Host wird eine neue Postfach-Sitzung gestartet; sie erbt niemals die Admin-Rolle.
  • Es nutzt mailcows eigene Regeln: Es braucht ALLOW_ADMIN_EMAIL_LOGIN=y und die Berechtigung Login as mailbox user, und inaktive Postfächer werden abgelehnt.
  • Jede Nutzung wird protokolliert: im Anmeldeprotokoll dieses Postfachs in mailcow (als SSO-Anmeldung) und im Audit-Log des Toolkits, inklusive, wer es geöffnet hat und von welcher Adresse.
  • Ohne Webmail-Hostnamen behält die Schaltfläche das Standardverhalten von mailcow.

mailcow aus der Admin-Oberfläche aktualisieren

  • Eine neue Seite, System > Updates (Toolkit), zeigt die installierte mailcow-Version, die letzte Prüfung und die neuen Änderungen.
  • Der Server prüft täglich auf eine neue mailcow-Version und schickt eine E-Mail pro neuer Version an die Adresse, die du auf der Seite eingetragen hast.
  • Update now macht zuerst ein Backup (crypt, redis, rspamd, postfix und mysql, 14 Tage aufbewahrt), führt dann mailcows eigenes update.sh aus und wartet anschließend, bis jeder Container läuft und die Oberfläche antwortet. Das Protokoll wird auf der Seite live angezeigt.
  • Schlägt das Backup fehl, wird das Update gestoppt und nichts geändert. Wenn update.sh fehlschlägt oder ein Container nicht startet, sagt dir die Seite das und behält das Protokoll.
  • Die Seite folgt der Sprache der mailcow-Oberfläche: Englisch oder Rumänisch.

DNS-Einträge und Cloudflare

Neu in 0.3.0: Die Seite System > DNS & Cloudflare (nur Administratoren) listet für jede mailcow-Domain und Alias-Domain die Einträge auf, die mailcow braucht, anhand von mailcows eigener DNS-Prüfung:

  • Erforderlich: der A-Eintrag von MAILCOW_HOSTNAME (in Cloudflare DNS-only; aufgeführt für die Domain, deren Zone den Hostnamen enthält), MX 10 auf MAILCOW_HOSTNAME, SPF, DKIM (mailcows Selektor und Schlüssel) und DMARC.
  • Empfohlen: die CNAMEs autodiscover und autoconfig (DNS-only), die SRV-Einträge für autodiscover, IMAPS, Submission und SMTPS, POP3S (wenn POP3 erlaubt ist), CalDAV und CardDAV mit ihrem path=/SOGo/dav/-TXT (mit SOGo) sowie MTA-STS und TLS-RPT, wenn MTA-STS für die Domain in mailcow aktiv ist.
  • Alias-Domains bekommen MX, SPF, DKIM, DMARC und, mit MTA-STS, dessen TXT-Einträge.
  • Jeder Eintrag wird mit dem öffentlichen DNS, mit einer Zonendatei, die du hochlädst (ein Cloudflare-Export oder eine beliebige BIND-Datei), und, mit Cloudflare-Zugangsdaten, mit der Live-Cloudflare-Zone verglichen. Der Status ist OK, missing, different, proxied (muss DNS-only sein), fix by hand oder unknown.
  • Download BIND zone file erzeugt eine Datei, die Cloudflare importiert (DNS > Records > Import and Export), mit cf_tags=cf-proxied:false bei den Einträgen, die DNS-only bleiben müssen.
  • Standardmäßig IPv4-only: kein AAAA-Eintrag und ein SPF von v=spf1 ip4:<IPv4> -all. Die Einstellung Use IPv6 fügt AAAA, ip6: und die IPv6-Reverse-DNS-Prüfung hinzu. Ein Server, der AAAA veröffentlicht, ohne einen passenden IPv6-PTR zu haben, bekommt seine E-Mails über IPv6 von Gmail und anderen abgelehnt.
  • DMARC: Eine vorhandene gültige Richtlinie bleibt; sonst v=DMARC1; p=quarantine;, mit Berichten (rua) an dmarc@ oder postmaster@ der Domain, nur wenn diese Adresse existiert.
  • Die SRV-Ports (IMAPS 993, Submission 587, SMTPS 465, POP3S 995, HTTPS 443) folgen mailcow.conf und können von Hand gesetzt werden, für Server hinter einem Proxy oder NAT.
  • Ein Status für jede Domain: Die Seite öffnet mit einer Zusammenfassung und einer Auswahl aller Domains und Alias-Domains, die schlimmste zuerst: critical (E-Mails können nicht zugestellt oder gesendet werden oder landen im Spam: A-Eintrag des Mail-Hosts, MX, SPF, DKIM oder DMARC fehlt, ist falsch oder proxied, kein DKIM-Schlüssel, falsches Reverse DNS, oder die Domain ist SOGo noch nicht bekannt), warning (optionale Einträge fehlen: autodiscover, autoconfig, SRV, CalDAV / CardDAV, MTA-STS, TLS-RPT) oder all good. Die zuletzt gewählte Domain wird gemerkt. Für jede Domain erklärt die Seite, was falsch ist und wie du es behebst. Die Status werden im Hintergrund alle 10 Minuten aktualisiert; Re-check now prüft eine Domain sofort.
  • Die Cloudflare-Aktionen einer Domain erscheinen nur, wenn die gespeicherten Zugangsdaten funktionieren und DNS in der Zone dieser Domain ändern dürfen (API-Token: Zone > Zone > Read und Zone > DNS > Edit); sonst sagt dir die Seite, warum nicht.
  • Cloudflare: Mit einem eingeschränkten API-Token (empfohlen) oder dem Global API Key wählst du Einträge aus, siehst eine Vorschau der Änderungen und wendest sie an. Vorher wird ein JSON-Backup der Zone gespeichert und die Änderung kann rückgängig gemacht werden; es werden nur die ausgewählten Einträge erstellt oder aktualisiert, nichts wird gelöscht, und jede Änderung landet im Audit-Log. Die Zugangsdaten werden bei Cloudflare geprüft, verschlüsselt auf deinem Server gespeichert und nie wieder angezeigt.

Neue Domains richten sich selbst ein

  • Automatic Cloudflare setup (aus, bis Zugangsdaten gespeichert sind): Innerhalb von etwa 2 Minuten, nachdem eine Domain oder Alias-Domain in mailcow hinzugefügt wurde (Oberfläche oder API), werden ihre Einträge in der vorhandenen Cloudflare-Zone erstellt. Falsche Einträge werden aktualisiert, fremde Einträge niemals gelöscht, und eine vorhandene abweichende SPF-, DMARC- oder TLS-RPT-Richtlinie bleibt, wie sie ist. Eine fehlende Zone wird gemeldet oder, wenn du es erlaubst, erstellt. Fehler können dir per E-Mail geschickt werden.
  • New domain wizard (aus, bis ein Ziel gesetzt ist): Die Rollen-Adressen (postmaster, abuse, hostmaster, webmaster, contact, info, office, dmarc, tls-rpt, noreply, security, jede optional, plus eigene) werden als Aliase auf eine Adresse deiner Wahl angelegt und zählen damit nicht gegen das Postfach-Limit der Domain. noreply@ verwirft E-Mails lautlos. Ein vorhandenes Postfach oder Alias wird niemals angefasst.
  • Domains, die beim Einschalten einer Funktion bereits existieren, bleiben unberührt; Provision now und Run wizard erledigen sie einzeln.

SOGo und neue Domains

  • SOGo liest mailcows Domains beim Start, eine später hinzugefügte Domain ist ihm also unbekannt: Ihre Postfächer bekommen in SOGo und bei der SOGo-Schaltfläche „Unauthorized“.
  • Neu in 0.4.0: Alle 2 Minuten findet das Toolkit solche Domains und startet nur den SOGo-Container neu (und leert memcached), innerhalb von etwa 3 bis 10 Minuten, nachdem die Domain hinzugefügt wurde: einmal für mehrere neue Domains, höchstens alle 10 Minuten, nur mit gültiger Lizenz. Jeder Neustart landet im Audit-Log.
  • Während eine Domain wartet, zeigt die DNS-Seite eine Warnung und eine Schaltfläche Restart SOGo. mailcows eigene Option Restart SOGo beim Hinzufügen einer Domain vermeidet das Warten.

Reverse-DNS-Prüfung (PTR)

  • Alle 6 Stunden (und bei Check now) prüft der Server, dass jede öffentliche IPv4 (und IPv6, mit Use IPv6) einen PTR gleich MAILCOW_HOSTNAME hat und dass MAILCOW_HOSTNAME zurück auf dieselbe IP auflöst.
  • Wenn die Prüfung fehlschlägt, erscheint ein rotes ! neben dem Menü System auf jeder Admin-Seite und eine Zeile Reverse DNS (PTR) unter System > Information. Die Seite erklärt dir die Behebung: Der PTR gehört dem, wem die IP gehört (dein Hosting- oder VPS-Anbieter oder dein ISP), nicht deiner DNS-Zone.

Lizenz, kostenloser Test und Toolkit-Updates

  • Der Abschnitt License oben auf System > Updates (Toolkit) aktiviert das Toolkit mit deinem Lizenzschlüssel oder startet den kostenlosen 30-tägigen Test mit deiner E-Mail-Adresse: Die Karte wird auf der Stripe-Bezahlseite abgefragt und in den 30 Tagen nicht belastet, und die Seite aktiviert das Toolkit von selbst, sobald der Test beginnt. Der Test kann einmal pro Server und pro E-Mail-Adresse genutzt werden.
  • Die Lizenz wird beim Serverstart und einmal täglich geprüft. Ohne Internet funktioniert das Toolkit noch 7 Tage nach der letzten erfolgreichen Prüfung weiter.
  • Ohne gültige Lizenz stoppen die Funktionen des Toolkits: Die SOGo-Schaltfläche behält das Standardverhalten von mailcow, die mailcow-Update-Prüfung, E-Mails und Updates laufen nicht, die DNS-Prüfungen, der Reverse-DNS-Indikator, Cloudflare und der neue Domain-Assistent stoppen, und die Seiten zeigen nur noch den Abschnitt License oder einen Hinweis. Es wird nichts gelöscht; eine gültige Lizenz schaltet alles wieder ein.
  • Mit gültiger Lizenz aktualisiert derselbe Abschnitt das Toolkit auf die neueste Version oder setzt es auf die vorherige zurück: Das signierte Archiv wird von medialab.works heruntergeladen, seine Größe und SHA-256 werden geprüft, der Host-Agent führt den Installer dieser Version aus, und schlägt das fehl, wird die bisherige Version wieder installiert. Bestehende Installationen erhalten so 0.4.0.
  • Ab 0.4.0 enthält das Paket außerdem Sign-up for mailcow (Selbstregistrierung) und Cashier for mailcow (kostenpflichtige Tarife über dein eigenes Stripe-Konto), jedes mit eigener Lizenz und eigenem 30-tägigen Test; die Seite zeigt je Produkt eine License-Karte, und das mailcow-Paket deckt alle drei mit einem Schlüssel ab.

Überlebt mailcow-Updates

Das Toolkit legt seine eigenen Dateien neben die von mailcow und ändert keine Datei, die von mailcows Git verwaltet wird: Seine Web-Dateien sind von mailcows Git ausgeschlossen, der gemeinsame Ordner liegt dort, wo mailcows Git nicht hinschaut, und der Host-Agent mit seinen Timern läuft über systemd. Ein mailcow-Update lässt das Toolkit an Ort und Stelle. Mehrere mailcow-Installationen auf einem Host werden unterstützt.

Voraussetzungen

  • mailcow-dockerized, getestet mit 2026-09 und 2026-09a, unter Linux mit docker compose und systemd.
  • Root-Zugang auf dem Host, mit installiertem git, jq, flock, curl, tar und sha256sum.
  • Der Server muss medialab.works über HTTPS erreichen (Lizenzprüfung, Test, Toolkit-Updates).
  • Für SOGo als Postfach: ALLOW_ADMIN_EMAIL_LOGIN=y in mailcow.conf und die Berechtigung Login as mailbox user für den Administrator.
  • Ein zweiter Hostname für Webmail, der wie die mailcow-Oberfläche über denselben Reverse Proxy auf mailcow zeigt.
  • Für Backups vor Updates: ein Backup-Ordner auf dem Host (--backup-dir).
  • Optional, um die Einträge in Cloudflare zu schreiben: ein Cloudflare-Konto, in dem die Zonen der Domains liegen, und ein API-Token.

Häufige Fragen

Warum schickt mich SOGo zurück zum Admin-Dashboard? Weil mailcow pro Hostnamen nur eine Sitzung hält: Solange die Admin-Sitzung geöffnet ist, kann die Postfach-Sitzung auf demselben Host nicht neben ihr bestehen. Das Toolkit öffnet SOGo unter einem eigenen Webmail-Hostnamen, wo das Postfach seine eigene Sitzung bekommt. Siehe die Anleitung.

Verändert es mailcow-Dateien? Es wird keine verwaltete mailcow-Datei verändert. sudo ./uninstall.sh entfernt alles, was das Toolkit hinzugefügt hat; die mailcow-Backups bleiben.

Was passiert, wenn die Lizenz endet? Die Funktionen des Toolkits stoppen und mailcow arbeitet wie vor dem Toolkit: Die SOGo-Schaltfläche wechselt wieder die Admin-Sitzung, Updates machst du über SSH, und DNS-Einträge werden nicht mehr geprüft oder geschrieben. Es wird nichts gelöscht, weder in mailcow noch in Cloudflare. Verlängere die Lizenz oder gib im Abschnitt License einen neuen Schlüssel ein.

Kann ich ohne Backup aktualisieren? Wenn du ohne --backup-dir installierst, läuft Update now ohne vorheriges Backup. Wir empfehlen, einen Backup-Ordner zu setzen.

Brauche ich Cloudflare? Nein. Ohne Cloudflare-Zugangsdaten listet die DNS-Seite die Einträge weiterhin auf, vergleicht sie mit dem öffentlichen DNS und mit einer Zonendatei, die du hochlädst, und gibt dir eine BIND-Zonendatei zum Importieren. Cloudflare brauchst du nur, um die Einträge automatisch schreiben zu lassen.

Kann es meine DNS-Einträge löschen oder beschädigen? Es erstellt oder aktualisiert nur die Einträge, die es auflistet, und löscht niemals einen Eintrag. Vor jeder Änderung wird ein JSON-Backup der Zone gespeichert, und Undo these changes macht sie rückgängig (es entfernt nur die Einträge, die diese Änderung erstellt hat, falls sie seitdem nicht geändert wurden). Die automatische Einrichtung behält eine SPF-, DMARC- oder TLS-RPT-Richtlinie bei, die du bereits hast.

Warum gibt es keinen AAAA-Eintrag und kein ip6: im SPF? Weil IPv6 standardmäßig aus ist: Wenn ein Server AAAA veröffentlicht, ohne einen passenden IPv6-PTR zu haben, lehnen Gmail und andere seine E-Mails über IPv6 ab. Schalte Use IPv6 ein, sobald der IPv6-PTR gesetzt ist.

Lizenzierung

Das Toolkit ist Open Source (GPL-3.0), wie mailcow selbst. Was du kaufst, ist das Abonnement für neue Versionen, Updates und Support für einen mailcow-Server: das Toolkit mit seiner Lizenzprüfung, jede neue Version, solange das Abonnement aktiv ist, und Hilfe, wenn etwas nicht funktioniert. Das Toolkit besteht aus Shell-Skripten, PHP und JavaScript; du erhältst also den vollständigen Quellcode. Siehe Abschnitt 11 der EULA.

Das mailcow Toolkit ist unser eigener Code, geschrieben von MediaLab Works; es enthält keinen Code Dritter. Es läuft innerhalb von mailcow-dockerized und nutzt mailcows eigene Funktionen (Sitzungen, Berechtigungen, update.sh, das Backup-Skript, das Anlegen von Aliasen); mailcow ist ein separates Open-Source-Projekt (GPL-3.0) der The Infrastructure Company GmbH, siehe Urheberrecht. Cloudflare ist ein separater Dienst und wird nur mit deinem eigenen Konto und deinen eigenen Zugangsdaten genutzt.

Voraussetzungen

  • mailcow-dockerized (getestet mit 2026-09 und 2026-09a) unter Linux, mit docker compose und systemd
  • Root-Zugriff auf den Host, mit installiertem git, jq, flock, curl, tar und sha256sum
  • Für SOGo als Postfach: ALLOW_ADMIN_EMAIL_LOGIN=y in mailcow.conf und die Berechtigung „Login as mailbox user“
  • Ein zweiter Hostname für Webmail, ausgeliefert vom selben Reverse Proxy wie die mailcow-Oberfläche
  • Optional, zum Schreiben von DNS-Einträgen: ein Cloudflare-Konto und ein API-Token (Zone > DNS > Edit, Zone > Zone > Read)
  • Open Source (GPL-3.0): Du erhältst den vollständigen Quellcode

Neueste Version

0.7.1
veröffentlicht am 20.10.2026
Alle Änderungen ansehen →

Für den Download brauchst du eine Lizenz oder den kostenlosen 30-tägigen Testzeitraum.