Mailcow auf VPS: E-Mails, die Gmail annimmt
Prüfen Sie Port 25 vor der Installation: Eine Sperre hält E-Mails in der Warteschlange. Setzen Sie danach DNS gegen Gmail-Fehler 550 5.7.25 wegen fehlendem PTR.
Was Sie erstellen
Ein vollständiger Mailserver auf einem von Ihnen verwalteten Server: SMTP zum Senden und Empfangen, IMAP, damit Smartphone und Laptop synchron bleiben, ein Webmail-Client sowie ein Spamfilter, 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. Deshalb ist die Software nicht der schwierige Teil. Nach einer halben Stunde sollte der Mailserver laufen.
Der schwierige Teil ist alles, was ihn umgibt. Bei E-Mail ist der Rest des Internets einem neuen Server grundsätzlich misstrauisch. Der Unterschied zwischen „es funktioniert“ und „Gmail verwirft jede Nachricht unbemerkt“ hängt an vier DNS-Einträgen und einer Einstellung für die IP-Reputation, die Sie möglicherweise nicht vollständig kontrollieren können. Lesen Sie die Voraussetzungen, bevor Sie etwas mieten. Wenn Sie danach entscheiden, dass sich der Aufbau einer Reputation nicht lohnt, ist das eine berechtigte Entscheidung. Unsere Übersicht darüber, was sich 2026 tatsächlich für das Self-Hosting lohnt ordnet E-Mail aus genau diesen Gründen unter „nur, wenn Sie es wirklich wollen“ ein.
Die Voraussetzungen SIND das Projekt
Wenn auch nur eine dieser Voraussetzungen fehlt, versendet Ihr Server E-Mails, die nie ankommen. Grob nach der Häufigkeit geordnet, scheitern Projekte meist an Folgendem:
Der ausgehende Port 25 muss geöffnet sein. Ihr Server stellt E-Mails über TCP-Port 25 an Gmail und Microsoft zu. Viele VPS- und Cloud-Anbieter blockieren ausgehende Verbindungen über Port 25 standardmäßig, um Spam zu bekämpfen. Diese Sperre erfolgt still: Beim Booten treten keine Fehler auf, alles scheint ordnungsgemäß zu funktionieren, und die E-Mails bleiben einfach dauerhaft in der Warteschlange. Testen Sie dies, bevor Sie etwas installieren. Wenn der Port blockiert ist, hilft nur ein Support-Ticket mit der Bitte, ihn freizuschalten. Einige Anbieter tun dies bei älteren Konten, andere niemals.
Eine saubere IP-Adresse mit brauchbarer Reputation. Wiederverwendete VPS-IP-Adressen stehen aufgrund von Spam des vorherigen Mieters häufig bereits auf Blocklisten. Prüfen Sie Ihre IP-Adresse vor der Entscheidung bei einem Dienst wie der Spamhaus-Abfrage oder mxtoolbox. Eine gelistete IP-Adresse führt zu Ablehnungen, die Sie nicht durch eine Konfigurationsänderung umgehen können.
Kontrolle über DNS und ein korrektes PTR-Record. Sie müssen Records in der Zone Ihrer Domain hinzufügen. Außerdem benötigen Sie Reverse DNS (PTR) für die IP-Adresse des Servers, das auf den Mail-Hostnamen zurückzeigt. Ein PTR-Record wird fast nie in Ihrem DNS-Panel gesetzt. Er wird vom Besitzer der IP-Adresse verwaltet und daher im Control Panel Ihres VPS-Anbieters oder per Ticket eingerichtet.
6 GiB RAM und 2 vCPU sind die komfortable Untergrenze. Die eigene Mindestanforderung von mailcow liegt bei 6 GiB RAM und zusätzlich 1 GiB Swap für eine private Installation. Sobald mehrere Benutzer darauf angewiesen sind, werden 8 GiB empfohlen. Unter etwa 2.5 GiB bietet generate_config.sh an, den ClamAV-Virenscanner zu deaktivieren, damit der Kernel nicht damit beginnt, Container zu beenden. Planen Sie zunächst 20 GB SSD-Speicher ein.
Ein DNS-Name statt einer reinen IP-Adresse. Wählen Sie einen Hostnamen wie mail.example.com. Dieser eine Name wird zu Ihrem MAILCOW_HOSTNAME, zum Betreff Ihres TLS-Zertifikats, zum PTR-Ziel und zum SMTP-Banner. Verwenden Sie ihn überall konsistent.
Schritt 1: Prüfen, ob der ausgehende Port 25 geöffnet ist
Führen Sie diesen Schritt zuerst aus. Wenn er fehlschlägt, sind alle weiteren Maßnahmen vergeblich. Versuchen Sie, vom neuen VPS aus eine SMTP-Verbindung zu einem echten Mailserver herzustellen:
sudo apt update && sudo apt install -y netcat-openbsd
nc -vz -w 5 gmail-smtp-in.l.google.com 25Bei einer funktionierenden Verbindung wird das Ergebnis sofort angezeigt:
Connection to gmail-smtp-in.l.google.com (142.250.x.x) 25 port [tcp/smtp] succeeded!Ein blockierter Port wartet die gesamten fünf Sekunden und schlägt anschließend fehl:
nc: connect to gmail-smtp-in.l.google.com port 25 (tcp) timed out: Operation now in progressDieser Timeout zeigt die Sperre. Es handelt sich um einen netzwerkseitigen Filter des Providers, nicht um Ihre Firewall. Eine lokale Änderung kann das Problem daher nicht beheben. Öffnen Sie ein Ticket: „Bitte aktivieren Sie den ausgehenden TCP-Port 25 für meinen VPS unter <IP>. Ich betreibe einen legitimen Mailserver.“ Installieren Sie mailcow erst, wenn dieser Befehl „succeeded“ zurückgibt. Beachten Sie, dass eingehender Port 25, über den andere Server eine Verbindung zu Ihrem Server herstellen, ein separater Pfad ist und normalerweise geöffnet ist. Provider drosseln in der Regel die ausgehende Seite.
Schritt 2: DNS-Einträge jetzt setzen
DNS-Änderungen benötigen Zeit für die Verteilung. Veröffentlichen Sie daher vor der Installation alles, was möglich ist. Nehmen Sie an, Ihre Domain ist example.com, Ihr Mail-Host ist mail.example.com und die IP-Adresse ist 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 bedeutet: „Nur mein MX darf für diese Domain senden, alle anderen werden abgewiesen.“ Setzen Sie DMARC zunächst auf p=none, damit Sie die Reports überwachen können, ohne Ihre eigenen E-Mails abzuweisen. Verschärfen Sie die Richtlinie auf p=quarantine und anschließend auf p=reject, sobald die Ausrichtung bestätigt ist. Zwei Einträge fehlen absichtlich noch: DKIM, das mailcow in Schritt 6 für Sie erzeugt, und PTR, den Sie jetzt im Panel Ihres Providers setzen.
Setzen Sie den PTR-Eintrag (Reverse DNS) für 10.0.0.10 auf mail.example.com, also auf den exakten Wert MAILCOW_HOSTNAME. Dies ist der einzelne Eintrag, den die meisten Benutzer vergessen. Große Provider lehnen E-Mails ohne passenden PTR-Eintrag ab. Wenn Ihr Panel kein Feld für rDNS enthält, eröffnen Sie ein Support-Ticket.
Schritt 3: Docker installieren
mailcow benötigt die Docker Engine mit dem Compose-v2-Plugin. Verwenden Sie statt des Ubuntu-Pakets docker.io das offizielle Convenience-Skript von Docker. Das Ubuntu-Paket enthält überhaupt kein Compose-Plugin:
curl -fsSL https://get.docker.com | sudo sh
sudo docker compose versionSie sollten eine Zeile mit Docker Compose version v2.x sehen. Gibt docker compose version den Wert docker: 'compose' is not a docker command aus, ist die Docker Engine installiert, das Compose-Plugin jedoch nicht. Installieren Sie das Plugin aus dem Docker-Repository, führen Sie das obige Skript erneut aus oder folgen Sie unserer Einführung in Docker Compose. Darin werden beide Komponenten aus dem eigenen apt-Repository von Docker eingerichtet.
Schritt 4: mailcow klonen und die Konfiguration erzeugen
cd /opt
sudo git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
umask
sudo ./generate_config.shPrüfen Sie, ob umask zuerst 0022 ausgibt. mailcow verweigert den Build mit einer ungewöhnlichen Dateimaske. Eine frische root-Shell unter Ubuntu 24.04 liefert 0022 bereits. Das Skript fragt anschließend nach der entscheidenden Angabe: dem vollständig qualifizierten Hostnamen. Geben Sie mail.example.com ein. Der Wert muss exakt mit Ihrem A-Record und PTR übereinstimmen. Das Skript schreibt mailcow.conf. Dies ist die einzige Umgebungsdatei, die der gesamte Stack einliest. Öffnen Sie die Datei, wenn Sie die Webports (HTTP_PORT, HTTPS_PORT) ändern oder ClamAV auf einem kleinen System 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 boxSKIP_FTS=y ist der zweite Stellhebel auf einem System mit wenig RAM. Die Volltextsuche ist laut mailcow-Dokumentation der zweitgrößte Speicherverbraucher. Wenn Sie sie überspringen, steht Ihnen in der Webmail-Oberfläche lediglich keine Suche im Nachrichtentext zur Verfügung.
Lassen Sie HTTP_PORT=80 und HTTPS_PORT=443 unverändert, sofern nicht bereits ein anderer Dienst diese Ports auf dem Host verwendet. Der integrierte ACME-Client von mailcow benötigt Port 80 aus dem Internet, um das Zertifikat abzurufen. Deshalb betreiben Sie auf demselben System kein separates nginx-plus-Certbot-Setup. mailcow stellt TLS-Zertifikate intern aus und erneuert sie selbst. Ein zweiter Dienst, der Port 80 oder 443 belegt, verhindert dies. Das gilt auch für jeden anderen Dienst, der eine öffentliche Weboberfläche benötigt. Ein Setup wie Halcyon, das eine Jellyfin-Bibliothek als Videothek der 90er-Jahre neu gestaltet und dafür einen eigenen Reverse Proxy auf Port 443 erwartet, gehört daher auf einen anderen Host. Eine Ausnahme ist ein Dienst, der keinen öffentlichen Webport benötigt: ein selbst gehostetes RustDesk-Relay lauscht ausschließlich in seinem eigenen Bereich von 21115 bis 21119. Es kann den Host daher mitbenutzen, sofern noch ausreichend Bandbreite verfügbar ist.
Schritt 5: Stack starten und anmelden
sudo docker compose pull
sudo docker compose up -d
sudo docker compose psDer Pull lädt ungefähr zwei Dutzend Images herunter. Planen Sie dafür einige Minuten ein. Wenn docker compose ps für jeden Container running (oder healthy) anzeigt, öffnen Sie https://mail.example.com in einem Browser. Die Standardanmeldung für den Administrator verwendet den Benutzernamen admin und das Passwort moohoo. Ändern Sie dieses Passwort sofort in der Administrationsoberfläche unter Access → Administrators. Wenn der Browser vor NET::ERR_CERT_AUTHORITY_INVALID warnt, wurde das ACME-Zertifikat noch nicht ausgestellt. Lesen Sie den Abschnitt zum ACME-Fehler, bevor Sie von einem Defekt ausgehen. Ein selbstsigniertes Platzhalterzertifikat ist während der ersten ein bis zwei Minuten normal.
Schritt 6: Domain und Mailbox hinzufügen und DKIM veröffentlichen
Öffnen Sie in der Admin-Oberfläche die Seite Mail Setup (Configuration → Mail Setup). Klicken Sie auf der Registerkarte Domains auf Add domain und geben Sie example.com ein. Klicken Sie anschließend unter Mailboxes auf Add mailbox, um you@example.com mit einem Passwort zu erstellen. Diese Mailbox ist dann bereits verfügbar und über IMAP erreichbar.
Richten Sie nun den DKIM-Schlüssel ein. Öffnen Sie Configuration → ARC/DKIM keys. mailcow hat möglicherweise bereits beim Hinzufügen der Domain einen Schlüssel generiert. Falls nicht, generieren Sie dort einen Schlüssel. Wählen Sie die Domain aus, übernehmen Sie den Selector dkim, 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"Auf der Seite Domains in mailcow gibt es eine Schaltfläche DNS. Sie listet alle erwarteten Records auf und zeigt anhand eines grünen Häkchens oder eines roten Kreuzes, was tatsächlich veröffentlicht ist. Verwenden Sie diese Liste als Checkliste. Erst wenn jede Zeile grün ist, sollten Sie die Zustellbarkeit testen. Eine rote DKIM-Zeile nach der Veröffentlichung bedeutet meistens, dass der Schlüssel falsch auf mehrere TXT-Abschnitte verteilt wurde. Ein 2048-bit-Schlüssel ist länger als das Limit von 255 Zeichen für eine einzelne TXT-Zeichenfolge. Fügen Sie ihn daher als einen logischen Wert ein, und lassen Sie den DNS-Host ihn in Abschnitte aufteilen.
Schritt 7: Zustellbarkeit testen und 10/10 erreichen
Rufen Sie mail-tester.com auf, kopieren Sie die dort angezeigte zufällige Adresse und senden Sie von Ihrem neuen Postfach eine Nachricht dorthin. Melden Sie sich dazu bei 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 10/10 an. Häufige Abzüge und ihre Ursachen:
- SPF not aligned, Ihr
MX/SPF-Eintrag fehlt oder die absendende IP-Adresse ist nicht abgedeckt. Prüfen Sie den SPF-TXT-Eintrag erneut. - DKIM signature does not verify, der
dkim._domainkey-TXT-Eintrag fehlt, wird noch verteilt oder ist beschädigt. Dies ist der häufigste Fehler. - No PTR / PTR mismatch, der Reverse-DNS-Eintrag wird nicht zu
mail.example.comaufgelöst. Korrigieren Sie ihn beim Provider. - Listed on a blocklist, die IP-Adresse hat eine frühere schlechte Reputation. Beantragen Sie die Entfernung von der Blocklist oder fordern Sie eine sauberere IP-Adresse an.
Senden Sie erst dann echte E-Mails an Gmail oder Outlook, wenn hier 10/10 angezeigt wird. Eine niedrige Bewertung zusammen mit einer neuen IP-Adresse kann dazu führen, dass Ihre Domain bereits am ersten Tag als problematisch eingestuft wird.
Schritt 8: Einen echten E-Mail-Client verbinden
Konfigurieren Sie Thunderbird, Apple Mail oder Ihr Smartphone mit diesen Einstellungen für den Server. Der Server-Hostname lautet für alle Clients mail.example.com:
- IMAP: Port 993, SSL/TLS (oder Port 143 mit STARTTLS)
- SMTP-Submission: Port 465, SSL/TLS (oder Port 587 mit STARTTLS)
- Benutzername: die vollständige Adresse,
you@example.com - Passwort: das festgelegte Mailbox-Passwort
Senden Sie Client-E-Mails niemals über Port 25. Dieser Port ist ausschließlich für die Kommunikation zwischen Mailservern vorgesehen. mailcow bietet dort keine authentifizierte Submission an, und ein darauf konfigurierter Client wird abgewiesen. Wenn ein Client Relay access denied meldet, versucht er, über Port 25 oder ohne Authentifizierung zu senden. Stellen Sie ihn auf Port 465 oder 587 um und verwenden Sie die Zugangsdaten Ihrer Mailbox.
Schritt 9: Sichern Sie, was tatsächlich wichtig ist
mailcow wird mit einem Backup-Skript ausgeliefert, das von jedem zustandsbehafteten Volume einen Snapshot erstellt. Führen Sie es auf einem externen Datenträger oder einem eingebundenen Remote-Ziel aus:
sudo MAILCOW_BACKUP_LOCATION=/opt/mailcow-backups \
./helper-scripts/backup_and_restore.sh backup allall erfasst sechs Bestandteile. Wenn einer davon verloren geht, gehen Daten verloren: vmail (die eigentlichen Postfächer), crypt (die Schlüssel zum Entschlüsseln von vmail; ohne diese ist vmail unbrauchbar), mysql (die MariaDB-Datenbank mit Domains, Benutzern, Aliasen und Einstellungen), redis (Zustand von Warteschlange und Cache), rspamd (erlernte Spam- und Ham-Klassifizierungen) und postfix (die Mail-Warteschlange). Das Skript läuft in einem Hilfscontainer und schreibt komprimierte Archive. Dadurch bleiben die Backups konsistent, auch wenn der Stack aktiv ist. Automatisieren Sie den Vorgang mit einem nächtlichen Cronjob und ergänzen Sie --delete-days 14, um alte Sicherungssätze zu löschen. Ein Cronjob, der nicht mehr funktioniert, schlägt lautlos fehl. Leiten Sie den Exit-Status des Skripts deshalb an eine Stelle weiter, an der Sie ihn tatsächlich bemerken. Ein selbst gehosteter ntfy-Server nimmt einen einzeiligen curl-Aufruf aus demselben Cron-Eintrag entgegen und meldet den Fehler in der Nacht seines Auftretens auf Ihrem Telefon. Die Wiederherstellung erfolgt mit demselben Skript und restore. Damit werden die Snapshots aufgelistet und Sie können auswählen, was wiederhergestellt werden soll. Ein Backup, das Sie noch nie testweise wiederhergestellt haben, ist eine Hoffnung, aber kein Backup. Führen Sie mindestens einen Probelauf auf einer nicht produktiven VPS aus.
Schritt 10: Nach einem Zeitplan aktualisieren
mailcow wird über sein eigenes Script aktualisiert. Es ruft neuen Code ab, migriert mailcow.conf, lädt Images vorab herunter und startet die Container in der richtigen Reihenfolge neu:
cd /opt/mailcow-dockerized
sudo ./update.sh --check # reports whether an update exists, changes nothing
sudo ./update.sh # applies itErstellen Sie zuerst ein Backup (Schritt 9), da sich eine Schema-Migration nur schwer rückgängig machen lässt. Updates werden häufig veröffentlicht und enthalten Sicherheitskorrekturen für aus dem Internet erreichbare Daemons. Lassen Sie einen Mailserver daher nicht monatelang ohne Updates. Wenn ein Update einen Container in einen fehlerhaften Zustand versetzt, nennt sudo docker compose logs --tail=50 <service>-mailcow den Daemon, der nicht wieder gestartet werden konnte.
Hinweis zur Absicherung
mailcow betreibt einen eigenen netfilter-Dienst (netfilter-mailcow), der IP-Adressen sperrt, die wiederholt auf die Mail- und Webmail-Ports zugreifen. Die Mail-Seite ist damit standardmäßig geschützt. SSH auf dem Host selbst ist davon nicht abgedeckt. Der Dienst ist weiterhin aus dem Internet erreichbar und weiterhin Brute-Force-Angriffen ausgesetzt. Kombinieren Sie diesen Aufbau mit Fail2ban zur Überwachung des SSH-Authentifizierungsprotokolls und einer Anmeldung ausschließlich per Schlüssel. Schützen Sie die mailcow-Administrationsoberfläche mit einem starken Passwort. Idealerweise ist sie nicht aus dem öffentlichen Internet erreichbar oder nur über ein VPN zugänglich.
Fehlerbilder mit den exakten Zeichenfolgen
Mailwarteschlangen und keine Zustellung. Führen Sie sudo docker compose exec postfix-mailcow postqueue -p aus oder öffnen Sie die Mailwarteschlange in der Administrationsoberfläche. Die Einträge bleiben mit folgendem Status zurückgestellt:
status=deferred (connect to gmail-smtp-in.l.google.com[142.250.x.x]:25: Connection timed out)Das bedeutet, dass Ihr Provider den ausgehenden Port 25 blockiert (Schritt 1). Keine Konfigurationsänderung kann das beheben. Eröffnen Sie ein Support-Ticket. Die Ursache ist weder DNS noch TLS. Das entscheidende Merkmal ist das Wort timed out bei einem entfernten MX-Server über Port 25.
Gmail markiert alle Nachrichten als Spam oder weist sie zurück. Öffnen Sie die Nachricht in Gmail, wählen Sie „Show original“ und lesen Sie die Authentifizierungsergebnisse. dkim=fail oder dkim=none bedeutet, dass Ihr dkim._domainkey-TXT-Eintrag fehlt, beschädigt ist oder noch nicht propagiert wurde. Veröffentlichen Sie exakt den Inhalt erneut, den die ARC/DKIM-Seite anzeigt, und warten Sie das TTL-Intervall ab. spf=fail bedeutet, dass die SPF-/MX-Einträge Ihre IP-Adresse nicht abdecken. Die Ausrichtung ist entscheidend. Eine einzige fehlgeschlagene Prüfung reicht aus, damit die Nachricht als Spam eingestuft wird.
Große Provider weisen die Verbindung bereits beim Verbindungsaufbau zurück. In den Bounce-Nachrichten oder Postfix-Logs steht die PTR-Zurückweisung 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, dass der Reverse-DNS-Eintrag fehlt oder nicht übereinstimmt. Setzen Sie beim Provider den PTR-Eintrag Ihrer IP-Adresse auf mail.example.com (Schritt 2). Forward-DNS (A) und Reverse-DNS (PTR) müssen übereinstimmen. Beide müssen denselben Hostnamen angeben, unter dem sich mailcow bei anderen Servern meldet.
Der Browser zeigt dauerhaft eine Zertifikatswarnung an. Der Container acme-mailcow konnte kein gültiges Zertifikat abrufen. Prüfen Sie sein Log:
sudo docker compose logs acme-mailcow | tail -n 40Eine Zeile wie Cannot validate any hostnames, skipping Let's Encrypt for 1 hour. oder ein Fehler bei der Challenge bedeutet, dass Port 80 aus dem Internet nicht erreichbar ist oder der A-Eintrag nicht auf diesen Server zeigt. Stellen Sie sicher, dass mail.example.com auf diesen Server aufgelöst wird, und öffnen Sie Port 80 und 443 in allen Host-Firewalls. Prüfen Sie außerdem, dass kein anderer Dienst diese Ports bindet. Starten Sie den Client nach der Fehlerbehebung mit sudo docker compose restart acme-mailcow neu, anstatt die einstündige Wartezeit abzuwarten.
FAQ
Lohnt sich Self-Hosting von E-Mail tatsächlich?
Wenn Sie Datenhoheit, unbegrenzte Aliase und vollständige Kontrolle wünschen, lautet die Antwort ja: mailcow bietet Ihnen zum Preis eines VPS einen professionellen Stack. Die Zustellbarkeit bleibt jedoch eine dauerhafte Aufgabe. IP-Reputation, DNS-Abgleich und die Überwachung von Blocklisten enden nie vollständig. Für eine geschäftskritische Adresse, bei der ein einziger Tag im Spam-Ordner eines Empfängers bereits Kosten verursacht, ist ein verwalteter Anbieter die pragmatische Wahl. Betreiben Sie Dienste selbst, wenn Ihnen Kontrolle wichtiger ist als Komfort und Sie den Dienst tatsächlich pflegen. Wenn es Ihnen vor allem darum geht, Ihre Daten von den Servern anderer Anbieter fernzuhalten, und nicht speziell um E-Mail, beginnen Sie mit einem Dienst, über den niemand anderes bestimmen kann: Eine Fotobibliothek hat überhaupt kein Zustellbarkeitsproblem, und unser Vergleich von PhotoPrism und Immich behandelt die erforderlichen RAM-Mindestwerte und Backup-Befehle für diesen Aufbau auf einem vergleichbaren VPS.
Wie erkenne ich, ob der ausgehende Port 25 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 geöffnet ist. Ein timed out nach der Wartezeit bedeutet, dass der Anbieter den Port blockiert. Dies ist der häufigste Grund dafür, dass ein selbst gehosteter Server E-Mails empfangen, aber niemals senden kann. Die einzige Lösung besteht darin, den Anbieter zur Freigabe des Ports zu bewegen. Lokale Einstellungen ändern daran nichts.
Warum landen meine E-Mails weiterhin im Spam-Ordner von Gmail?
Fast immer ist eine Authentifizierungskette fehlerhaft. Wählen Sie in Gmail "Original anzeigen" und suchen Sie nach spf=pass, dkim=pass und dmarc=pass. Ein dkim=fail weist auf einen fehlenden oder beschädigten dkim._domainkey TXT-Eintrag hin. Auch eine nicht übereinstimmende PTR-Zuordnung oder eine neue IP-Adresse ohne Versandhistorie verschlechtert die Zustellbarkeit. Erreichen Sie zunächst bei mail-tester.com eine Bewertung von 10/10. Wärmen Sie die IP-Adresse anschließend langsam auf, indem Sie mit wenigen Nachrichten pro Tag beginnen und die Anzahl allmählich erhöhen, statt bereits am ersten Tag große Mengen zu versenden.
Welche Daten muss ich genau sichern?
Führen Sie backup_and_restore.sh backup all aus und bewahren Sie den vollständigen Datensatz außerhalb des Servers auf. Der Datensatz enthält vmail (die Postfächer), crypt (die Schlüssel zum Entschlüsseln der Postfächer), die MariaDB-Datenbank (Domains, Benutzer, Aliase und Einstellungen), Redis, die angelernten Daten von Rspamd und die Postfix-Warteschlange. Das crypt-Volume wird häufig übersehen. Ohne dieses Volume ist das Backup von vmail nicht lesbar, da es nur aus Geheimtext besteht. Testen Sie mindestens einmal eine Wiederherstellung auf einem Testsystem.
Kann ich mailcow auf einem VPS mit 2 GB ausführen?
Nicht zuverlässig. generate_config.sh bietet an, ClamAV unterhalb von etwa 2.5 GiB zu deaktivieren. Auch dann konkurrieren Rspamd, ClamAV, Dovecot und MariaDB um den Arbeitsspeicher. Unter jeder realen Last kommt es daher zu Swap-Nutzung und OOM-Kills. Betrachten Sie 6 GiB plus 1 GiB Swap als Mindestgröße für eine stabile Installation mit einem Benutzer. Wechseln Sie auf 8 GiB, sobald mehr als ein paar Personen darauf angewiesen sind.