DomainKeys Indentifild Mail (DKIM)

DKIM (DomainKeys Identified Mail) ist eine Methode der E-Mail-Authentifizierung.
DKIM fügt Ihren Mails eine Signatur hinzu, die Ihrer Domain zugeordnet ist und bei allen ausgehenden E-Mails genutzt wird. Die Verwendung eines DomainKey ist eine Technik (ähnlich wie SPF), die das Fälschen des Absenders einer E-Mail erschweren soll.

1. Wie funktioniert DKIM?
2. DKIM einrichten
3. DKIM verwenden
4. Beispielscript für PHP mit Authentifizierung

1. So funktioniert DKIM

Wenn eine E-Mail versendet wurde, fügt DKIM eine sogenannte DKIM-Signatur zum Header der E-Mail hinzu. Wenn die E-Mail empfangen wird, fragt der empfangende Server den öffentlichen Schlüssel ab, der per TXT-Record in der DNS-Zone der Domain veröffentlicht wurde. Mit diesem Schlüssel wird überprüft, ob die Signatur korrekt ist.
Ziel dieses Verfahres ist, Spammern und Phishern ihre kriminellen Vorhaben zu erschweren.

2. DKIM einrichten

Wenn Sie DKIM aktivieren wollen, so müssen Sie sich in Ihrem Adminpanel anmelden, und in das Menü "E-Mail" => "E-Mail Konto" => "E-Mail Domain" navigieren. Anschließend können Sie auf Ihre Domain und auf "DomainKeys Identified Mail (DKIM) klicken. Eine genauere Anleitung hierzu finden Sie hier.

3. DKIM verwenden

Im Normalfall versenden Sie E-Mails mittels SMTP Auth, d.h. Sie geben der Mailanwendung (Outlook, Webmailer, Script) ein Postfach und ein Postfachkennwort mit, wodurch Sie sich direkt am Server authentifizieren und der DKIM-Header an die E-Mail gehängt wird. Hier brauchen Sie daher nichts weiteres Unternehmen.

Der versand per PHP mail() ist zwar noch möglich, beachten Sie jedoch, dass wir hier aufgrund von Sicherheitslücken die DKIM-Funktion deaktiviert haben. Das heißt, wenn Sie Mails per PHP mail() versenden, so wird hier kein DKMI-Header eingefügt, wodurch Ihre Mail wahrscheinlich vom Empfangsserver als Spam deklariert wird.

4. PHP Mail mit Authentifizierung (SMTP)

Mit dem folgendem Script, können Sie Mails per PHP versenden. Da Sie sich hier mit einem Postfach verbinden, wird der DKIM-Header an die Mail angehängt. Damit Sie diesen Code verwenden können, müssen Sie folgenden Befehl per SSH auf dem Server ausführen:

composer require phpmailer/phpmailer

Anschließend können Sie folgenden Code in einer .php-Datei einfügen, bearbeiten und speichern.

Die Datei müssen Sie dann im gleichen Verzeichnis ablegen, in dem Sie den Composerbefehl ausgeführt haben.

<?php
use PHPMailer\PHPMailer\PHPMailer;
require 'vendor/autoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'xx.serverdomain.org';  // Der Server über den die Mail versendet wird.
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.'; // Benutzername von Ihrem Postfach
$mail->Password = 'Passwort'; // Passwort des Postfaches
$mail->setFrom(Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.', 'Your Name); // Die Absenderadresse
$mail->addReplyTo(Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.', 'Your Name');
$mail->addAddress(Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.', 'Receiver Name'); // Die Empfängeradresse
$mail->Subject = 'Testmail; // Betreffzeile Ihrere Mail
$mail->msgHTML(file_get_contents('message.html'), __DIR__);
$mail->Body = 'This is a plain text message body';
//$mail->addAttachment('test.txt');
if (!$mail->send()) {
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'The email message was sent.';
}
?>