Dev Life

So authentifizieren Sie Ihre E-Mail für bessere Zustellraten

E-Mail-Authentifizierungsprotokolle wie SPF, DKIM und DMARC spielen eine entscheidende Rolle beim Schutz Ihrer E-Mails vor Spoofing und bei der Verbesserung der Zustellbarkeit. Hier erfahren Sie, wie Sie sie einrichten und funktionsfähig halten.
Bild für So authentifizieren Sie Ihre E-Mail für bessere Zustellraten

Wenn Sie Anwendungen entwickeln, die E-Mails versenden – wie Marketing-Plattformen oder CRM-Systeme –, müssen Ihre Nutzer darauf vertrauen können, dass die Nachrichten den Posteingang erreichen. Doch angesichts sich ständig weiterentwickelnder Anti-Spam-Maßnahmen können selbst legitime E-Mails auf Hindernisse stoßen.

E-Mail-Authentifizierungsprotokolle wie SPF, DKIM und DMARC verifizieren die Absenderidentität, verhindern Spoofing und unterstützen eine starke Absenderreputation. Dieser Beitrag erklärt, wie diese Protokolle funktionieren, wie Sie sie konfigurieren und wie Sie sicherstellen, dass sie richtig eingerichtet sind – damit Ihre E-Mails wie vorgesehen zugestellt werden.

Warum die E-Mail-Zustellbarkeit wichtig ist

Wenn Ihre Anwendung E-Mail-Funktionen bietet, müssen Sie sicherstellen, dass diese auch tatsächlich zugestellt werden. Eine falsch konfigurierte Authentifizierung sollte bei den Nutzern nicht den Eindruck erwecken, Nachrichten seien versendet worden, wenn dies nicht der Fall war.

Authentifizierung s-Konfigurationsprobleme können zu hohen Bounce-Raten, Spam-Beschwerden und zu IP-Adressen auf Blocklists führen. Zudem macht es Sie anfällig für E-Mail-Spoofing und Phishing-Angriffe, was sich auf Ihre Absenderreputation und die Sicherheitslage Ihres Unternehmens auswirken kann.

Zustellbarkeitsprobleme können zudem die Zeit Ihres Entwicklungsteams beanspruchen und die Produktivität beeinträchtigen. Denken Sie an Fälle, in denen zeitweilige Zustellungsprobleme über den Kundensupport an das Entwicklungsteam eskaliert werden. Das Entwicklungsteam muss dann seine eigentliche Arbeit unterbrechen und herausfinden, was mit den betroffenen E-Mails passiert ist – ob es Bounces gab oder andere Zustellungsprobleme auftraten. Die Diagnose solcher Probleme kann sehr zeitaufwendig sein und die Produktivität zerstören, falls sie regelmäßig auftreten.

Glücklicherweise sind das keine neuen Probleme und es gibt Lösungen, die Sie anwenden können, um Ihre E-Mail-Zustellbarkeit zu verbessern. E-Mail-Authentifizierungsprotokolle (darunter SPF, DKIM und DMARC) können eingesetzt werden, um diese Probleme abzumildern. Und wenn Sie sie gemeinsam verwenden, schaffen Sie die besten Voraussetzungen für Ihre E-Mail-Versandanwendung, um eine zuverlässige, vertrauenswürdige E-Mail-Zustellung zu gewährleisten.

Für ein ganzheitlicheres Verständnis der Herausforderungen bei der E-Mail-Zustellung sollten Sie den Bericht zur E-Mail-Zustellbarkeit lesen.

Ihre E-Mail für bessere Zustellraten authentifizieren

SPF ist ein Mechanismus, mit dem Sie DNS-Einträge definieren können, die nachverfolgen, welche Server E-Mails im Namen Ihrer Domain versenden dürfen. Ohne SPF-Einträge könnte jeder gefälschte E-Mails versenden, die vorgeben, von Ihrer Domain zu stammen, und es gäbe keine Möglichkeit, diese Behauptungen zu überprüfen. Ebenso können falsch konfigurierte SPF-Einträge problematisch sein: Sie senden möglicherweise eine legitime E-Mail von Ihrer eigenen Domain, aber falls die SPF-Einträge nicht so konfiguriert sind, dass sie den sendenden Server als gültige Quelle einschließen, wird die E-Mail wahrscheinlich als Spam markiert oder abgelehnt.

SPF einrichten

Um zu überprüfen, ob Ihre Domain bereits über SPF-Einträge verfügt, können Sie ein Tool wie MxToolbox. verwenden. Oder, falls Sie das Terminal bevorzugen, können Sie den dig-Befehl folgendermaßen verwenden:

$ dig +short TXT yourdomain.com | grep spf

Falls Ihnen ein SPF-Eintrag fehlt, sehen Sie keine Ausgabe. Falls Sie jedoch bereits einen Eintrag haben, sollten Sie in etwa Folgendes sehen:

v=spf1 include:mailgun.org ~all

Dieser Eintrag besteht aus drei Hauptkomponenten:

  • v=spf1 gibt die Version des verwendeten SPF-Protokolls an. Alle SPF-Einträge sollten mit diesem Tag beginnen.
  • include:mailgun.org gibt an, dass die Domain mailgun.org berechtigt ist, E-Mails im Namen Ihrer Domain zu versenden. Wenn der empfangende Mailserver eine E-Mail von mailgun.org erhält, sucht er nach einem SPF-Eintrag, der dies einschließt, um den sendenden Server zu validieren. Beachten Sie, dass Sie hier bei Bedarf mehrere Domains einschließen können, wie beispielsweise include:mailgun.org include:google.com.
  • ~all legt die Richtlinie für E-Mails fest, die nicht den SPF-Regeln entsprechen. In diesem Fall steht ~ für einen „Soft Fail“, bei dem E-Mails, die der Richtlinie nicht entsprechen, zwar akzeptiert, aber als verdächtig markiert und nicht sofort abgelehnt werden sollten. Alternativ könnten Sie -all verwenden, um einen „Hard Fail“ für E-Mails festzulegen, die der Richtlinie nicht entsprechen.

Einen SPF-Eintrag erstellen

Nachdem Sie nun die Komponenten eines SPF-Eintrags verstanden haben, ist das Erstellen eines Eintrags für Ihre Domain lediglich das Hinzufügen eines neuen TXT-DNS-Eintrags.

Falls Sie sich nicht sicher sind, wie das geht, bietet das Mailgun Helpcenter Leitfäden für die folgenden DNS-Anbieter:

Falls Sie bereits einen SPF-Eintrag haben und eine neue Domain hinzufügen müssen, beachten Sie, dass Sie für dieselbe Domain nicht mehrere SPF-Einträge hinzufügen können. Stattdessen müssen Sie Ihren bestehenden Eintrag ändern und ihm einen neuen Wert hinzufügen. Falls Ihr aktueller SPF-Eintrag beispielsweise v=spf1 include:example.com ~all lautet und Sie mailgun.org hinzufügen möchten, würde Ihr neuer Eintrag v=spf1 include:example.com include:mailgun.org ~all lauten.

Zwar sind einfache SPF-Einträge recht einfach zu erstellen und zu verwalten, sie können jedoch für Ihr Entwicklungsteam problematisch werden, wenn Sie SPF-Einträge für mehrere Versanddienste verwalten müssen. Falls Sie beispielsweise Marketing-Tools, CRMs und Messaging-Dienste nutzen, die alle E-Mails von derselben Domain versenden, könnten Sie am Ende lange, komplexe SPF-Einträge haben.

Das SPF-Protokoll hat zudem ein Limit von 10 DNS-Lookups, wobei nur die ersten 10 Lookups in Ihrem SPF-Eintrag ausgeführt werden. Falls die E-Mail innerhalb dieser 10 Lookups nicht zugeordnet wird, wird sie als nicht authentifiziert behandelt. Falls dies geschieht, gibt es einige Möglichkeiten, die Sie ausprobieren können:

  • Fest zugewiesene Subdomains: Sie können jedem Versanddienst eine eigene Subdomain zuweisen und dann einfache SPF-Einträge auf jeder Subdomain definieren. Dies erleichtert die Verwaltung einer großen Anzahl von Versanddiensten und umgeht das Lookup-Limit, da jeder Eintrag minimal ist.
  • Tools zur Reduzierung von SPF-Einträgen (Flattening): Es gibt Tools, um SPF-Einträge auf IP-Adressen oder IP-Bereiche zu reduzieren, was helfen kann, das Lookup-Limit einzuhalten. Dies kann jedoch neue Probleme verursachen, weshalb fest zugewiesene Subdomains möglicherweise die bessere Wahl sind.

DKIM konfigurieren

DKIM ist ein E-Mail-Authentifizierungsprotokoll, das es Ihnen ermöglicht, E-Mails mit einer digitalen Signatur zu versehen, um Manipulationen zu erkennen und zu verhindern. Wenn eine E-Mail mit DKIM signiert wird, läuft der folgende Prozess ab:

DKIM signature flow

Der Hauptzweck von DKIM besteht darin zu beweisen, dass eine E-Mail nicht manipuliert wurde und mit dem ursprünglichen Inhalt angekommen ist, der vom signierenden Absenderserver gesendet wurde. Als Nebeneffekt kann es jedoch auch dazu beitragen, die Wahrscheinlichkeit zu verringern, dass die E-Mail aufgrund von Inhaltsheuristiken als Spam markiert wird. Das liegt daran, dass eine konsistente Validierung von E-Mails mit DKIM im Laufe der Zeit Ihre Absenderreputation verbessert, was letztendlich die Abhängigkeit der Spamfilter von inhaltsbasierten Spam-Flags verringert.

Zu überprüfen, ob Sie DKIM für eine Domain konfiguriert haben, ist etwas komplexer als die Überprüfung von SPF, da der DNS-Eintrag für DKIM auf einer speziellen Subdomain existiert, die einen beliebigen „Selektor“ verwendet. Da der Selektor eine beliebige alphanumerische Zeichenfolge sein kann, besteht die einzige Möglichkeit zur Bestimmung des zu prüfenden Selektors in der gleichen Methode, die auch vom empfangenden Server verwendet wird – durch Untersuchung der Kopfzeile DKIM-Signature in der E-Mail. Falls Sie sich den Rohinhalt einer mit DKIM signierten E-Mail ansehen und nach dieser Kopfzeile suchen, werden Sie in etwa Folgendes sehen:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=dkim; t=1672618838; h=from:from:reply-to:subject:subject:date:date:message-id:message-id:to:to:cc:mime-version:mime-version:content-type:content-type:content-transfer-encoding:content-transfer-encoding:in-reply-to:in-reply-to:references:references; bh=RKkrHxZminSEI0rxtiN3+8wFv6vKCozhmrATLVIZFcw=; b=lndiW4xUpmGqbbIxjiER0FEa67zPqpmW+MqrmMcvuvgd+Gta851Jd+lU4yJ4rmiCHSPfRA gDh+ZsPC8UWZ8U5cfg14uFuvtxUWr6N9Ncy1mntgz7ZNhMIovpknioDIOLYD2wM72mglVP BAeTy2oHVZ0B6tBQqC4/hePtzyF0dnU=

Diese Kopfzeile besteht aus mehreren Komponenten:

KomponenteZweckBeispielwert
v DKIM-Versionv=1
aSignaturalgorithmusrsa-sha256
cKanonisierungsmethoderelaxed
dSignatur-Domainexample
sSelektor für das Lookup des öffentlichen DNS-Schlüsselsdkim
tZeitstempel1672618838
hIn der Signatur enthaltene Kopfzeilenfrom:reply-to:subject:date:message-id:to:cc:mime-version:content-type:content-transfer-encoding:in-reply-to:references
bhBody-HashRKkrHxZminSEI0
bKryptografische SignaturlndiW4xUpmGq

Der empfangende Server benötigt diese Informationen zur Verifizierung der E-Mail. Er berechnet den Hash der E-Mail neu, einschließlich der in der h-Komponente angegebenen Kopfzeilen, und ruft den öffentlichen Schlüssel aus dem DNS-Eintrag mithilfe des Selektors in der s-Komponente ab (in diesem Fall dkim). Wenn der Selektor mit der Absenderdomain kombiniert wird, würde der vollständige Speicherort des DKIM-Schlüssels folgendermaßen aussehen: ._domainkey..

Falls Ihr Selektor beispielsweise dkim lautet und Ihre Domain example.com, würde sich der DNS-Eintrag unter dkim._domainkey.example.com befinden. In diesem Fall könnten Sie den DNS-Eintrag entweder über ein Online-Tool oder mit dig: anzeigen lassen:

$ dig +short TXT dkim._domainkey.example.com

Falls ein Eintrag gefunden wird, sieht Ihre Ausgabe folgendermaßen aus:

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQE...

Dieser Eintrag hat drei Komponenten:

  • v=DKIM1 gibt die DKIM-Version an.
  • k=rsa definiert den Schlüsseltyp (RSA ist der Standard).
  • p= enthält den öffentlichen Schlüssel.

DKIM-Schlüssel erstellen

Beim Einrichten von DKIM müssen Sie ein Schlüsselpaar erstellen, das aus einem öffentlichen und einem privaten Schlüssel besteht. Der sendende Server verwendet den privaten Schlüssel zum Signieren von E-Mails, und der öffentliche Schlüssel wird als DNS-Eintrag veröffentlicht und vom empfangenden Server zur Validierung dieser E-Mails genutzt.

Wenn Sie DKIM für einen E-Mail-Versanddienst einrichten, generiert der Dienst in der Regel die Schlüssel für Sie (oder erlaubt Ihnen in einigen Fällen, Ihre eigenen zu verwenden). Mailgun bietet beispielsweise Schritt-für-Schritt-Anleitungen zur Generierung und Konfiguration von DKIM-Einträgen für eine bestimmte Domain. Es ist jedoch gut, den zugrundeliegenden Prozess zu verstehen, und in einigen Fällen ziehen Sie es vielleicht vor, die volle Kontrolle über das Schlüsselpaar zu übernehmen.

Es ist eine gute Praxis, Ihr E-Mail-Programm abzusichern, indem Sie Ihre DKIM-Schlüssel regelmäßig rotieren. Wie das geht, erfahren Sie in unserem Leitfaden zur Schlüsselrotation.

Für dieses Beispiel können Sie das Schlüsselpaar mit einem Tool wie openssl generieren. Generieren Sie zunächst den privaten Schlüssel wie folgt:

openssl genpkey -algorithm RSA -out private.key -pkeyopt rsa_keygen_bits:2048

Dieser Befehl erstellt eine Datei namens private.key, die den privaten RSA-Schlüssel enthält. Als Nächstes können Sie diesen privaten Schlüssel mit openssl verwenden, um den öffentlichen Schlüssel zu erstellen:

openssl rsa -pubout -in private.key -out public.key

Sobald Sie den öffentlichen Schlüssel haben, können Sie den DNS-Eintrag dafür mit Ihrem gewünschten Selektor (in diesem Fall dkim) erstellen. Der DNS-Eintrag würde folgendermaßen aussehen:

dkim._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQE...etc"

Mailgun bietet Helpcenter-Leitfäden, die Anleitung zum Hinzufügen von Einträgen für gängige DNS-Anbieter geben.

Ähnlich wie bei SPF kann DKIM für Ihr Entwicklungsteam Komplexität mit sich bringen. Es können Herausforderungen auftreten, wie z. B. schlecht verwaltete private Schlüssel und Konflikte zwischen Absenderdiensten.

Der Schutz, den DKIM bietet, ist nur so gut wie Ihre Praktiken zur Schlüsselverwaltung. Ein kompromittierter Signaturschlüssel könnte Sie böswilligen Akteuren und gefälschten E-Mails aussetzen. Daher müssen Sie beim Umgang mit privaten Schlüsseln auf eine gute Sicherheitshygiene achten und diese sicher mit einem Dienst wie AWS Secrets Manager oder HashiCorp Vault speichern. Ebenso ist es oft eine gute Idee, Signaturschlüssel regelmäßig zu rotieren, da dies die potenziellen Auswirkungen eines kompromittierten Schlüssels begrenzt. Die Tatsache, dass DKIM-Selektoren beliebig wählbar sind, ist hierbei nützlich, da Sie damit beginnen können, E-Mails mit einem neuen Selektor zu versenden, die mit einem neuen privaten Schlüssel signiert sind, während Sie Ihr altes Schlüsselpaar schrittweise ausmustern.

DMARC implementieren

DMARC ist ein weiteres E-Mail-Authentifizierungsprotokoll, das dazu beitragen soll, Spoofing, Phishing und Spam abzuschwächen. DMARC baut auf SPF und DKIM auf. Genauer gesagt nutzt DMARC SPF und DKIM, um Prüfungen bei eingehenden E-Mails durchzuführen und die definierte DMARC-Richtlinie entsprechend dem Ergebnis dieser Prüfungen durchzusetzen.

DMARC führt zudem eine Abgleichsprüfung für SPF und DKIM durch, um sicherzustellen, dass die durch diese Mechanismen angegebene Domain auch mit der Domain in der Kopfzeile from: der E-Mail übereinstimmt, was den Schutz vor Spoofing weiter verschärft.

DMARC-Einträge werden auf einer bekannten Subdomain (_dmarc) Ihrer Absenderdomain veröffentlicht. Falls Sie beispielsweise den DMARC-Eintrag von example.com mit dig überprüfen möchten, würden Sie einen Befehl wie diesen ausführen:

$ dig +short TXT _dmarc.example.com

Falls Sie einen Eintrag für diese Domain konfiguriert hätten, würde Ihre Ausgabe folgendermaßen aussehen:

"v=DMARC1; p=quarantine; pct=100; adkim=s; aspf=s"

Dieser Beispieleintrag enthält fünf Komponenten. Ein DMARC-Eintrag kann jedoch noch weitere mögliche Komponenten enthalten:

KomponenteZweckBeispielwert(e)
vDMARC-VersionAktuell immer DMARC1
pAnzuwendende Richtlinie für nicht konforme E-MailsMögliche Werte sind none, quarantine oder reject
ruaBerichts-URI für aggregierte Berichte (E-Mail-Adressen, an die Berichte gesendet werden)mailto
rufBerichts-URI für forensische Berichte (E-Mail-Adressen, an die detaillierte Berichte gesendet werden)mailto
adkimDKIM-Abgleichmodusr für relaxed, s für strict
aspfSPF-Abgleichmodusr für relaxed, s für strict
pctProzentsatz der E-Mails, die der DMARC-Richtlinie unterliegen0–100
foForensische Berichtsoptionen0 für „alle Fehler“, 1 für „nur DKIM-Fehler“

Ein Schlüsselkonzept für DMARC ist die Idee des „Abgleichs“ (Alignment). Der Abgleich bestimmt, wie genau die in SPF und DKIM verwendeten Domains mit der Domain in der Kopfzeile from: der E-Mail übereinstimmen müssen. Der Abgleichmodus wird durch die Komponenten adkim und aspf des DMARC-Eintrags gesteuert, die folgende Bedeutungen haben:

  • DKIM-Abgleich:
    • Streng (Strict) (adkim=s): Die Domain in der DKIM-Signatur (d=) muss exakt mit der from:-Adresse übereinstimmen.
    • Gelockert (Relaxed) (adkim=r): Die Domain in der DKIM-Signatur muss dieselbe Organisations-Domain aufweisen wie die Domain in der from: -Adresse. Das bedeutet, dass Subdomains zulässig sind.
  • SPF-Abgleich:
    • Streng (Strict) (aspf=s): Die Domain im SPF-Return-Path muss exakt mit der from: address übereinstimmen.
    • Gelockert (Relaxed) (aspf=r): Die Domain im SPF-Return-Path muss dieselbe Organisations-Domain aufweisen wie die Domain in der from:-Adresse. Subdomains sind zulässig.

Vorausgesetzt, SPF, DKIM und DMARC sind beim Versand einer E-Mail alle korrekt konfiguriert, läuft folgende Ereignissequenz ab:

Assuming SPF, DKIM, and DMARC are all configured correctly when an email is sent, the following sequence of events will take place

DMARC gilt als bestanden, wenn entweder SPF oder DKIM gültig und abgeglichen ist. Falls beide ungültig und/oder nicht abgeglichen sind, gilt DMARC als fehlgeschlagen, und die DMARC-Richtlinie wird durchgesetzt.

Die Richtlinie wird durch die Komponente p= definiert und hat drei mögliche Modi:

  • p=none: Es wird keine Aktion durchgeführt, aber es werden Berichte generiert.
  • p=quarantine: E-Mails werden als verdächtig behandelt und an den Spam-Ordner gesendet.
  • p=reject: E-Mails werden abgelehnt und nicht zugestellt.

Denken Sie daran, dass die von Ihnen definierte DMARC-Richtlinie keine Auswirkungen auf Ihre eingehenden E-Mails hat; sie teilt dem Rest der Welt mit, was er mit nicht authentifizierten E-Mails tun soll, die angeblich von Ihrer Domain stammen. Dies schließt die Tags für aggregierte (rua) und forensische (ruf) Berichte ein, die angeben, wohin empfangende Server Compliance-Berichte über nicht authentifizierte E-Mails senden sollen, die angeblich von Ihrer Domain stammen.

Es ist wichtig, diese Optionen festzulegen und sicherzustellen, dass die Posteingänge, auf die sie verweisen, aktiv überwacht werden. Diese Berichte sind von unschätzbarem Wert, um die E-Mail-Nutzung Ihrer Domain zu verstehen, nicht autorisierte Absender zu identifizieren und Ihre Authentifizierungseinstellungen zu verfeinern.

Wie bei den anderen behandelten E-Mail-Authentifizierungsmechanismen besteht das Einrichten Ihres DMARC-Eintrags lediglich darin, den entsprechenden TXT-DNS-Eintrag zu erstellen, der in etwa so aussehen würde:

_dmarc.example.com IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-failures@example.com; aspf=s; adkim=s; pct=100"

Beachten Sie, dass es von Vorteil sein kann, sich langsam heranzutasten, wenn Sie die E-Mail-Authentifizierung für eine Domain zum ersten Mal einrichten. Anstatt mit einer strikten Durchsetzung (p=reject) zu beginnen, sollten Sie eventuell mit einer schrittweisen Durchsetzung (p=none) starten und die DMARC-Berichte überwachen, um sicherzustellen, dass Ihre E-Mails die Validierung wie erwartet bestehen. Andernfalls könnte eine Fehlkonfiguration die Zustellbarkeit Ihrer legitimen E-Mails beeinträchtigen.

Zusammenfassung

E-Mail-Authentifizierungsprotokolle wie SPF, DKIM und DMARC spielen eine wichtige Rolle bei der Sicherstellung der Zustellbarkeit Ihrer E-Mails und dem Schutz der Reputation Ihrer Domains. Eine ordnungsgemäß konfigurierte E-Mail-Authentifizierung schafft Vertrauen und verbessert Ihre Absenderreputation, wodurch die Wahrscheinlichkeit sinkt, dass Ihre E-Mails als Spam markiert werden.

Falls Sie Ihre E-Mail-Authentifizierungseinstellungen noch nicht konfiguriert oder kürzlich überprüft haben, sollten Sie sich etwas Zeit nehmen, um diese Schritte für Ihre E-Mail-Infrastruktur zu überprüfen und umzusetzen. Denken Sie daran, Ihre DMARC-Berichte aktiv zu überwachen und die Zustellbarkeit Ihrer E-Mails zu testen, um sicherzustellen, dass alles korrekt konfiguriert ist. Falls Sie eine zuverlässige Ressource zum Testen und Verwalten Ihrer E-Mail-Zustellbarkeit benötigen, hat Mailgun alles, was Sie brauchen.