SSD Nodes Learn
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-07-24

Mailcow auf VPS: Gmail Zustellung sicherstellen

Prüfen Sie Port 25 vor der Installation. Vermeiden Sie Gmail 550 5.7.25 PTR Fehler durch korrekte DNS-Settings und saubere IP-Reputation für Ihren Mailserver.

Was Sie aufbauen

Ein vollständiger Mailserver auf einem eigenen Server: SMTP zum Senden und Empfangen, IMAP für die Synchronisation zwischen Telefon und Laptop, ein Webmail-Client und ein Spam-Filter, der jede Nachricht in beide Richtungen bewertet. mailcow-dockerized bündelt Postfix, Dovecot, Rspamd, SOGo webmail, MariaDB, Redis und einen ACME-Client in einem Docker Compose Stack. Die Software ist daher nicht der schwierige Teil. Die Einrichtung ist in einer halben Stunde abgeschlossen.

Der schwierige Teil ist die gesamte Konfiguration drumherum. E-Mail ist der einzige Dienst, bei dem das restliche Internet einem brandneuen Server aktiv misstraut. Der Unterschied zwischen „es funktioniert“ und „Gmail verschluckt jede Nachricht lautlos“ liegt an vier DNS-Records und einer Einstellung der IP-Reputation, die Sie eventuell nicht vollständig kontrollieren können. Lesen Sie die Voraussetzungen unten, bevor Sie Serverkapazitäten mieten. Wenn Sie nach dem Lesen entscheiden, dass der Aufwand für die Reputation zu hoch ist, ist das eine legitime Entscheidung — unsere Übersicht, was sich im Jahr 2026 wirklich für das Self-Hosting lohnt listet E-Mail unter „nur wenn Sie es ernst meinen“ genau aus diesen Gründen auf.

Die Voraussetzungen sind das Projekt

Wenn eine dieser Bedingungen nicht erfüllt ist, werden E-Mails niemals ankommen. Hier sind die häufigsten Fehlerursachen:

Der ausgehende Port 25 muss offen sein. Ihr Server nutzt TCP-Port 25, um E-Mails an Gmail und Microsoft zu senden. Viele VPS- und Cloud-Anbieter blockieren den ausgehenden Port 25 standardmäßig gegen Spam. Diese Blockierung erfolgt lautlos: Es treten keine Fehler beim Systemstart auf, alle Dienste laufen korrekt, aber die E-Mails verbleiben dauerhaft in der Warteschlange. Testen Sie dies vor der Installation. Falls der Port blockiert ist, hilft nur ein Support-Ticket an Ihren Anbieter mit der Bitte um Freischaltung; einige Anbieter führen dies bei älteren Konten durch, andere verweigern es dauerhaft.

Eine saubere IP mit guter Reputation. Recycelte VPS-IPs stehen oft bereits auf Blocklisten, weil der vorherige Nutzer Spam versendet hat. Prüfen Sie Ihre IP vor der Einrichtung mit einem Dienst wie Spamhaus lookup oder mxtoolbox. Eine auf einer Liste stehende IP führt zu Ablehnungen, die Sie durch Softwareeinstellungen nicht beheben können.

DNS-Kontrolle sowie ein korrekter PTR-Eintrag. Sie müssen Einträge in der Zone Ihrer Domain erstellen. Zudem benötigen Sie ein Reverse DNS (PTR), das die IP des Servers auf Ihren Mail-Hostname abbildet. PTR-Einträge sind selten im eigenen DNS-Panel konfigurierbar, da sie beim Besitzer der IP liegen. Sie müssen diese im Control Panel Ihres VPS-Anbieters oder per Support-Ticket setzen lassen.

6 GiB RAM und 2 vCPU sind die empfohlene Untergrenze. Die Mindestanforderung von mailcow beträgt 6 GiB RAM plus 1 GiB Swap für eine private Installation. Ab einer geringen Anzahl an Nutzern werden 8 GiB empfohlen. Unter etwa 2,5 GiB bietet generate_config.sh an, den ClamAV-Virenscanner zu deaktivieren, damit der Kernel nicht beginnt, Container zu beenden. Planen Sie mindestens 20 GB SSD-Speicher ein.

Ein DNS-Name statt einer reinen IP. Wählen Sie einen Hostnamen wie mail.example.com. Dieser Name wird zu Ihrem MAILCOW_HOSTNAME, Ihrem TLS-Zertifikat-Subject, Ihrem PTR-Ziel und Ihrem SMTP-Banner. Verwenden Sie diesen Namen überall konsistent.

Schritt 1 — Prüfen, ob der ausgehende Port 25 offen ist

Führen Sie dies zuerst aus. Alle weiteren Schritte sind ohne Ergebnis. Versuchen Sie von dem neuen VPS aus, eine SMTP-Verbindung zu einem echten Mailserver aufzubauen:

sudo apt update && sudo apt install -y netcat-openbsd
nc -vz -w 5 gmail-smtp-in.l.google.com 25

Ein erfolgreiches Ergebnis erfolgt sofort:

Connection to gmail-smtp-in.l.google.com (142.250.x.x) 25 port [tcp/smtp] succeeded!

Ein blockierter Port wartet die vollen fünf Sekunden und schlägt dann fehl:

nc: connect to gmail-smtp-in.l.google.com port 25 (tcp) timed out: Operation now in progress

Dieser Timeout ist die Blockade. Es handelt sich um einen Netzwerkfilter des Providers und nicht um Ihre Firewall; lokale Änderungen lösen das Problem nicht. Eröffnen Sie ein Ticket: "Please enable outbound TCP port 25 for my VPS at <IP>; I am running a legitimate mail server." Installieren Sie mailcow erst, wenn dieser Test "succeeded" zurückgibt. Beachten Sie, dass der eingehende Port 25 (Server, die Sie erreichen) ein separater Pfad ist und meist offen ist — Provider drosseln primär die ausgehende Seite.

Schritt 2 — DNS-Einträge jetzt setzen

DNS-Änderungen benötigen Zeit für die Propagation. Veröffentlichen Sie daher alles Mögliche vor der Installation. Nehmen wir an, Ihre Domain ist example.com, Ihr Mail-Host ist mail.example.com und die IP lautet 10.0.0.10. Erstellen Sie in Ihrer Zone:

mail.example.com.        A      10.0.0.10
mail.example.com.        AAAA   2001:db8::10          ; only if you have IPv6
example.com.             MX  10 mail.example.com.
example.com.             TXT    "v=spf1 mx -all"
_dmarc.example.com.      TXT    "v=DMARC1; p=none; rua=mailto:postmaster@example.com"

Der SPF-Eintrag besagt: „Nur mein MX darf für diese Domain senden, lehnen Sie den Rest ab“. Starten Sie DMARC mit p=none, damit Sie Berichte einsehen können, ohne Ihre eigene Mail abzulehnen; verschärfen Sie die Richtlinie auf p=quarantine und anschließend auf p=reject, sobald die Alignment korrekt ist. Zwei Einträge fehlen absichtlich: DKIM, welches mailcow in Schritt 6 für Sie generiert, und PTR, welches Sie jetzt im Panel Ihres Providers setzen.

Setzen Sie den PTR (Reverse DNS) für 10.0.0.10 auf mail.example.com — den exakten Wert von MAILCOW_HOSTNAME. Dies ist der eine Eintrag, den die meisten Benutzer vergessen und wegen dem große Provider die Mail ablehnen. Falls Ihr Panel kein rDNS-Feld besitzt, eröffnen Sie ein Support-Ticket.

Schritt 3 — Docker installieren

mailcow benötigt die Docker Engine mit dem Compose v2 Plugin. Verwenden Sie das offizielle Convenience-Script von Docker anstatt des Ubuntu docker.io Pakets, da dieses kein Compose Plugin enthält:

curl -fsSL https://get.docker.com | sudo sh
sudo docker compose version

Sie sollten eine Docker Compose version v2.x Zeile sehen. Wenn docker compose version docker: 'compose' is not a docker command ausgibt, ist die Docker Engine installiert, aber das Compose Plugin fehlt. Installieren Sie das Plugin aus dem Docker-Repository — führen Sie das obige Script erneut aus oder folgen Sie unserem Docker Compose Basics Guide, der beide Komponenten aus dem Docker apt-Repository installiert.

Schritt 4 — mailcow klonen und Konfiguration generieren

cd /opt
sudo git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
umask
sudo ./generate_config.sh

Prüfen Sie zuerst, ob umask 0022 ausgibt. mailcow bricht den Build-Vorgang bei einer fehlerhaften Dateimaske ab. Eine frische Ubuntu 24.04 Root-Shell liefert bereits 0022. Das Skript fragt anschließend nach dem vollqualifizierten Hostnamen. Geben Sie mail.example.com ein. Der Wert muss exakt mit Ihrem A-Record und PTR-Record übereinstimmen. Das Skript erstellt mailcow.conf, die einzige Environment-Datei, die der gesamte Stack verwendet. Öffnen Sie diese Datei, falls Sie die Web-Ports (HTTP_PORT, HTTPS_PORT) ändern oder ClamAV auf einem System mit geringen Ressourcen deaktivieren müssen:

MAILCOW_HOSTNAME=mail.example.com
HTTP_PORT=80
HTTPS_PORT=443
SKIP_CLAMD=n          # set to y to drop the virus scanner on a <2.5 GiB box

SKIP_FTS=y ist eine weitere Option für Systeme mit wenig RAM: Die Volltextsuche ist laut mailcow-Dokumentation der zweitgrößte Arbeitsspeicherverbraucher. Das Deaktivieren reduziert lediglich die Suchfunktion für den Nachrichtentext im Webmail.

Lassen Sie HTTP_PORT=80 und HTTPS_PORT=443 unverändert, es sei denn, andere Dienste auf dem Host belegen diese bereits. Der integrierte ACME-Client von mailcow benötigt Port 80 (erreichbar aus dem Internet), um Zertifikate zu beziehen. Aus diesem Grund sollten Sie ein separates nginx-plus-Certbot-Setup nicht auf demselben System ausführen; mailcow stellt TLS intern aus und erneuert es selbst. Ein zweiter Dienst, der Port 80/443 belegt, verhindert dies.

Schritt 5 — Starten Sie den Stack und loggen Sie sich ein

sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

Der Pull-Vorgang lädt etwa zwei Dutzend Images herunter; warten Sie einige Minuten. Wenn docker compose ps alle Container als running (oder healthy) anzeigt, öffnen Sie https://mail.example.com in einem Browser. Die Standard-Admin-Anmeldung lautet Benutzername admin, Passwort moohoo. Ändern Sie dieses Passwort sofort in der Admin-UI unter Access → Administrators. Falls der Browser NET::ERR_CERT_AUTHORITY_INVALID anzeigt, wurde das ACME-Zertifikat noch nicht ausgestellt — prüfen Sie den ACME-Fehler unten, bevor Sie von einem Defekt ausgehen; ein selbstsigniertes Platzhalter-Zertifikat ist in den ersten ein bis zwei Minuten normal.

Schritt 6 — Domain, Postfach hinzufügen und DKIM veröffentlichen

Öffnen Sie in der Admin-UI die Seite Mail Setup (Configuration → Mail Setup). Klicken Sie unter dem Tab Domains auf Add domain und geben Sie example.com ein. Klicken Sie dann unter Mailboxes auf Add mailbox, um you@example.com mit einem Passwort zu erstellen. Dieses Postfach ist bereits funktionsfähig und über IMAP erreichbar.

Nun zum DKIM-Schlüssel. Gehen Sie zu Configuration → ARC/DKIM keys. mailcow hat möglicherweise bereits einen Schlüssel generiert, als Sie die Domain hinzugefügt haben. Falls nicht, generieren Sie dort einen neuen Schlüssel: Wählen Sie die Domain, lassen Sie den Selector dkim unverändert, wählen Sie 2048-bit und klicken Sie auf Add. Kopieren Sie den angezeigten langen TXT-Wert und veröffentlichen Sie ihn als:

dkim._domainkey.example.com.  TXT  "v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqh...long-key...QAB"

Die Domains-Seite von mailcow enthält eine DNS-Schaltfläche. Diese listet alle erwarteten Records auf und zeigt durch ein grünes Häkchen oder ein rotes Kreuz an, ob diese tatsächlich veröffentlicht wurden. Nutzen Sie diese Liste als Checkliste — stellen Sie sicher, dass alle Zeilen grün sind, bevor Sie die Zustellbarkeit testen. Eine rote DKIM-Zeile nach der Veröffentlichung bedeutet meist, dass der Schlüssel fehlerhaft auf TXT-Chunks aufgeteilt wurde. Ein 2048-bit Schlüssel ist länger als das Limit von 255 Zeichen für einen einzelnen TXT-String. Fügen Sie ihn daher als einen logischen Wert ein, damit Ihr DNS-Host ihn automatisch in Chunks aufteilt.

Schritt 7 — Zustellbarkeit testen und 10/10 erreichen

Rufen Sie mail-tester.com auf, kopieren Sie die angezeigte Zufallsadresse und senden Sie eine Nachricht von Ihrem neuen Postfach an diese Adresse. Melden Sie sich dazu bei der SOGo Webmail unter https://mail.example.com/SOGo an und senden Sie die Nachricht von dort. Klicken Sie anschließend auf „Then check your score“.

Streben Sie eine Bewertung von 10/10 an. Häufige Punktabzüge und deren Ursachen:

  • SPF nicht konform (not aligned) — Ihr MX/SPF-Eintrag fehlt oder die sendende IP ist nicht enthalten. Überprüfen Sie den SPF TXT-Eintrag erneut.
  • DKIM-Signatur ungültig — Der dkim._domainkey TXT-Eintrag fehlt, wird noch propagiert oder ist fehlerhaft. Dies ist der häufigste Fehler.
  • Kein PTR / PTR-Fehler — Die Reverse-DNS-Auflösung führt nicht zu mail.example.com. Beheben Sie dies beim Provider.
  • Auf einer Blocklist gelistet — Die bisherige Reputation Ihrer IP. Fordern Sie eine Entlistung an oder verlangen Sie eine IP mit besserer Reputation.

Senden Sie keine echten E-Mails an Gmail oder Outlook, bis die Bewertung 10/10 beträgt. Eine niedrige Bewertung in Kombination mit einer neuen IP führt dazu, dass Ihre Domain am ersten Tag markiert wird.

Schritt 8 — Einen echten Mail-Client verbinden

Konfigurieren Sie Thunderbird, Apple Mail oder Ihr Smartphone mit diesen Einstellungen. Der Server-Host ist für alle Clients mail.example.com:

  • IMAP: Port 993, SSL/TLS (oder 143 mit STARTTLS)
  • SMTP submission: Port 465, SSL/TLS (oder 587 mit STARTTLS)
  • Benutzername: die vollständige Adresse, you@example.com
  • Passwort: das von Ihnen gesetzte Postfach-Passwort

Senden Sie Client-Mails niemals über Port 25. Dieser Port ist nur für die Kommunikation zwischen Servern reserviert. mailcow bietet dort keine authentifizierte Submission an; Verbindungsversuche von Clients werden abgelehnt. Wenn ein Client Relay access denied meldet, versucht er die Übertragung über Port 25 oder ohne Authentifizierung. Wechseln Sie zu Port 465 oder 587 unter Verwendung Ihrer Postfach-Zugangsdaten.

Schritt 9 — Sichern Sie die relevanten Daten

mailcow enthält ein Backup-Skript, das Snapshots von allen zustandsbehafteten Volumes erstellt. Führen Sie das Skript auf einer externen Festplatte oder einem gemounteten Remote-Laufwerk aus:

sudo MAILCOW_BACKUP_LOCATION=/opt/mailcow-backups \
  ./helper-scripts/backup_and_restore.sh backup all

all sichert sechs Elemente. Der Verlust eines dieser Elemente führt zu Datenverlust: vmail (die eigentlichen Mailboxes), crypt (die Schlüssel zur Entschlüsselung von vmail — ohne diese sind die Daten unbrauchbar), mysql (die MariaDB mit Domains, Benutzern, Aliases und Einstellungen), redis (Warteschlangen- und Cache-Status), rspamd (gelernte Spam/Ham-Daten) und postfix (die Mail-Queue). Das Skript läuft in einem Helper-Container und schreibt komprimierte Archive. Dadurch bleiben die Backups konsistent, während der Stack aktiv ist. Automatisieren Sie den Vorgang mit einem nächtlichen cron job und nutzen Sie --delete-days 14, um alte Datensätze zu entfernen. Die Wiederherstellung erfolgt mit demselben Skript unter Verwendung von restore. Damit werden die Snapshots aufgelistet und Sie können auswählen, welche Daten wiederhergestellt werden sollen. Ein Backup, das noch nie erfolgreich wiederhergestellt wurde, ist lediglich eine Hoffnung, kein Backup — führen Sie einen Testlauf auf einem separaten VPS durch.

Schritt 10 — Zeitgesteuerte Aktualisierung

mailcow führt Updates über ein eigenes Script aus. Dieses Script lädt den neuen Code herunter, migriert mailcow.conf, lädt Images vorab herunter und startet die Container in dieser Reihenfolge neu:

cd /opt/mailcow-dockerized
sudo ./update.sh --check   # reports whether an update exists, changes nothing
sudo ./update.sh           # applies it

Erstellen Sie zuerst ein Backup (Schritt 9), da eine Schema-Migration nicht leicht rückgängig gemacht werden kann. Updates erscheinen häufig und enthalten Sicherheitsfixes für internetseitige Daemons. Lassen Sie einen Mailserver daher nicht über Monate hinweg ohne Updates. Falls ein Update einen Container in einen unhealthy-Zustand versetzt, nennt sudo docker compose logs --tail=50 <service>-mailcow den Daemon, der nicht neu gestartet ist.

Ein Hinweis zur Härtung

mailcow nutzt einen eigenen netfilter-Dienst (netfilter-mailcow), der IP-Adressen sperrt, die die Mail- und Webmail-Ports mit Anfragen überlasten. Der Mail-Bereich ist somit standardmäßig geschützt. Dies umfasst jedoch nicht den SSH-Zugriff auf den Host selbst. Dieser bleibt weiterhin öffentlich erreichbar und ist Brute-Force-Angriffen ausgesetzt. Kombinieren Sie diese Installation mit Fail2ban zur Überwachung des SSH-Auth-Logs und einer Anmeldung nur per SSH-Key. Schützen Sie die mailcow-Admin-Oberfläche durch ein starkes Passwort und halten Sie diese idealerweise vom öffentlichen Internet fern oder nutzen Sie einen VPN.

Fehlerursachen und die exakten Fehlermeldungen

Mail-Queues und keine Zustellung. Führen Sie sudo docker compose exec postfix-mailcow postqueue -p aus oder prüfen Sie die Mail-Queue in der Admin-UI; Einträge verbleiben mit folgendem Status im Status "deferred":

status=deferred (connect to gmail-smtp-in.l.google.com[142.250.x.x]:25: Connection timed out)

Dies bedeutet, dass der ausgehende Port 25 durch Ihren Provider blockiert wird (Schritt 1). Eine Konfigurationsänderung behebt dies nicht – eröffnen Sie ein Support-Ticket. Es liegt weder an DNS noch an TLS; ein Indiz ist das Wort timed out im Zusammenhang mit einem entfernten MX auf Port 25.

Gmail markiert alles als Spam oder lehnt die Zustellung ab. Öffnen Sie die Nachricht in Gmail, wählen Sie "Original anzeigen" und prüfen Sie die Authentifizierungsergebnisse. dkim=fail oder dkim=none bedeutet, dass Ihr dkim._domainkey TXT-Eintrag fehlt, fehlerhaft ist oder noch nicht propagiert wurde – veröffentlichen Sie exakt die Werte, die auf der ARC/DKIM-Seite angezeigt werden, und warten Sie die TTL ab. spf=fail bedeutet, dass die SPF/MX-Einträge Ihre IP nicht abdecken. Die Übereinstimmung (Alignment) ist entscheidend; ein einziger fehlgeschlagener Check reicht aus, um im Spam-Ordner zu landen.

Ablehnung durch große Provider beim Verbindungsaufbau. Bounces oder Postfix-Logs enthalten die PTR-Ablehnung von Gmail:

550-5.7.25 [10.0.0.10] The IP address sending this message does not have a PTR
550-5.7.25 record setup, or the corresponding forward DNS entry does not match
550 5.7.25 the sending IP. As a policy, Gmail does not accept messages from IPs
550 5.7.25 with missing PTR records.

Der Code 550 5.7.25 bedeutet fehlendes oder falsches Reverse-DNS. Setzen Sie den PTR für Ihre IP beim Provider auf mail.example.com (Schritt 2). Der Forward- (A) und der Reverse-Eintrag (PTR) müssen übereinstimmen, und beide müssen denselben Hostnamen angeben, unter dem mailcow von anderen Servern angesprochen wird.

Browser zeigt eine Zertifikatswarnung an, die nicht verschwindet. Der acme-mailcow-Container konnte kein gültiges Zertifikat erhalten. Prüfen Sie das Log:

sudo docker compose logs acme-mailcow | tail -n 40

Eine Zeile wie Cannot validate any hostnames, skipping Let's Encrypt for 1 hour. oder ein Challenge-Fehler bedeutet, dass Port 80 aus dem Internet nicht erreichbar ist oder der A-Record nicht auf diesen Server zeigt. Bestätigen Sie, dass mail.example.com auf den Server auflöst, öffnen Sie die Ports 80 und 443 in der Host-Firewall und stellen Sie sicher, dass keine andere Anwendung diese Ports belegt. Starten Sie nach der Fehlerbehebung den Client mit sudo docker compose restart acme-mailcow neu, anstatt die stündliche Wartezeit (back-off) abzuwarten.

FAQ

Lohnt sich das Self-Hosting von E-Mails wirklich?

Wenn Sie Datenhoheit, unbegrenzte Aliase und volle Kontrolle benötigen, dann ja — mailcow bietet einen professionellen Stack zum Preis eines VPS. Die Zustellbarkeit (Deliverability) erfordert jedoch ständige Wartung: Die Überwachung der IP-Reputation, der DNS-Konfiguration und der Blocklisten ist eine dauerhafte Aufgabe. Für geschäftskritische E-Mail-Adressen, bei denen ein einziger Tag im Spam-Ordner eines Empfängers Verluste bedeutet, ist ein Managed Provider die pragmatische Wahl. Betreiben Sie Self-Hosting nur, wenn Ihnen Kontrolle wichtiger als Komfort ist und Sie die Wartung tatsächlich übernehmen.

Woher weiß ich, ob Port 25 für ausgehenden Traffic blockiert ist?

Führen Sie nc -vz -w 5 gmail-smtp-in.l.google.com 25 auf dem Server aus. "succeeded!" bedeutet, dass der Port offen ist; ein timed out nach der Wartezeit bedeutet, dass Ihr Provider den Port blockiert. Dies ist der häufigste Grund, warum ein selbst gehosteter Server zwar E-Mails empfangen, aber keine senden kann. Die einzige Lösung ist die Freischaltung des Ports durch Ihren Provider — lokale Einstellungen können dies nicht ändern.

Warum landen meine E-Mails trotzdem im Spam-Ordner von Gmail?

Fast immer liegt eine fehlerhafte Authentifizierungskette vor. Nutzen Sie in Gmail die Funktion "Original anzeigen" und suchen Sie nach spf=pass, dkim=pass und dmarc=pass. Ein dkim=fail deutet auf einen fehlenden oder fehlerhaften dkim._domainkey TXT-Record hin; auch ein PTR-Mismatch oder eine neue IP ohne Sendehistorie führt zu Problemen. Erreichen Sie zuerst einen Score von 10/10 bei mail-tester.com und steigern Sie das Versandvolumen langsam (einige Nachrichten pro Tag, dann mehr), anstatt am ersten Tag große Mengen zu versenden.

Was genau muss ich sichern?

Führen Sie backup_and_restore.sh backup all aus und speichern Sie das gesamte Set außerhalb des Servers. Es sichert vmail (die Mailboxen), crypt (die Schlüssel zur Entschlüsselung), die MariaDB-Datenbank (Domains, Benutzer, Aliase, Einstellungen), Redis, die gelernten Daten von Rspamd und die Postfix-Queue. Das crypt-Volume wird oft übersehen — ohne dieses ist das vmail-Backup unlesbarer Geheimtext. Testen Sie die Wiederherstellung mindestens einmal auf einem Testsystem.

Kann ich mailcow auf einem 2 GB VPS betreiben?

Nicht zuverlässig. generate_config.sh schlägt vor, ClamAV zu deaktivieren, wenn weniger als ca. 2,5 GiB verfügbar sind. Selbst dann konkurrieren Rspamd, ClamAV, Dovecot und MariaDB um den Arbeitsspeicher, sodass es unter realer Last zu Swap-Nutzung und OOM-Kills kommt. Betrachten Sie 6 GiB plus 1 GiB Swap als Minimum für eine stabile Einzelnutzer-Installation. Wechseln Sie zu 8 GiB, sobald mehr als zwei Personen das System nutzen.

#mailcow#email#self-hosting#docker#dns