(DE) DKIM mit Strato SMTP und Cloudflare DNS

Wer seiner Strato-Domain einen externen Nameserver wie etwa Cloudflare zuweist, stößt beim Emailversand an sensiblere Mail Services wie etwa Gmail schnell auf das Problem, dass die versendeten Emails im Spam-Ordner landen, oder komplett abgelehnt werden.

(DE) DKIM mit Strato SMTP und Cloudflare DNS
Photo by sue hughes / Unsplash

Heute mal auf Deutsch, da Strato ein vornehmlich deutsches Problem ist.

Intro

Wer seiner Strato-Domain einen externen Nameserver wie etwa Cloudflare zuweist, stößt beim Emailversand an sensiblere Mail Services wie etwa Gmail schnell auf das Problem, dass die versendeten Emails im Spam-Ordner landen, oder komplett abgelehnt werden.

Auf einer FAQ-Seite gibt Strato folgendes an:

Für Kunden, die ausschließlich unsere Mail-Server nutzen (per „smtp.strato.de“ versenden), signieren wir bereits seit Jahren alle ausgehenden E-Mails mit DKIM.

Das ist schön und gut, setzt aber leider voraus, dass man den Nameserver von Strato verwendet, da über diesen der für DKIM notwendige TXT-Eintrag im DNS gesetzt wird. Darauf weist auch der Support hin, also müssen wir uns selbst helfen.

Was tun?

Wir haben drei Möglichkeiten, dieses Problem anzugehen:

  1. Zu einem anderen Anbieter umziehen (besonders auf lange Sicht empfohlen)
  2. Einen eigenen Mail Service hosten und den DKIM-Eintrag selbst bereitstellen
  3. Einen CNAME Record mit Weiterleitung auf den TXT-Eintrag bei Strato legen

Im Folgenden soll Lösung 3 näher beschrieben werden.

CNAME Record anlegen

Durch das Anlegen eines CNAME Records, der auf den DKIM TXT Record von Strato verweist, können wir den Eintrag für unsere Domain übernehmen. Diese Möglichkeit besteht, da Strato einen zentralen Mail Service verwendet, der auch das interne System umfasst.

Bei Cloudflare können wir nun also einen DNS-Eintrag mit folgender Konfiguration hinterlegen:

  • Typ: CNAME
  • Name: strato-dkim-0002._domainkey
  • Target: strato-dkim-0002._domainkey.strato.de
CNAME-Eintrag bei Cloudflare DNS

Da kein Proxying des Eintrags notwendig ist, wurde der Proxy Status auf DNS only belassen.

Der DKIM-Eintrag hat in meinem Fall sofort gegriffen und bei mail-tester.com konnte ein Score von 10/10 erreicht werden (SPF und DMARC waren schon vorbereitet).

Credit: user43216 @Cloudflare Community

Bewertung

Der Eintrag bleibt gültig, wenn seitens Strato der Public Key des DKIM-Eintrags rotiert wird, da dieser durch die Weiterleitung per CNAME übernommen wird.

Sollte seitens Strato der Selektor des DKIM-Eintrags (strato-dkim-0002) verändert werden, muss der CNAME Record manuell angepasst werden. Diesem Risiko lässt sich durch die Überwachung des DKIM-Eintrags bei Strato entgegenwirken.

Überwachen des DKIM-Eintrags

Wir können den Eintrag mittels Skript, das wir etwa als Cronjob regelmäßig starten können, überwachen.

Auf einem Linux-System laden wir dazu dnsutils herunter, damit wir den DKIM-Eintrag nachschlagen können:

apt-get update
apt-get install dnsutils

Nun können wir den DKIM-Eintrag abfragen:

dig strato-dkim-0002._domainkey.strato.de TXT +short @shades09.rzone.de

Wenn die Ausgabe dieses Befehls nichts zurückgibt, wurde möglicherweise der Selektor erneuert.

Der neue Selektor kann durch das Senden einer Mail über ein Postfach, das an einer Domain unter dem Strato-Nameserver liegt, ermittelt werden. Über ein Tool wie MX Toolbox kann der neue Selektor anhand der Email-Header bestimmt werden.

Details zum Befehl

  • dig: Befehl zum Abfragen von DNS-Server-Informationen
  • strato-dkim-0002: Selektor des DKIM-Eintrags, ausgegeben von Strato
  • _domainkey: wir möchten den DomainKey-Eintrag (das DK in DKIM)
  • strato.de: die Domain des Strato-Servers
  • TXT: der DKIM-Eintrag ist aus DNS-Sicht ein TXT-Eintrag
  • +short: verkürzt die Ausgabe auf das Wesentliche
  • @shades09.rzone.de: Der Strato-Nameserver wird zum Abfragen des Eintrags verwendet, um sicher zu gehen, dass wir keine falschen oder veralteten Informationen erhalten

Soweit der Selektor bei Strato gültig ist, kann die Ausgabe wie folgt aussehen:

"v=DKIM1; k=rsa; p=MIIBI..."
  • v ist die DKIM-Version
  • k ist der Algorithmus, mit dem der öffentliche Schlüssel erstellt wurde
  • p ist der öffentliche Schlüssel