E-Mails signieren mit DKIM

Seite 4: Wann signieren?

Inhaltsverzeichnis

Bei der Entscheidung über den besten Zeitpunkt zum Signieren der ausgehenden EMail sind andere Aspekte wichtig. Eine Signatur bezeugt den Zustand der Nachricht im Moment des Signierens. Wird die E-Mail danach verändert, stimmt die Signatur nicht mehr. Genau so werden Manipulationen erkannt. Wenn das Mailsystem die Nachricht nach dem Unterzeichnen noch selbst verändert, verschickt es manipulierte und damit ungültige Mails. Ein Beispiel hierfür ist der Footer, den Mailinglisten-Manager üblicherweise an ausgehende Mails anhängen. Der erste Ansatz, dieses Problem zu umgehen, besteht darin, die Signatur so spät wie möglich anzubringen, nämlich erst, wenn alle anderen Komponenten des Mailsystems die Nachricht bearbeitet haben und eine weitere Veränderung von Header und Body ausgeschlossen ist.

Der andere Ansatz ist, die Signatur so zu verfassen, dass bestimmte Modifikationen sie nicht entwerten. Eine DKIM-Signatur kann so gestaltet werden, dass sie nur eine bestimmte Länge des Body signiert. So kann die Mailingliste ihren Footer anhängen, ohne die Signatur zu zerstören. Dieser Toleranzbereich birgt allerdings auch die Möglichkeit des Missbrauchs: Der Footer kann nachträglich durch eine unerwünschte Botschaft ersetzt werden; zusätzliche HTML-Elemente können den signierten Text komplett überlagern und angefügte Attachments verleiten den Empfänger zum Doppelklick. Die Architekten des DKIM-RFCs raten daher auch ausdrücklich von einer Längenangabe in der Signatur ab.

Eine sichere Methode wäre, die erste Signatur des Absenders über eine eingeschränkte Länge der E-Mail anzubringen und nach Bearbeitung der E-Mail durch einen Mailinglisten-Manager eine zweite Signatur anzufertigen, die sich dann auf die vollständige E-Mail erstreckt. Jede der Signaturen ist für sich gültig und eine Manipulation könnte automatisch erkannt werden, bevor der Postmaster zum Ohrenarzt muss, weil ein Kollege ihm am Telefon sehr deutlich mitgeteilt hat, wie sehr er signierten Spam verabscheut. In welcher Reihenfolge die Signaturen abzuarbeiten sind, erkennt das verifizierende Programm übrigens an der Reihenfolge, in der sie angebracht sind. Das ist möglich, weil der RFC von der signierenden Instanz fordert, ihre DKIM-Signatur immer an oberster Stelle in die Mail einzufügen. Die doppelte Signatur ist allerdings nur dann sinnvoll, wenn verschiedene Teile des Mailsystems vollkommen unabhängig voneinander arbeiten.

In der Regel genügt es, eine einzige Signatur über die gesamte Länge der Nachricht möglichst spät anzubringen. So geht auch das hier beschriebene System vor. Damit enden die Vorüberlegungen und der Postmaster kann mit der Einrichtung beginnen. Zuerst erzeugt er den Signier-Schlüssel. Der öffentliche Teil des Schlüssels wandert in den DNS-Server zum Abruf für entfernte Verifizierer. Den privaten Teil des Schlüssels erhält das signierende Programm dkim-milter, das über das Sendmail-Milter-Protokoll in den SMTP-Server eingebunden wird. Zuletzt gilt es, im SpamAssassin die Signaturprüfung mit Hilfe des Perl-Moduls Mail::DKIM zu aktivieren und passende Regeln für die Behandlung der Nachrichten zu definieren.