MTA-STS mit Cloudflare DNS einrichten

Schritt-für-Schritt-Anleitung: DNS-Records im Cloudflare Dashboard anlegen, Policy-Datei über Cloudflare Pages (empfohlen) oder Cloudflare Worker hosten — mit automatischem SSL-Zertifikat, globalem CDN und vollständiger Verifizierung.

Cloudflare DNS · MTA-STS-Anleitung

MTA-STS mit Cloudflare DNS und Pages einrichten

Cloudflare DNS mit Cloudflare Pages ist die eleganteste MTA-STS-Lösung: DNS-Records über das Cloudflare Dashboard, Policy-Hosting kostenlos über Pages mit automatischem SSL-Zertifikat und globalem CDN. Alternativ generiert ein Cloudflare Worker die Policy dynamisch. Entscheidend: MX-Records dürfen nicht über den Cloudflare-Proxy laufen.

MTA-STS (RFC 8461) erzwingt TLS-verschlüsselte E-Mail-Zustellung und verhindert STRIPTLS-Downgrade-Angriffe. Cloudflare ist ein reiner DNS-Anbieter — der eigentliche Mailserver wird von einem separaten Anbieter betrieben (z.B. Google Workspace, Microsoft 365, Postfix). Deshalb müssen die mx-Einträge in der Policy-Datei die MX-Hosts Ihres tatsächlichen Mail-Providers enthalten. Der Wolf-Agents Email Security Scanner vergleicht Policy-MX und DNS-MX zeichengenau: Er erkennt, wenn der Cloudflare-Proxy versehentlich für die mta-sts-Subdomain oder den MX-Record aktiviert ist (Orange Cloud), warnt vor nicht verknüpften Custom Domains in Pages (522/530-Fehler), prüft den Worker-Route-Pattern /.well-known/mta-sts.txt und deckt Mismatches zwischen den MX-Hosts des nachgelagerten Mailproviders und der Policy-Datei auf.

NIS2 Art. 21 Abs. 2 lit. h fordert Verschlüsselung nach dem Stand der Technik. Cloudflare Pages stellt eine kostenlose Infrastruktur bereit, um die MTA-STS-Policy-Datei mit gültigem TLS-Zertifikat zu hosten — ohne eigenen Server, ohne Wartungsaufwand. DSGVO Art. 32 fordert Verschlüsselung personenbezogener Daten bei der Übertragung — Cloudflare Pages liefert pro Auslieferung der Policy-Datei Zugriffslogs (Analytics-Engine, Logpush in S3/R2), die als TOM-Nachweis bei DSGVO-Audits dienen. Die BSI TR-03108 empfiehlt MTA-STS als Schutz vor STRIPTLS-Downgrade. Wolf-Agents empfiehlt MTA-STS mit mode: enforce als Mindeststandard für alle produktiven Domains.

1 Schritt 1 von 4

DNS-Records im Cloudflare Dashboard anlegen

Legen Sie drei Records im Cloudflare Dashboard an: den _mta-sts TXT-Record, der MTA-STS aktiviert, den _smtp._tls TXT-Record für TLS-Reporting und einen CNAME-Record für die mta-sts Subdomain. Die id im MTA-STS-Record muss bei jeder Policy-Änderung aktualisiert werden — nutzen Sie das aktuelle Datum im Format YYYYMMDD. Cloudflare DNS propagiert Änderungen in unter 5 Minuten weltweit.

Proxy-Status — entscheidend für E-Mail

  1. mta-sts CNAME: Proxy AN (Orange Cloud) — Cloudflare liefert automatisch ein SSL-Zertifikat für die Subdomain aus. HTTPS ist damit ohne eigenes Zertifikat gewährleistet
  2. MX-Records: Proxy AUS (Graue Wolke, DNS only) — der Cloudflare-Proxy unterstützt kein SMTP. Wenn MX-Records über den Proxy laufen, können keine E-Mails zugestellt werden
  3. _mta-sts und _smtp._tls TXT-Records: Proxy-Status ist irrelevant (TXT-Records werden nie geproxied)
Terminal / Cloudflare Dashboard DNS-Records
# MX-Records prüfen (abhängig von Ihrem Mailanbieter)
dig ihre-domain.de MX +short

# MTA-STS DNS-Record (Cloudflare Dashboard)
# Name: _mta-sts
# Typ: TXT
# Inhalt: v=STSv1; id=20260408

# TLS-RPT DNS-Record
# Name: _smtp._tls
# Typ: TXT
# Inhalt: v=TLSRPTv1; rua=mailto:tls-reports@ihre-domain.de

# CNAME für Policy-Subdomain (zeigt auf Pages)
# Name: mta-sts
# Typ: CNAME
# Ziel: ihr-projekt.pages.dev
# Proxy: AN (Orange Cloud)

# WICHTIG: MX-Records OHNE Proxy!
# Proxy-Status für MX-Records: DNS only (Graue Wolke)
2 Schritt 2 von 4

Policy-Datei erstellen

Die Policy-Datei definiert, welche MX-Hosts TLS-verschlüsselt erreichbar sein müssen. Da Cloudflare ein reiner DNS-Anbieter ist, hängen die mx-Einträge von Ihrem tatsächlichen Mailanbieter ab. Prüfen Sie Ihre MX-Records mit dig ihre-domain.de MX +short und tragen Sie die Hosts in die Policy ein. Beginnen Sie mit mode: testing und max_age: 86400 (24 Stunden) — nach erfolgreicher Verifikation wechseln Sie auf mode: enforce und max_age: 604800 (7 Tage).

.well-known/mta-sts.txt Policy
version: STSv1
mode: testing
mx: mx1.ihre-domain.de
mx: mx2.ihre-domain.de
max_age: 86400
3 Schritt 3 von 4

Cloudflare Pages deployen oder Worker einrichten

Sie haben zwei Optionen für das Policy-Hosting. Cloudflare Pages (Option A) ist die empfohlene Variante: kostenlos, automatisches SSL-Zertifikat, globales CDN und kein Code nötig. Ein Cloudflare Worker (Option B) eignet sich, wenn Sie die Policy dynamisch generieren möchten — etwa für mehrere Domains über ein einziges Script.

Option A: Cloudflare Pages (empfohlen)

  1. Projektstruktur anlegen: Erstellen Sie einen Ordner mit der Datei .well-known/mta-sts.txt und optional einer _headers-Datei für Cache-Header
  2. Pages-Projekt erstellen: Im Cloudflare Dashboard unter Workers & Pages ein neues Projekt erstellen und den Ordner per Direct Upload hochladen — kein Git-Repository nötig
  3. Custom Domain verknüpfen: Unter dem Pages-Projekt die Custom Domain mta-sts.ihre-domain.de hinzufügen. Cloudflare erstellt automatisch den CNAME-Record und stellt ein SSL-Zertifikat aus
  4. Deployment testen: Nach 1-2 Minuten ist die Policy unter https://mta-sts.ihre-domain.de/.well-known/mta-sts.txt erreichbar
Projektstruktur für Cloudflare Pages Dateien
mta-sts-policy/
  .well-known/
    mta-sts.txt        # Policy-Datei
  _headers              # Optional: Cache-Header
  _redirects             # Optional: Weiterleitungen
_headers (optional) Cache
/.well-known/mta-sts.txt
  Content-Type: text/plain
  Cache-Control: public, max-age=3600

Option B: Cloudflare Worker (dynamisch)

  1. Worker erstellen: Im Cloudflare Dashboard unter Workers & Pages einen neuen Worker erstellen und den Code einfügen
  2. Custom Domain zuweisen: Unter dem Worker die Custom Domain mta-sts.ihre-domain.de als Route konfigurieren
  3. Vorteil: Die Policy wird bei jedem Abruf dynamisch generiert — ideal, wenn Sie MX-Hosts zentral für mehrere Domains verwalten möchten
worker.js — Cloudflare Worker JavaScript
// Cloudflare Worker für MTA-STS Policy
export default {
  async fetch(request) {
    const url = new URL(request.url);

    if (url.pathname === '/.well-known/mta-sts.txt') {
      const policy = [
        'version: STSv1',
        'mode: testing',
        'mx: mx1.ihre-domain.de',
        'mx: mx2.ihre-domain.de',
        'max_age: 86400'
      ].join('\n');

      return new Response(policy, {
        headers: {
          'Content-Type': 'text/plain',
          'Cache-Control': 'public, max-age=3600'
        }
      });
    }

    return new Response('Not Found', { status: 404 });
  }
};
4 Schritt 4 von 4

MTA-STS-Konfiguration verifizieren

Prüfen Sie alle drei Komponenten: DNS-Record, Policy-Datei und TLS-RPT-Record. Der Wolf-Agents Email Security Scanner validiert zusätzlich den MX-Abgleich — die mx-Einträge in der Policy müssen exakt mit Ihren DNS-MX-Records übereinstimmen. Beginnen Sie mit mode: testing und wechseln Sie nach erfolgreicher Verifikation und positiven TLS-RPT-Reports auf mode: enforce.

Terminal / PowerShell Verifikation
# Linux / macOS
dig _mta-sts.ihre-domain.de TXT +short
curl -s https://mta-sts.ihre-domain.de/.well-known/mta-sts.txt
dig _smtp._tls.ihre-domain.de TXT +short

# Windows (PowerShell)
Resolve-DnsName -Name _mta-sts.ihre-domain.de -Type TXT | Select-Object -ExpandProperty Strings
Invoke-WebRequest -Uri "https://mta-sts.ihre-domain.de/.well-known/mta-sts.txt" | Select-Object -ExpandProperty Content
Resolve-DnsName -Name _smtp._tls.ihre-domain.de -Type TXT | Select-Object -ExpandProperty Strings

# Erwartete Ausgaben:
# "v=STSv1; id=20260408"
# version: STSv1 / mode: testing / mx: ... / max_age: 86400
# "v=TLSRPTv1; rua=mailto:tls-reports@ihre-domain.de"

Häufige Probleme bei Cloudflare MTA-STS

Die folgenden drei Probleme treten bei Cloudflare MTA-STS-Konfigurationen besonders häufig auf. Jedes einzelne kann dazu führen, dass E-Mails nicht zugestellt werden oder sendende Server die Policy ignorieren.

Proxy für MX-Records aktiviert — E-Mail-Zustellung bricht ab

Symptom: E-Mails werden nicht zugestellt. Sendende Server erhalten Timeout-Fehler beim Verbindungsaufbau zum MX-Host. dig ihre-domain.de MX +short liefert Cloudflare-IPs statt der tatsächlichen Mailserver-IPs.

Ursache: Der MX-Record oder der A-Record des MX-Hosts hat den Proxy-Status auf Orange Cloud (AN). Der Cloudflare-Proxy unterstützt ausschließlich HTTP/HTTPS — SMTP-Traffic (Port 25) wird vollständig blockiert.

Lösung: Im Cloudflare Dashboard den Proxy-Status für alle MX-relevanten Records auf DNS only (Graue Wolke) setzen. Prüfen Sie sowohl den MX-Record selbst als auch den A-Record, auf den der MX-Host verweist. Der Wolf-Agents Email Security Scanner erkennt geproxiede MX-Records automatisch.

Custom Domain für Pages nicht verknüpft

Symptom: curl https://mta-sts.ihre-domain.de/.well-known/mta-sts.txt liefert einen Cloudflare-Fehler (522 oder 530) oder eine Standardseite. Die Policy ist unter der .pages.dev-URL erreichbar, aber nicht unter der Custom Domain.

Ursache: Das Cloudflare Pages-Projekt wurde deployed, aber die Custom Domain mta-sts.ihre-domain.de wurde nicht im Pages-Projekt unter Custom Domains hinzugefügt. Ohne diese Verknüpfung kann Cloudflare eingehende Requests nicht dem Pages-Projekt zuordnen.

Lösung: Im Cloudflare Dashboard unter Workers & Pages das Projekt öffnen, Custom Domains aufrufen und mta-sts.ihre-domain.de hinzufügen. Cloudflare erstellt automatisch den CNAME-Record und das SSL-Zertifikat. Warten Sie 1-2 Minuten und prüfen Sie erneut mit curl.

Worker-Route falsch konfiguriert

Symptom: curl https://mta-sts.ihre-domain.de/.well-known/mta-sts.txt liefert Not Found oder die Standard-Cloudflare-Seite statt der Policy-Datei. Der Worker funktioniert lokal mit wrangler dev, aber nicht unter der Custom Domain.

Ursache: Die Worker-Route ist falsch konfiguriert — entweder fehlt der Wildcard-Pfad (mta-sts.ihre-domain.de/*), oder die Route ist einer anderen Zone zugeordnet. Alternativ wurde die Custom Domain nicht als Worker Custom Domain, sondern nur als Route konfiguriert.

Lösung: Verwenden Sie Custom Domains statt Routes für den Worker: Im Worker-Dashboard unter Settings die Custom Domain mta-sts.ihre-domain.de hinzufügen. Falls Sie Routes nutzen, stellen Sie sicher, dass das Pattern mta-sts.ihre-domain.de/* lautet und die korrekte Zone ausgewählt ist.

NIS2, BSI TR-03108 und DSGVO Art. 32: Cloudflare Pages als kostenlose MTA-STS-Infrastruktur

NIS2 Art. 21 Abs. 2 lit. h verlangt Maßnahmen zur Sicherung der Kommunikation nach dem Stand der Technik. Cloudflare Pages bietet eine kostenlose, wartungsfreie Infrastruktur für MTA-STS-Policy-Hosting: automatisches SSL-Zertifikat, globales CDN mit 99,99% Uptime und keine Serverkosten. Damit entfällt das häufigste Hindernis für MTA-STS — die Bereitstellung eines HTTPS-fähigen Webservers für die Policy-Datei. DSGVO Art. 32 fordert Verschlüsselung bei der Übertragung — Cloudflare Pages liefert Zugriffslogs zur Policy-Auslieferung (Logpush nach S3/R2 konfigurierbar), die als TOM-Nachweis dienen. Die BSI TR-03108 empfiehlt MTA-STS als Schutz gegen TLS-Downgrade-Angriffe. Der Wolf-Agents Email Security Scanner bewertet MTA-STS mit bis zu 15 Punkten (10 MTA-STS + 5 TLS-RPT) und zeigt Ihnen den aktuellen Stand Ihrer Konfiguration.

Hinweis für Mailserver-Betreiber: Wenn Sie hinter Cloudflare DNS einen eigenen ausgehenden Mailserver (Postfix, Exim) betreiben — etwa auf Hetzner Cloud oder einem Hyperscaler — prüfen Sie zusätzlich die Outbound-MTA-STS-Validierung mit postfix-mta-sts-resolver. Ihr Server muss MTA-STS-Policies anderer Domains beim Senden auswerten und TLS erzwingen, nicht nur beim Empfang. Details siehe MTA-STS für Postfix.

Cloudflare Pages vs. Workers — Entscheidungsbaum (Multimodal)

Cloudflare Inc. (San Francisco, Kalifornien, USA) bietet zwei Optionen für MTA-STS-Policy-Hosting: Cloudflare Pages (statisch, kostenlos, mit Auto-SSL) oder Cloudflare Workers (dynamisch generiert). Die Visualisierung zeigt den Entscheidungsbaum für die richtige Wahl.

Wie steht Ihre Domain bei MTA-STS?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 165 Prüfpunkte.