DKIM-Signatur

1. Allgemeines

DKIM ist ein Signatur-Verfahren für E-Mails. Die Signierung des Mailinhaltes erfolgt hierbei durch den versendenden Mailserver bzw. einem Mailserver, durch den die Mail unterwegs weitergeleitet wurde (Mailprovider, Mailinglistenserver). Der empfangende Mailserver kann dann diese Signatur mit Hilfe des DNS verifizieren. Hierfür ist in der Signatur eine Domain angegeben, für die man im DNS DKIM-TXT-Records abfragen kann. Mit Hilfe der Angaben in diesem Record (u.a. ein Publickey) und dem RSA-Verfahren kann die Signatur verifiziert werden.
 

Der empfangende Mailserver kann also feststellen, ob diese Mail durch eine bestimmte Domain signiert wurde und ob die Mail danach unterwegs inhaltlich verändert wurde.


1.a. Vorteile


1.b. DKIM ist aber keine Lösung für:


1.c. DKIM muss mit vielen Faktoren umgehen können:


1.d. DKIM-DNS-Records

Der Betreiber der Domain, unter deren Namen die Mails signiert werden sollen, muss im DNS DKIM-Records veröffentlichen. Hierbei handelt es sich um TXT-Records in einem bestimmten Format. Hier folgt ein Beispiel für die Domain dfn.de und den Selektor s1:

dig +short txt s1._domainkey.dfn.de

"v=DKIM1; p="
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5tjEwjdy5Xynwaub38d3Lk1e8"
"7O2W0qNp69swt85//ZjXNckUDm1dMK8/Aj8DIyASgDDOHjUrBzSx7a/EchjqgN0S"
"+JFs+DPy+FQsGuNZReVaaBgB3OjqJ25R1CZwDoKK2cD3f4RNhYLctuboB14AZSLt"
"Mx6hJ0w0XhJKZ3kyrwIDAQAB"

Es muss zumindest die Version (v=) und der Publickey (p=) enthalten sein, weitere Einträge sind optional.
Weiterhin ist es nicht empfehlenswert, eine DKIM-Keylänge von mehr als 2048 Bit zu wählen, da es sonst zu Übertragungsproblemen im DNS kommen kann, siehe https://datatracker.ietf.org/doc/html/draft-ietf-dkim-base-08#section-3.3.3 .

2. DKIM-Signaturen im MailSupport

Wir können auf Wunsch alle ausgehenden Mails mit Hilfe des Amavis mit DKIM-Signaturen versehen.
Hierbei gelten folgende Rahmenbedingungen:


2.a. Rahmenbedingungen                                                                                          


2.b. Amavis-Header-Liste

Es folgt die Liste der Header, die Amavis für die Signatur heranzieht:

# Nach RFC 6376

From Sender Reply-To Subject Date Message-ID To Cc
In-Reply-To References MIME-Version Content-Type Content-Transfer-Encoding
Content-ID Content-Description Resent-Date Resent-From Resent-Sender
Resent-To Resent-Cc Resent-Message-ID List-Id List-Post List-Owner
List-Subscribe List-Unsubscribe List-Help List-Archive

Von diesen werden folgende NICHT signiert, weil Mailinglisten bzw. manche Mailer-Implementierungen diese oft modifizieren:

Sender To Cc Resent-To Resent-Cc

Zusätzlich kommen nach RFC 4021, 3834, RFC 5518 und IANA registry Permanent Message Header Field Names folgende hinzu, Note that we are signing Received despite the advise in RFC 6376:

Received Precedence
Original-Message-ID Message-Context PICS-Label Sensitivity Solicitation
Content-Location Content-Features Content-Disposition Content-Language
Content-Alternative Content-Base Content-MD5 Content-Duration Content-Class
Accept-Language Auto-Submitted Archived-At VBR-Info

Some additional nonstandard header fields:

Organisation User-Agent X-Mailer

Folgende Header werden doppelt eingefügt, d.h. böswilliges Hinzufügen solcher Header durch Angreifer wird erkannt:

From Date Subject Content-Type