E-Mails validieren

Eine (zugegeben: auch von mir) oft verwendete Methode um sich vor E-Mail Spam zu schützen ist es, bei einer Registrierung einfach keine valide Mailadresse anzugeben. Unsagbar oft habe ich mich schon als sapdojapjdspefjfejfos@dfioshdfiosfho.de registriert wenn ich wusste, es wird keine Validierungsmail rausgeschickt oder ich brauche einfach nur kurz ein paar Informationen, ohne dass ich meine Mailadresse angeben will und mich damit der Gefahr von SPAM aussetze.
Das ist durchaus legitim – als Seitenbetreiber ist uns aber daran gelegen, nur valide E-Mail – Adressen in unserem System zu haben.

Was können wir tun, um das zu gewährleisten?

Ganz klar, eine übliche Vorgehensweise ist es, eine Verifizierungsmail rauszusenden. Der Nutzer muss quasi via Double-Opt-In seine Mailadresse über einen Link, der ihm zugeschickt wird, validieren. Erst nach der Validierung hat der Nutzer Zugriff auf die gewünschten Daten.
Diese Herangehensweise hat aber auch einen entscheidenden Nachteil: Selbst wenn der Nutzer eine gültige E-Mail Adresse angibt kann es sein, dass er nicht damit rechnet eine Validierungsmail zu erhalten und ist dann genervt davon, dass er nochmal einen Link anklicken muss, was er dann unter Umständen gar nicht mehr tut und lieber auf die Informationen verzichtet.

Was kann man tun, wenn man auf diese Verifizierungsmail verzichten will, aber trotzdem einen gewissen Schutz davor haben möchte, dass der Nutzer eine gültige Mailadresse angibt?

Schritt 1: Validierung auf korrekte E-Mail Syntax

E-Mail – Adressen sind (zumindest im Internet bei Kommunikation über die üblichen Mailserver via SMTP) nach dem Muster
localpart@domainpart.tld
aufgebaut, also beispielsweise
meine-fancy-mailadresse@devdave.de

Um hier zumindest einen rudimentären Schutz zu gewährleisten, lässt sich die Mailadresse via

1
2
3
if (filter_var($email_address, FILTER_VALIDATE_EMAIL)) {
echo "Mailadresse gültig";
}

validieren.
Eingaben wie

  • asd@asd
  • asd.de
  • asd@asdsadasd.xoxoxo

werden dadurch schonmal rausgefiltert.

Schritt 2: Validierung des MX Records

Darum soll es in diesem Artikel eigentlich gehen.
Der MX Record (Mail Exchange Resource Record) sagt aus, unter welchem FQDN (Full Qualified Domain Name) der Mail-Server zu erreichen ist.
Mein MX-Record zeigt beispielsweise auf den Mailserver von Uberspace, weil ich via Uberspace meine Mails verarbeite und ggfs. weiterleite.
Wenn zu einer Domain kein MX Record hinterlegt ist oder die Domain einfach nicht gefunden werden kann, dann kann der Empfänger auch keine E-Mails über diese Domain empfangen (klingt logisch, ist auch so).
Wie prüfen wird das ganze?

1
2
$valid = checkdnsrr($email_address,”MX”);
echo "Mailadresse " . $valid ? "un" : "" . " gültig";

Wenn checkdnsrr (Was für Check DNS Resource Record) steht also keinen gültigen MX Record findet, ist die Mailadresse ungültig und sollte erneut abgefragt werden.

Keinen Bock auf Spam, willst aber trotzdem Mails erhalten? Schon mal über temporäre Mailadressen nachgedacht?

 

Kommentar schreiben

Kommentare
Impressum | Datenschutz