DKIM (DomainKeys Identified Mail, RFC 6376) signiert jede ausgehende E-Mail kryptographisch. Der Sende-Server erzeugt eine Signatur über ausgewählte Header und den Nachrichteninhalt; der Empfänger verifiziert sie mit dem öffentlichen Schlüssel aus dem DNS. So lässt sich nachweisen, dass eine Nachricht wirklich von der angegebenen Domain stammt und unterwegs nicht verändert wurde.

Die Technik entstand aus den Vorläufern DomainKeys (Yahoo, 2004) und Identified Internet Mail (Cisco) und wurde 2011 in RFC 6376 standardisiert. DKIM nutzt die asymmetrische Verschlüsselung: Der Sende-Server signiert mit dem Private Key, der Empfänger prüft mit dem zugehörigen Public Key, den er im DNS findet.

So ist die Signatur aufgebaut

Jede signierte Nachricht trägt einen DKIM-Signature-Header, der Domain, Selektor und Algorithmus nennt:

DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=selector1;
 bh=...; h=from:to:subject:date; b=...

Der zugehörige DNS-Eintrag liegt unter dem Selektor: selector1._domainkey.example.com IN TXT "v=DKIM1; k=rsa; p=MIGfMA0G...". Der Selektor erlaubt es, mehrere Schlüssel gleichzeitig zu betreiben und zu rotieren. Zur Signaturberechnung definiert DKIM zwei Canonicalization-Verfahren: simple und relaxed, die festlegen, wie Header und Body normalisiert werden.

Vorteile und Grenzen

  • DKIM überlebt Weiterleitungen, weil die Signatur am Inhalt hängt und nicht am Umschlag — SPF bricht dort.
  • DKIM signiert Header und Body, nicht jedoch den Envelope. Es muss daher mit SPF und DMARC kombiniert werden.
  • Grundlagen für das Thema: E-Mail, SMTP und DNS.