Zruck zum Blog, du Zniachtl
Dez. 2020·2 Min. zum LesnVo da KI übersetzt

E-Mail-Adressen validiern

#done#integritaet#integrity#php#spam#validation#validieren

A (zugegebenermaßen: a von mir) oft valwendete Methode, um si vor E-Mail-Spam zu schützn, is, bei ana Registrierung einfach koa valide Mailadresse anzugebn. Unsagbar oft hob i mi scho ois sapdojapjdspefjfejfos@dfioshdfiosfho.de registriert, wenn i gwusst hob, es wird koa Validierungsmail rausgschickt, oda i brauch einfach nur kurz a poar Informationen, ohne dass i mei Mailadresse angebn wü und mi damit der Gfahr von SPAM aussetz. Des is durchaus legitim - ois Seitnbetreiber liegt uns aber dran, nur valide E-Mail-Adressen in unserem System zu hobn.

Wos kinnan mia tun, um des zu gwährleistn?

Ganz klar, a übliche Vorgehensweise is, a Verifizierungsmail rauszuschickn. Da Nutzer muass quasi via Double-Opt-In seine Mailadresse über an Link, der eam zuagschickt wird, validiern. Erst nach da Validierung hot da Nutzer Zugriff auf die gwünschten Daten. Diese Herangehensweise hot aber a an entscheidenden Nachteil: Selbst wenn da Nutzer a gültige E-Mail-Adresse angibt, kann's sei, dass er ned damit rechnet, a Validierungsmail zu kriagn, und dann gnervt davon is, dass er nochamoi an Link anklickn muass, wos er dann unter Umständen gor nimma tut und liaba auf die Informationen valzichtet.

Wos kann ma tun, wenn ma auf diese Verifizierungsmail valzichtn wü, aber trotzdem an gewissen Schutz davor hobn mecht, dass da Nutzer a gültige Mailadresse angibt?

Schritt 1: Validierung auf korrekte E-Mail-Syntax

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

Um do zumindest an rudimentären Schutz zu gwährleistn, lasst si die Mailadresse via

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

validiern.

Eingaben wia

  • asdadasd
  • asddasd@asdasd
  • .asd§@dfsdf

wern dadurch scho amoi aussortiert.

Schritt 2: Validierung vom MX Record

Darum soi's in dem Artikel eigentlich gehn. Der MX Record (Mail Exchange Resource Record) sogt aus, unter wöchem FQDN (Full Qualified Domain Name) da Mail-Server zu erreichen is. Mei MX-Record zeigt zum Beispiel auf den Mailserver von Uberspace, weil i über Uberspace meine Mails valorbeit und gegebenenfalls weiterleit. Wenn zu ana Domain koa MX Record hinterlegt is oda die Domain einfach ned gfunden wern kann, dann kann da Empfänger a koa E-Mails über diese Domain empfangen (klingt logisch, is a so). Wia prüfen mia des Ganze?

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

Wenn checkdnsrr (wos für Check DNS Resource Record steht) also koan gültigen MX Record findet, is die Mailadresse ungültig und soit nochamoi obgfrogt wern.

Koan Bock auf Spam, wüst aber trotzdem Mails kriagn? Schon amoi über temporäre Mailadressen nochgedacht?

NeicherNull-Conditional-OperatorElterMySQL: NULL ois 0 ausgeben