web-dev-qa-db-fra.com

Validation des emails

J'utilise un système de gestion de la relation client avec environ 50 000 contacts et je souhaite vraiment prendre au sérieux les destinataires des informations que nous envoyons. Une des nombreuses étapes à suivre consiste à valider une adresse électronique.

Est-ce qu’écrire un script pings sur le serveur serait suffisant? Je cherche à éliminer les vrais rebonds difficiles de la liste. Des choses comme domaine ne sont plus valides ou une adresse e-mail qui n’est clairement que du pur déchet ([email protected]) <- exemple.

1
dasickle

La première étape consisterait à vérifier le domaine pour identifier les échangeurs de messagerie à l'aide de la commande ...

nslookup -q=mx domain.com

Vous devriez recevoir une réponse semblable à ...

Non-authoratative answer:
domain.com mail exchanger = 0 mx1.domain.com
domain.com mail exchanger = 0 mx2.domain.com

NB: Le nombre d'enregistrements renvoyés correspondra au nombre d'enregistrements MX dans le fichier de zone de domaines.

Maintenant que vous connaissez l'adresse des échangeurs de courrier, la prochaine étape serait de vous connecter à cet échangeur ...

telnet mx1.domain.com 25

Vous devriez recevoir une réponse semblable à

Connected to mx1.domain.com 25
Escape character is '^]'.
220 mx1.domain.com ESMTP

Commander

helo hi

Réponse

250 mx1.domain.com

Commander

mail from <[email protected]>

Réponse

250 2.1.0 Ok

Commander

rcpt to: <[email protected]>

Maintenant, la réponse suivante vous dira si l'adresse email existe ou non sur le serveur ...

550 5.1.1 <[email protected]>: Recipient address rejected: Unknown user in virtual alias table

Commander

quit

Réponse

221 2.0.0 Bye

Fondamentalement, cette séquence de commandes et de réponses a imité les mêmes séquences de commandes et de réponses que celles que votre serveur SMTP exécuterait pour envoyer un courrier électronique à quelqu'un, mais uniquement aux premières étapes. En faisant cette vérification, vous obtiendrez une réponse pour voir si l'adresse e-mail existe ou non. Si c'est le cas, l'adresse e-mail est valide (mais ne signifie pas qu'elle appartient à l'utilisateur que vous attendez de l'être), mais si vous obtenez une réponse d'erreur 550 lors de la vérification rcpt to, cela signifie que l'adresse e-mail n'existe pas actuellement sur le serveur de messagerie. Vous devez uniquement cocher l'un des échangeurs de courrier avec cette séquence de commandes, car tous les échangeurs de courrier doivent renvoyer les mêmes données et utiliser une table d'alias d'adresses commune pour le même nom de domaine.

Cela peut être scripté, mais dépasse un peu le cadre de ProWebmasters SE et peut être fait dans la langue de votre choix. En gros, en encapsulant le tout dans une fonction qui renvoie une valeur booléenne, vous pouvez exécuter la vérification. Si l'une des vérifications (pas de domaine, pas d'enregistrement MX, erreur SMTP 550) est renvoyée, la vérification est fausse et la vérification est réputée avoir échoué. l'adresse e-mail n'est pas valide et ne recevra pas d'e-mails à ce moment-là.

2
Chris Rutherfurd