MECSA: SPF, DKIM und DMARC bei Mailservern

Ich bin gestern über das Projekt My Email Communications Security Assessment (MECSA) der Europäischen Union gestoßen. Mit dem Online-Dienst, welcher unter https://mecsa.jrc.ec.europa.eu/ erreichbar ist, kann man die Sicherheit der E-Mail-Kommunikation zwischen Providern testen.

Da ich meinen Mailserver gestern umgezogen habe und dessen Bewertung bei anderen Providern verbessern sowie den E-Mail-Verkehr sichern wollte, fand ich dieses Tool recht hilfreich.

Im Grunde sind drei Verfahren / Techniken für eine gute Bewertung bei MECSA wichtig. Diese Verfahren müssen alle als TXT-Records beim DNS-Server der jeweiligen Domain eingerichtet werden.

SPF

Sender Policy Framework – gibt aus, welche Server E-Mails für die Domain versenden dürfen. In den meisten Fällen reicht der folgende TXT-Record hierfür völlig aus:

@                   IN TXT     "v=spf1 mx ~all"

Wer sich mehr damit befassen will, sollte am besten einfach mal seine Suchmaschine verwenden.

DKIM

DomainKeys Identified Mail –  hiermit will man im Grunde sicherstellen, dass die E-Mails auch wirklich von angegeben Absender kommen und nichts verändert wurde. Hierfür gibt es einen privaten und einen öffentlichen Schlüssel. Den öffentlichen Schlüssel hinterlegt man als TXT-Record auf den DNS-Server und der private Schlüssel wird auf dem Mailserver verstaut.

Manche Mailserversoftware wie z.B.: Mailcow haben zur Erzeugung der Schlüssel eine grafische Benutzeroberfläche.

DMARC

DMARC ist im Endeffekt das Verbindungsstück von  SPF und DKIM. Man gibt damit an, was passieren soll, wenn die E-Mail nicht SPF und DKIM entspricht und wer über die E-mail informiert werden soll.

MXToolBox bietet einen guten Generator die Erzeugung des TXT-Records an: https://mxtoolbox.com/DMARCRecordGenerator.aspx

Übrigens verwenden aktuell GMX, Web und 1&1 sowie viele andere deutsche Provider kaum die in diesem Post veröffentlichen Methoden und haben daher eine eher schlechte MECSA Bewertung.

Tutorial: Benutzername und E-Mail Überprüfung

Ich habe ein Script gebastelt, dass alle Benutzernamen auf verbotene Usernamen und alle E-Mail-Adressen auf E-Mail-Adressen von Wegwerf-Email-Diensten überprüft.

Wer es verwenden will und nicht mehr als 25 Mal am Tag ausführt, kann es gerne nutzen:

<?php
/* Check for illegal Usernames and / or Emails
* Created: 15.02.2015 by Christoph Daniel Miksche (Wronnay)
* Uses the Wronnay Database for illegal Usernames and Emails
* More Informations: check.wronnay.net
*/
function wcms_namecheck($username, $email){
$username = str_replace(' ', '_', $username); // Wandelt Leerzeichen in _ um
$username = strtolower($username); // Wandelt alle Buchstaben in Kleinbuchstaben um
$email = str_replace(' ', '_', $email);
$email = strtolower($email);
// Nur die Domain wird benötigt
$email = substr(strrchr($email, "@"), 1);
// Wronnay E-Mail-Check API-URL
$locked_email = file_get_contents('http://check.wronnay.net/locked_email.php?domain='.$email);
// Leerzeichen raus!
$locked_email = str_replace(' ', '', $locked_email);
// Wronnay Username-Check API-URL
$locked_username = file_get_contents('http://check.wronnay.net/locked_username.php?username='.$username);
// Leerzeichen raus!
$locked_username = str_replace(' ', '', $locked_username);
// Default Wert für den Check setzen
$found = false;
// Username: Check
if($locked_username == 'true') {
$found = true;
}
// E-Mail-Check
elseif($locked_email == 'true') {
$found = true;
}
return $found;
}
?>