Zum Inhalt

Produktions-Mailserver im Self-Hosting (Postfix, Dovecot & DMARC)

Erstellt: 05.11.2026  ·  Zuletzt aktualisiert: 06.11.2026  ·  Nejat Hakan

Der Betrieb einer eigenen E-Mail-Infrastruktur gilt zu Recht als die Königsdisziplin der Linux-Systemadministration. Anders als ein gewöhnlicher Webserver ist E-Mail ein global föderiertes System, das auf striktem kryptografischem Vertrauen, IP-Reputation und mehrschichtiger Protokoll-Verifikation basiert.

Während kommerzielle Anbieter (Gmail, Microsoft 365) Metadaten analysieren und an proprietäre Ökosysteme binden, garantiert ein eigener gehärteter Mail-Stack 100 % Souveränität über vertrauliche Kommunikation, unbegrenzte Aliase, serverseitige Sieve-Filterung und null Daten-Mining durch Dritte.


1. Architektur, Protokolle & Voraussetzungen

Ein professioneller Linux-Mailserver ist kein einzelnes monolithisches Programm – er besteht aus einer Kette spezialisierter Dienste, die ineinandergreifen:

```mermaid

%%{init: {'flowchart': {'wrappingWidth': 600, 'subGraphTitleMargin': {'top': 15, 'bottom': 15}}}}%% %%{init: {'flowchart': {'wrappingWidth': 600}}}%% flowchart TB Sender["🌐 Externer Absender-MTA (z. B. Gmail / Web.de)"] Postfix["📮 Postfix SMTP-Listener (:25)
TLS 1.3 · DNSBL · SPF-Prüfung"] Filter["🔐 Spam- & Virenfilter
Rspamd / SpamAssassin & ClamAV"] Dovecot["📬 Dovecot LMTP
Serverseitige Sieve-Sortierung"] Maildir[("💾 Verschlüsselter Maildir-Speicher
/var/vmail/domain/user/")]

    Sender ==>|"SMTP :25 (STARTTLS)"| Postfix
    Postfix -->|"Milter-Scan (:11332)"| Filter
    Filter -->|"Gereinigte Mail"| Dovecot
    Dovecot ==>|"Atomare Speicherung"| Maildir
```
%%{init: {'flowchart': {'wrappingWidth': 600, 'subGraphTitleMargin': {'top': 15, 'bottom': 15}}}}%%
flowchart TB
    Client["💻 Mail-Client (Thunderbird / Mobile / Webmail)"]

    subgraph InboundAccess ["📬 Postfach-Abruf (IMAP)"]
        DovecotImap["📬 Dovecot IMAPS (:993)<br/>Verschlüsselter Postfach-Zugriff"]
        MaildirStore[("💾 Maildir Speicher<br/>/var/vmail/")]
        DovecotImap <==>|"Lese- & Schreibzugriff"| MaildirStore
    end

    subgraph OutboundFlow ["📤 E-Mail-Versand (SMTP Submission)"]
        PostfixOut["📮 Postfix Submission (:587)<br/>SASL-Authentifizierung & TLS 1.3"]
        DKIM["✍️ OpenDKIM Milter<br/>Kryptografische Signatur"]
        Recipient["🌍 Empfänger-MTA im Internet (:25)"]

        PostfixOut -->|"DKIM-Header"| DKIM
        DKIM ==>|"SMTP :25"| Recipient
    end

    Client <==>|"Mails abrufen (:993)"| DovecotImap
    Client ==>|"Mail senden (:587)"| PostfixOut

Die vier Kernkomponenten

  • MTA — Mail Transfer Agent (Postfix)


    Der SMTP-Router. Nimmt eingehende Nachrichten auf Port 25 an, authentifiziert ausgehende Benutzerverbindungen auf Port 587/465, erzwingt TLS und leitet Mails über DNS-MX-Abfragen weiter.

  • MDA & IMAP — (Dovecot)


    Speichert Mails im atomaren Maildir-Format ab, führt serverseitige Sieve-Sortierregeln aus, liefert Postfächer via IMAPS (993) aus und stellt das SASL-Authentifizierungs-Backend bereit.

  • Kryptografische Absendersicherheit (SPF / DKIM / DMARC)


    Beweist Empfängerservern kryptografisch, dass dein Server autorisiert ist, Mails für deine Domain zu senden (SPF), und dass Nachrichten unterwegs nicht manipuliert wurden (DKIM + DMARC).

  • Spam- & Malware-Abwehr (Amavis / Rspamd + ClamAV)


    Prüft jede eingehende E-Mail gegen Echtzeit-DNS-Sperrlisten (DNSBLs), bayessche Heuristiken und die Virensignaturdatenbank von ClamAV.

Übersicht der Netzwerkports

Protokoll / Rolle Port Transport & Verschlüsselung Zweck
SMTP (Server-zu-Server) 25/tcp Opportunistisches STARTTLS Pflicht für Empfang und Versand zwischen Mailservern weltweit.
SMTPS (Submission Wrapper) 465/tcp Implizites TLS 1.3 (RFC 8314) Moderner Standard für Mail-Clients zum Einliefern ausgehender E-Mails.
SMTP Submission 587/tcp Verbindliches STARTTLS Klassischer authentifizierter Port für Mail-Clients zum Mailversand.
IMAPS (Postfach-Zugriff) 993/tcp Implizites TLS 1.3 (RFC 8314) Verschlüsselter Postfachabruf für Thunderbird, iOS, Android und Webmail.

Pre-Flight-Checkliste: Diese 4 Punkte zwingend vorab prüfen!

  1. Entsperrter Port 25: Viele VPS-Provider blockieren ausgehenden TCP-Port 25 standardmäßig gegen Spam. Prüfe die Erreichbarkeit vorab:
    nc -zv -w 5 gmail-smtp-in.l.google.com 25
    
  2. Feste öffentliche IPv4 (und IPv6): Dynamische Heim-IPs stehen auf Sperrlisten (Spamhaus PBL) und werden von 99 % aller Mailserver abgewiesen.
  3. Forward-Confirmed Reverse DNS (FCrDNS / PTR): Der PTR-Eintrag deiner Server-IP beim Hoster muss exakt auf mail.meinedomain.de zeigen, und dieser Hostname muss im DNS wieder exakt auf dieselbe IP auflösen!
  4. Saubere IP-Reputation: Prüfe die Server-IP vorab auf MXToolbox Blacklist Check.

2. DNS-Fundament: A, AAAA, MX & PTR

Bevor ein einziges Paket installiert wird, müssen DNS-Zone und Reverse DNS (PTR) beim Hoster konfiguriert werden. Ersetze meinedomain.de und 198.51.100.10 durch deine echten Daten:

Typ Host / Name Wert / Ziel Priorität TTL
A mail 198.51.100.10 — 3600
AAAA mail 2001:db8::10 (falls IPv6 aktiv) — 3600
MX @ (Root) mail.meinedomain.de. 10 3600
PTR (beim VPS-Hoster) 198.51.100.10 mail.meinedomain.de. — —
Terminal: Forward- und Reverse-DNS prüfen
sudo apt update && sudo apt install -y dnsutils

# A-Record und MX-Record prüfen
dig A mail.meinedomain.de +short
dig MX meinedomain.de +short

# PTR-Eintrag prüfen (muss auf mail.meinedomain.de zeigen!)
dig -x 198.51.100.10 +short

3. Kern-Stack: Postfix & Dovecot installieren und konfigurieren

Schritt 1: System-Hostname setzen & Pakete installieren

Der System-Hostname (FQDN) muss exakt deinem PTR- und A-Record entsprechen:

Terminal: Hostname setzen & Postfix + Dovecot installieren
# 1. FQDN konfigurieren
sudo hostnamectl set-hostname mail.meinedomain.de

# 2. Postfix, Dovecot (IMAP + LMTP + Sieve) und Tools installieren
sudo apt update
sudo DEBIAN_PRIORITY=low apt install -y \
  postfix dovecot-core dovecot-imapd dovecot-lmtpd dovecot-sieve mailutils swaks

(Im Postfix-Assistenten wählst du Internet-Site und setzt den System-Mailnamen auf meinedomain.de).

Schritt 2: Postfix (main.cf) & Dovecot-Mailboxen konfigurieren

Statt des veralteten mbox-Formats nutzen wir das robuste Maildir/-Format (eine separate Datei pro E-Mail) und richten Dovecots automatische Ordnererstellung ein (Trash, Sent, Drafts, Junk).

Terminal: Postfix-Basisparameter konfigurieren
sudo postconf -e "myhostname = mail.meinedomain.de"
sudo postconf -e "mydomain = meinedomain.de"
sudo postconf -e "myorigin = \$mydomain"
sudo postconf -e "mydestination = \$myhostname, \$mydomain, localhost.\$mydomain, localhost"
sudo postconf -e "inet_interfaces = all"
sudo postconf -e "home_mailbox = Maildir/"
sudo postconf -e "recipient_delimiter = +"

Sub-Addressing (recipient_delimiter = +)

Mit recipient_delimiter = + stehen dir sofort wegwerfbare Adressen zur Verfügung: Mails an nejat+newsletter@meinedomain.de landen automatisch im Hauptpostfach von nejat@meinedomain.de.

Konfiguriere den Maildir-Pfad in /etc/dovecot/conf.d/10-mail.conf und die Ordnererstellung in /etc/dovecot/conf.d/15-mailboxes.conf:

/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/15-mailboxes.conf (Automatische Ordner)
namespace inbox {
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
}

4. Transportverschlüsselung (Let's Encrypt TLS 1.3) & Firewall

Passwörter und Mailinhalte dürfen niemals unverschlüsselt übertragen werden. Wir beziehen ein kostenloses Let's Encrypt-Zertifikat via certbot und erzwingen modernes TLS 1.2 / TLS 1.3:

Terminal: Firewall öffnen & Let's Encrypt-Zertifikat ausstellen
# 1. Mail-Ports (25, 465, 587, 993) & Port 80 (für Certbot) in UFW freigeben
sudo ufw allow 25,80,465,587,993/tcp

# 2. Certbot installieren und Zertifikat ausstellen
sudo apt install -y certbot
sudo certbot certonly --standalone -d mail.meinedomain.de \
  --non-interactive --agree-tos --email admin@meinedomain.de \
  --deploy-hook "systemctl reload postfix; systemctl reload dovecot"

Unterbrechungsfreie Zertifikatserneuerung

Der --deploy-hook sorgt dafür, dass Postfix und Dovecot bei jeder nächtlichen Erneuerung durch Certbot automatisch im laufenden Betrieb neu geladen werden.

Härte die TLS-Parameter in Postfix:

Terminal: Sichere TLS 1.2/1.3-Konfiguration in Postfix setzen
sudo postconf -e "smtpd_tls_cert_file = /etc/letsencrypt/live/mail.meinedomain.de/fullchain.pem"
sudo postconf -e "smtpd_tls_key_file = /etc/letsencrypt/live/mail.meinedomain.de/privkey.pem"
sudo postconf -e "smtpd_tls_security_level = may"
sudo postconf -e "smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1"
sudo postconf -e "smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1"
sudo postconf -e "smtpd_tls_mandatory_ciphers = high"
sudo postconf -e "smtp_tls_security_level = may"
sudo postconf -e "smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1"
sudo postconf -e "smtp_tls_CApath = /etc/ssl/certs"

Und in /etc/dovecot/conf.d/10-ssl.conf:

/etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.meinedomain.de/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.meinedomain.de/privkey.pem
ssl_min_protocol = TLSv1.2
ssl_prefer_server_ciphers = yes

5. SASL-Authentifizierung & Open-Relay-Schutz

Ein Mailserver ohne Authentifizierung, der Mails an fremde Server weiterleitet, ist ein Open Relay – Botnetze missbrauchen ihn binnen Minuten.

Postfix delegiert die Prüfung der Login-Daten an den SASL-Socket von Dovecot:

%%{init: {'flowchart': {'wrappingWidth': 600}}}%%
flowchart TB
    Client["💻 Mail-Client (MUA)"] ==>|"1. Port 587/465 (TLS)<br/>AUTH PLAIN / LOGIN"| Postfix["📮 Postfix smtpd"]
    Postfix <==>|"2. UNIX-Socket abfragen<br/>(private/auth)"| DovecotAuth["🔐 Dovecot Auth Service"]
    DovecotAuth <==>|"3. Zugangsdaten prüfen"| Backend[("🗄️ PAM / Virtuelle SQL-DB")]
    Postfix ==>|"4. 235 Auth erfolgreich<br/>Relay erlaubt"| Outbound(("🌍 Ausgehende Zustellung"))

Schritt 1: Dovecot-SASL-Socket für Postfix freigeben

Aktiviere plain und login über TLS in /etc/dovecot/conf.d/10-auth.conf:

/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login

Und richte den Socket in /etc/dovecot/conf.d/10-master.conf ein:

/etc/dovecot/conf.d/10-master.conf
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

Schritt 2: Postfix mit Dovecot-SASL verbinden & Ports 587 / 465 aktivieren

Terminal: Postfix SASL & Relay-Restriktionen aktivieren
sudo postconf -e "smtpd_sasl_type = dovecot"
sudo postconf -e "smtpd_sasl_path = private/auth"
sudo postconf -e "smtpd_sasl_auth_enable = yes"
sudo postconf -e "smtpd_sasl_security_options = noanonymous"
sudo postconf -e "smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination"

Aktiviere submission (587) und smtps (465) in /etc/postfix/master.cf:

/etc/postfix/master.cf (Submission-Ports aktivieren)
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
Terminal: Dienste neu starten & Socket prüfen
sudo systemctl restart dovecot postfix
sudo ls -la /var/spool/postfix/private/auth

Hands-On Lab 1: Authentifizierten Versand mit swaks testen

Teste STARTTLS und SASL-Authentifizierung auf Port 587:

Terminal: Verschlüsselten Mailversand testen
swaks --server mail.meinedomain.de --port 587 \
      --tls \
      --auth LOGIN \
      --auth-user testuser \
      --auth-password 'SicheresPasswort' \
      --from testuser@meinedomain.de \
      --to zieladresse@extern.de \
      --header "Subject: Test vom souveränen Mailserver" \
      --body "Authentifiziert über TLS 1.3 via Dovecot SASL!"

6. Zustellsicherheit: SPF, DKIM & DMARC

Ohne kryptografische Absenderauthentifizierung verwerfen Gmail, Outlook und Apple ausgehende Mails oder stufen sie als Spam ein (550-5.7.26).

%%{init: {'flowchart': {'wrappingWidth': 600}}}%%
flowchart TB
    Email["📧 Ausgehende E-Mail<br/>von user@meinedomain.de"]
    RecvServer["🛡️ Empfänger-Mailserver (z. B. Gmail / Outlook)<br/>Startet Authentifizierungs-Prüfungen"]

    SPF["1️⃣ SPF-Prüfung (DNS TXT)<br/>Darf verbindende IP für Domain senden?"]
    DKIM["2️⃣ DKIM-Prüfung (RSA/Ed25519)<br/>Gültige kryptografische Signatur?"]
    DMARC["3️⃣ DMARC-Richtlinie (_dmarc TXT)<br/>Alignment-Prüfung & Policy-Durchsetzung"]

    Inbox["🟢 Posteingang<br/>Erfolgreich zugestellt"]
    Reject["🔴 Spam-Ordner oder Abweisung<br/>SMTP 550 reject"]

    Email ==>|"SMTP :25 Zustellung"| RecvServer
    RecvServer --> SPF
    RecvServer --> DKIM
    SPF & DKIM ==> DMARC
    DMARC ==>|"PASS (Kriterien erfüllt)"| Inbox
    DMARC ==>|"FAIL (Verstoß gegen Policy)"| Reject

Schritt 1: SPF-Record im DNS setzen

Erstelle einen TXT-Eintrag für @ (meinedomain.de), der nur deinen Mailserver autorisiert und fremde IPs ablehnt (-all):

DNS TXT-Record: SPF-Richtlinie
Name:  @ (oder meinedomain.de)
Type:  TXT
Wert:  "v=spf1 mx a:mail.meinedomain.de -all"

Schritt 2: OpenDKIM installieren & 2048-Bit-Schlüssel generieren

Terminal: OpenDKIM installieren & Schlüsselpaar erzeugen
# 1. OpenDKIM installieren
sudo apt install -y opendkim opendkim-tools

# 2. Verzeichnis im Postfix-Chroot anlegen
sudo usermod -aG opendkim postfix
sudo mkdir -p /var/spool/postfix/opendkim
sudo chown opendkim:postfix /var/spool/postfix/opendkim
sudo chmod 750 /var/spool/postfix/opendkim

# 3. 2048-Bit RSA-Schlüsselpaar mit Selektor 'default' erstellen
sudo mkdir -p /etc/opendkim/keys/meinedomain.de
sudo opendkim-genkey -b 2048 -d meinedomain.de -s default -D /etc/opendkim/keys/meinedomain.de/
sudo chown -R opendkim:opendkim /etc/opendkim
sudo chmod 600 /etc/opendkim/keys/meinedomain.de/default.private

Konfiguriere /etc/opendkim.conf:

/etc/opendkim.conf
Syslog                  yes
UMask                   007
Mode                    sv
Canonicalization        relaxed/simple
Socket                  local:/var/spool/postfix/opendkim/opendkim.sock
UserID                  opendkim
PidFile                 /run/opendkim/opendkim.pid
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
InternalHosts           refile:/etc/opendkim/TrustedHosts
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts

Erstelle die Zuordnungstabellen:

Terminal: Mapping-Dateien anlegen
cat << 'EOF' | sudo tee /etc/opendkim/KeyTable
default._domainkey.meinedomain.de meinedomain.de:default:/etc/opendkim/keys/meinedomain.de/default.private
EOF

cat << 'EOF' | sudo tee /etc/opendkim/SigningTable
*@meinedomain.de default._domainkey.meinedomain.de
EOF

cat << 'EOF' | sudo tee /etc/opendkim/TrustedHosts
127.0.0.1
localhost
::1
*.meinedomain.de
EOF

sudo chown opendkim:opendkim /etc/opendkim/KeyTable /etc/opendkim/SigningTable /etc/opendkim/TrustedHosts

Binde den OpenDKIM-Milter in Postfix ein:

Terminal: OpenDKIM an Postfix anbinden
sudo postconf -e "milter_default_action = accept"
sudo postconf -e "milter_protocol = 6"
sudo postconf -e "smtpd_milters = local:opendkim/opendkim.sock"
sudo postconf -e "non_smtpd_milters = \$smtpd_milters"

sudo systemctl restart opendkim postfix

Öffentlichen Schlüssel anzeigen und als TXT-Record unter default._domainkey.meinedomain.de im DNS eintragen:

Terminal: Öffentlichen DKIM-Schlüssel ausgeben
sudo cat /etc/opendkim/keys/meinedomain.de/default.txt

Schritt 3: DMARC-Record im DNS veröffentlichen

Erstelle einen TXT-Eintrag für _dmarc.meinedomain.de:

DNS TXT-Record: DMARC-Richtlinie
Name:  _dmarc
Type:  TXT
Wert:  "v=DMARC1; p=quarantine; rua=mailto:postmaster@meinedomain.de; adkim=r; aspf=r; pct=100"

7. Anti-Spam & Virenabwehr

%%{init: {'flowchart': {'wrappingWidth': 600}}}%%
flowchart TB
    In(("🌐 Port :25")) --> RBL["1️⃣ Postfix DNSBLs<br/>(Bekannte Botnetz-IPs verwerfen)"]
    RBL --> DKIM_V["2️⃣ OpenDKIM<br/>(Absendersignatur verifizieren)"]
    DKIM_V --> AV["3️⃣ ClamAV Daemon<br/>(Trojaner & Malware blockieren)"]
    AV --> Spam["4️⃣ SpamAssassin / Rspamd<br/>(Heuristisches Spam-Scoring)"]
    Spam --> Sieve["5️⃣ Dovecot Sieve<br/>(Spam in Junk-Ordner verschieben)"]

Auf modernen Servern ersetzt Rspamd (in C geschrieben) sowohl Amavis als auch SpamAssassin und OpenDKIM in einem einzigen performanten Dienst mit Web-Dashboard (127.0.0.1:11334):

Terminal: Rspamd & Redis-Backend installieren
sudo apt install -y rspamd redis-server
sudo postconf -e "smtpd_milters = inet:127.0.0.1:11332"
sudo postconf -e "non_smtpd_milters = inet:127.0.0.1:11332"
sudo postconf -e "milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}"
sudo systemctl restart rspamd postfix
Terminal: Amavis, SpamAssassin & ClamAV installieren
sudo apt install -y amavisd-new spamassassin clamav-daemon clamav-freshclam \
  pyzor razor libnet-dns-perl libmail-dkim-perl

sudo adduser clamav amavis
sudo adduser amavis clamav
sudo sa-update
sudo systemctl enable --now clamav-daemon clamav-freshclam spamassassin amavis

8. Webmail-Zugang mit Roundcube

Um E-Mails im Browser abzurufen, eignet sich Roundcube Webmail angebunden an Dovecot (IMAPS :993) und Postfix (Submission :587):

~/roundcube-stack/docker-compose.yml
services:
  roundcube:
    image: docker.io/roundcube/roundcubemail:latest
    container_name: roundcube-webmail
    restart: unless-stopped
    ports:
      - "127.0.0.1:8090:80"
    environment:
      - ROUNDCUBEMAIL_DEFAULT_HOST=ssl://mail.meinedomain.de
      - ROUNDCUBEMAIL_DEFAULT_PORT=993
      - ROUNDCUBEMAIL_SMTP_SERVER=tls://mail.meinedomain.de
      - ROUNDCUBEMAIL_SMTP_PORT=587
      - ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE=25M
    volumes:
      - roundcube_db:/var/roundcube/db
      - roundcube_config:/var/roundcube/config

volumes:
  roundcube_db:
  roundcube_config:

9. Wartung: Queue-Management & Fehlerbehebung

Spickzettel für Postfix-Warteschlangen

Befehl Aktion
mailq oder postqueue -p Alle Mails in den Warteschlangen auflisten.
sudo postcat -q <QUEUE_ID> Header und Inhalt einer Mail in der Warteschlange ansehen.
sudo postqueue -f Sofortige Neuzustellung aller verzögerten Mails anstoßen.
sudo postsuper -h <QUEUE_ID> Verdächtige E-Mail anhalten (hold).
sudo postsuper -d <QUEUE_ID> Bestimmte Mail aus der Queue löschen.
sudo postsuper -d ALL deferred Alle verzögerten Mails aus der Queue entfernen.

Häufige Fehlerbilder & Lösungen

1. Gmail lehnt Mails ab mit 550-5.7.1 oder 550-5.7.26

Ursache: Fehlender Reverse-DNS (PTR) oder fehlerhafte SPF/DKIM/DMARC-Signatur.

Lösung: Prüfe deinen Score auf mail-tester.com und verifiziere, dass dig -x <SERVER_IP> +short exakt mail.meinedomain.de. liefert.

2. Mail-Client meldet cannot connect to Dovecot auth

Ursache: Postfix läuft unter Debian/Ubuntu im Chroot unter /var/spool/postfix. Befindet sich der Socket außerhalb, kann Postfix ihn nicht erreichen.

Lösung: Sicherstellen, dass /etc/dovecot/conf.d/10-master.conf den Socket unter /var/spool/postfix/private/auth mit Rechten 0660 für User/Gruppe postfix anlegt.

3. Ausgehende Mails verharren in deferred (Timeout auf Port 25)

Ursache: Der VPS-Hoster blockiert ausgehenden Port 25 per Firewall.

Lösung: Ticket beim Hoster (z. B. Hetzner, Netcup) zur Freischaltung von Port 25 einreichen oder vorübergehend ein Relay (relayhost) konfigurieren.