Modul 4 · 4.3
Deutsch
DKIM in der Praxis: Selectors, Schlüssel und Dienste
Modul 4: Zustellbarkeit: SPF, DKIM und DMARC in der Praxis · Lesezeit: 12 Minuten
Lernziel: Nach dieser Lektion können Sie eine DKIM-Signature-Kopfzeile analysieren, DKIM bei jedem Versanddienst mit Ihrer eigenen Domain einrichten, überprüfen, ob ein Selector funktioniert, und erklären, wie Sie Schlüssel sicher ersetzen.
Kernbegriffe: DKIM-Signature, d= (zeichnende Domain), s= (Selector), h= (signierte Header), bh= und b=, Kanonisierung (c=), <selector>._domainkey.<domein>, TXT mit p= oder CNAME zum Dienst, Schlüssellänge 2048 Bit (RFC 8301), Teile von 255 Zeichen, ed25519 (RFC 8463), Schlüsselwechsel, leeres p= (widerrufen), DKIM und Weiterleitung
Warum DKIM das Wichtigste der drei ist
SPF sagt, welche Server mailen dürfen, bricht aber bei Weiterleitungen und schaut auf den Return-Path, der bei vielen Diensten nicht Ihnen gehört. DKIM setzt eine Signatur in die E-Mail selbst. Diese Signatur übersteht eine Weiterleitung (solange die E-Mail nicht verändert wird) und ist an eine Domain gebunden, die Sie selbst wählen. Dadurch ist DKIM in der Praxis oft das Einzige, was DMARC bestehen lässt, bei Newslettern, Rechnungen aus einem Buchhaltungsprogramm und weitergeleiteter Mail.
Die Grundlagen (wie der Schlüssel in der DNS steht, was ein Selector ist) finden Sie in der DNS-Kurs, Lektion 4.4. Hier gehen wir weiter: Was genau steht in einer Signatur, und wie richten Sie DKIM für jeden Dienst ein?
Eine Signatur analysieren
Öffnen Sie die Header einer E-Mail, die Sie erhalten haben (Lektion 1.5). Oben steht, wenn die Mail signiert ist, etwas wie:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=x;
t=1762588800; h=from:to:subject:date:message-id:mime-version:content-type;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=Gm7yW3q...lange Zeichenfolge...Qx9A==| Tag | Bedeutung |
|---|---|
v=1 | DKIM-Version |
a=rsa-sha256 | Algorithmus: RSA-Schlüssel, SHA-256. Auch möglich: ed25519-sha256 |
c=relaxed/relaxed | Kanonisierung: wie streng kleine Änderungen (Leerzeichen, Großschreibung in Header-Namen) behandelt werden, für die Header und den Text. relaxed ist üblich und nachsichtiger als simple |
d=example.com | Die zeichnende Domain. Diese Domain steht für die Mail ein. DMARC vergleicht dies mit der Von-Adresse |
s=x | Der Selector: welcher Schlüssel dieser Domain verwendet wurde |
t= | Zeitpunkt der Signatur (Sekunden seit 1970) |
h= | Welche Header signiert sind. from muss immer enthalten sein |
bh= | Ein Fingerabdruck (Hash) des Textes der Mail |
b= | Die Signatur selbst |
Der Empfänger holt den öffentlichen Schlüssel bei <s>._domainkey.<d>, hier also x._domainkey.example.com, und prüft, ob b= zu den Headern aus h= und dem Fingerabdruck bh= passt. Wurde unterwegs ein einziger Buchstabe im Text oder in einem signierten Header verändert, schlägt die Prüfung fehl.
In Authentication-Results sehen Sie das Ergebnis, zum Beispiel dkim=pass header.d=example.com header.s=x. Eine Mail kann mehrere Signaturen haben, etwa eine von Ihrer Domain und eine vom Dienst selbst. Für DMARC zählt nur eine Signatur, deren d= zu Ihrer Von-Domain gehört.
Jeder Dienst seinen eigenen Selector
Eine Domain kann viele DKIM-Schlüssel gleichzeitig haben, jeder unter einem eigenen Selector. Genau das ist der Zweck: Jeder Dienst, der in Ihrem Namen mailt, signiert mit einem eigenen Schlüssel.
| Versender | Selector (Beispiel) | Wie es in der DNS steht |
|---|---|---|
| Hosting-Mailserver | x oder default | TXT mit dem Schlüssel, vom Panel erstellt |
| Microsoft 365 | selector1, selector2 | zwei CNAME-Records zu Microsoft |
| Google Workspace | google (Standard) | TXT mit einem Schlüssel, den Sie in der Verwaltungskonsole erstellen lassen |
| Newsletter-Dienst | zum Beispiel k2, k3, mte1 | meist CNAME-Records zum Dienst |
TXT oder CNAME?
- Bei einem TXT-Record setzen Sie selbst den öffentlichen Schlüssel in Ihre DNS. Möchte der Dienst einen neuen Schlüssel, müssen Sie den Record selbst anpassen.
- Bei einem CNAME-Record verweisen Sie den Selector auf einen Namen beim Dienst, zum Beispiel
k2._domainkey.example.com CNAME dkim2.mailer.example.Der Dienst verwaltet den Schlüssel dann selbst und kann ihn ersetzen, ohne dass Sie etwas tun müssen. Deshalb wählen große Dienste CNAME, und verwenden oft zwei: so können sie zwischen einem aktiven und einem neuen Schlüssel wechseln.
Achtung: Ein CNAME darf nicht neben einem anderen Record auf demselben Namen stehen. Steht bereits ein TXT auf selector1._domainkey, entfernen Sie dieses.
Das Wichtigste: DKIM beim Dienst aktivieren
Bei vielen Diensten ist DKIM mit Ihrer eigenen Domain nicht standardmäßig aktiv. Sie signieren dann mit ihrer eigenen Domain (d=mailer.example). Die Mail ist dann zwar signiert, aber nicht mit Ihrer Von-Adresse ausgerichtet (Alignment). Für DMARC zählt das nicht. In der Verwaltung des Dienstes heißt es oft "Domain verifizieren", "Domainverifizierung", "Authentifizierung" oder "eigene Absenderdomain". Erst wenn Sie die Records gesetzt und es im Dienst aktiviert haben, signiert er mit d=example.com.
Schlüssel: Länge, Teile und Algorithmus
- Länge. RFC 8301 sagt: mindestens 1024 Bit, und Versender sollen mindestens 2048 Bit verwenden. Verwenden Sie 2048. Ein Schlüssel von 512 Bit wird von Empfängern als ungültig angesehen.
- Teile von 255 Zeichen. Ein TXT-Record besteht aus Zeichenfolgen von maximal 255 Zeichen. Ein 2048-Bit-Schlüssel ist etwa 400 Zeichen lang und passt nicht in eine Zeichenfolge. Der Record besteht dann aus zwei oder mehr aneinandergereihten Zeichenfolgen (
"v=DKIM1; k=rsa; p=MIIBIj..." "...IDAQAB"), die der Empfänger zusammenfügt. Die meisten Panels machen das automatisch. Geht das schief, erhalten Sie einen abgeschnittenen Schlüssel und jede Signatur schlägt fehl. Kopieren Sie einen Schlüssel also immer vollständig, ohne zusätzliche Leerzeichen oder Anführungszeichen in der Mitte. - ed25519 (RFC 8463) ist ein moderneres Algorithmus mit kurzen Schlüsseln. Noch nicht alle Empfänger prüfen es. Wer es verwendet, signiert daher mit zwei Signaturen: eine RSA und eine ed25519.
Einen Schlüssel ersetzen
Es ist gut, einen Schlüssel hin und wieder zu ersetzen, und sicherlich, wenn Sie vermuten, dass der private Schlüssel durchgesickert ist (zum Beispiel nach einem Hack des Servers oder einem ausgeschiedenen Administrator). Gehen Sie so vor:
- Erstellen Sie einen neuen Schlüssel unter einem neuen Selector, zum Beispiel
s2026, und setzen Sie den öffentlichen Schlüssel in die DNS. - Warten Sie, bis der Record überall sichtbar ist (die TTL, siehe DNS-Kurs Lektion 6.1).
- Lassen Sie den Server mit dem neuen Selector signieren.
- Lassen Sie den alten Schlüssel noch ein paar Tage stehen: Mail, die bereits unterwegs war oder erneut geprüft wird, verweist noch darauf.
- Widerrufen Sie den alten Schlüssel, indem Sie
p=leer machen (v=DKIM1; p=), oder entfernen Sie den Record.
Bei Diensten mit CNAME-Records erledigt der Dienst dies selbst.
Was DKIM fehlschlagen lässt
- Mail wird unterwegs verändert: eine Mailingliste, die
[Listenname]in den Betreff setzt oder eine Fußzeile hinzufügt, ein Virenscanner, der eine Zeile unter die Mail klebt, ein Weiterleitungsserver, der die Formatierung umwandelt. - Falscher oder abgeschnittener Schlüssel in der DNS.
- Selector existiert nicht: ein Tippfehler im Namen, oder
selector1._domainkey.example.com.example.com(der Domainname doppelt, weil das Panel ihn selbst schon anhängt). - Schlüssel widerrufen (leeres
p=), während der Server noch mit diesem Selector signiert.
Überprüfen, ob es funktioniert
- Senden Sie eine Mail vom Dienst aus an eine Adresse bei Gmail oder Outlook.com.
- Öffnen Sie die Header und suchen Sie die
DKIM-Signature: notieren Sied=unds=. - Schauen Sie in
Authentication-Results, ob dortdkim=passsteht und obheader.d=Ihre Domain ist. - Suchen Sie den Selector:
dig TXT s._domainkey.example.com(oder mit einem Online-Tool). Es muss einp=mit einem langen Schlüssel stehen, oder ein CNAME, der zu einem solchen Record führt.
In der Praxis: So sieht es in einem Panel aus
Bei einem Hostingpaket von WebOké ist DKIM standardmäßig aktiv, mit dem Selector x: der Record heißt x._domainkey.<IhreDomain>. In DirectAdmin sehen Sie es in DNS-Verwaltung; liegt Ihre DNS bei einem anderen Anbieter, kopieren Sie diesen Record dorthin. In Mein WebOké zeigt die Karte E-Mail festlegen, welcher Wert vorhanden sein muss und ob er gefunden wird. Bei anderen Anbietern heißt der Selector anders (default, mail, dkim), aber Sie finden ihn auf dieselbe Weise: im Panel oder in der s= einer signierten Mail.
Zusammenfassung
- DKIM ist die Prüfung, die eine Weiterleitung übersteht und die Sie pro Dienst an Ihre eigene Domain binden; für DMARC zählt nur eine Signatur mit Ihrer Domain in
d=. - In der
DKIM-Signaturefinden Sied=(Domain) unds=(Selector); der Schlüssel steht auf<s>._domainkey.<d>. - Jeder Dienst erhält einen eigenen Selector; CNAME-Records lassen den Dienst selbst Schlüssel ersetzen. Aktivieren Sie DKIM mit Ihrer eigenen Domain auch wirklich beim Dienst.
- Verwenden Sie 2048 Bit; achten Sie auf abgeschnittene Schlüssel beim Kopieren.
- Ersetzen Sie einen Schlüssel mit einem neuen Selector und widerrufen Sie den alten erst danach.
Quiz
Aufgabe
Aufgabe Z4.3: Einen DKIM-Selector überprüfen. Senden Sie eine Mail von Ihrer eigenen Domain (oder von einem Dienst, der in Ihrem Namen mailt) an eine eigene Adresse bei einem anderen Anbieter. Öffnen Sie die Header und tragen Sie die Werte von d= und s= aus der DKIM-Signature ein, sowie das, was in Authentication-Results bei dkim= steht. Das Programm sucht den Selector live, folgt einem eventuellen CNAME, prüft den Schlüssel (vorhanden, nicht leer, Länge) und teilt mit, ob d= mit der Domain ausgerichtet ist, die Sie als Absender angeben.
Weiterführende Informationen
Die Schritte in diesen Artikeln gelten für die Panels von WebOké; bei anderen Anbietern funktioniert es vergleichbar.
- Kostenloser DNS-Kurs 4.4: DKIM: die Unterschrift unter Ihrer Mail
- DirectAdmin Anleitung 5.8: DKIM aktivieren und überprüfen
- DKIM einrichten, wenn das DNS über einen externen Server läuft
- WebOké Anleitung 6.7: Die Karte E-Mail einrichten (MX, SPF, DKIM, DMARC)
- RFC 6376 (DKIM), RFC 8301 (Schlüssellänge und Algorithmen), RFC 8463 (ed25519)
