par
Hywan » 27 oct. 2008, 21:06
Hey

,
On peut apprécier 4 niveaux de validation pour une adresse e-mail. Du niveau le plus tolérant au plus strict, sachant que le suivant a besoin du précédent pour être effectué. On aurait : vérification de la syntaxe, de l'existence du serveur MX, s'il existe un serveur SMTP, et enfin si l'adresse existe et est activée sur ce serveur.
Premièrement donc, pour vérifier la syntaxe, on peut utiliser le module
filter qui n'est pas toujours activé/installé, ou une expression régulière qui aurait cette forme :
Attention à ne pas oublier les .museum

.
Ensuite, pour vérifier si le serveur existe, il suffit de prendre le domaine de l'adresse e-mail. Ainsi, toto.net est le domaine de
[email protected]. Il ne reste qu'à utiliser la fonction getmxrr() et d'observer le résultat. Si tu es sur Windows, la fonction a de forte chance d'être désactivée. Si tu as accès à la couche système, tu peux utiliser la ligne de commande suivante :
C'est une astuce, on est sur Windows, on fait comme on peut.
Une fois le serveur MX obtenu, on peut vérifier qu'il existe un serveur SMTP associé à ce serveur. Naïvement, on ouvrirait un flux vers une adresse TPC. Par exemple : tcp://<adresse MX>, sur le port 25. Si aucune erreur n'est apparue, on continue.
Dernière étape donc, une fois connecté sur le serveur MX via TCP, on peut envoyer une requête SMTP. On enverrait plutôt VRFY qui sert à vérifier l'existence ou l'activation d'une adresse e-mail. Bien sûr, il faut se présenter avant (EHLO) et on oublie pas de quitter (QUIT). Attention toutefois, tous les serveurs n'activent pas la requête VRFY (ça peut être utilisé à des fins de spam lié à du
brute force et des attaques DOS —
Deny of Service et pas l'autre là

).
Voilà, c'est en gros les 4 étapes pour valider une adresse e-mail. La dernière étape a peu de chance de passer,
i.e. d'être validée à cause de la désactivation pratiquement systématique de la commande VRFY d'SMTP. Donc en général, je m'en tiens avec la 3ème étape. Si tu es sur un site avec de forte montée en charge, c'est à écarter à cause des
timeout qui peuvent devenir assez long. Donc on écarte aussi l'étape 2. Il ne reste que l'étape 1 qui est trivial et assure quand même de la bonne forme du mail, mais pas de son existence.
Hey :),
On peut apprécier 4 niveaux de validation pour une adresse e-mail. Du niveau le plus tolérant au plus strict, sachant que le suivant a besoin du précédent pour être effectué. On aurait : vérification de la syntaxe, de l'existence du serveur MX, s'il existe un serveur SMTP, et enfin si l'adresse existe et est activée sur ce serveur.
Premièrement donc, pour vérifier la syntaxe, on peut utiliser le module [i]filter[/i] qui n'est pas toujours activé/installé, ou une expression régulière qui aurait cette forme : [code]#^([a-z0-9_\-\.]+)@([a-z0-9_\-\.]+)\.([a-z]{2,6})$#i[/code] Attention à ne pas oublier les .museum ;-).
Ensuite, pour vérifier si le serveur existe, il suffit de prendre le domaine de l'adresse e-mail. Ainsi, toto.net est le domaine de
[email protected]. Il ne reste qu'à utiliser la fonction getmxrr() et d'observer le résultat. Si tu es sur Windows, la fonction a de forte chance d'être désactivée. Si tu as accès à la couche système, tu peux utiliser la ligne de commande suivante : [code]nslookup -type=MX <domain> 2>null[/code] C'est une astuce, on est sur Windows, on fait comme on peut.
Une fois le serveur MX obtenu, on peut vérifier qu'il existe un serveur SMTP associé à ce serveur. Naïvement, on ouvrirait un flux vers une adresse TPC. Par exemple : tcp://<adresse MX>, sur le port 25. Si aucune erreur n'est apparue, on continue.
Dernière étape donc, une fois connecté sur le serveur MX via TCP, on peut envoyer une requête SMTP. On enverrait plutôt VRFY qui sert à vérifier l'existence ou l'activation d'une adresse e-mail. Bien sûr, il faut se présenter avant (EHLO) et on oublie pas de quitter (QUIT). Attention toutefois, tous les serveurs n'activent pas la requête VRFY (ça peut être utilisé à des fins de spam lié à du [i]brute force[/i] et des attaques DOS — [i]Deny of Service[/i] et pas l'autre là ;-)).
Voilà, c'est en gros les 4 étapes pour valider une adresse e-mail. La dernière étape a peu de chance de passer, [i]i.e.[/i] d'être validée à cause de la désactivation pratiquement systématique de la commande VRFY d'SMTP. Donc en général, je m'en tiens avec la 3ème étape. Si tu es sur un site avec de forte montée en charge, c'est à écarter à cause des [i]timeout[/i] qui peuvent devenir assez long. Donc on écarte aussi l'étape 2. Il ne reste que l'étape 1 qui est trivial et assure quand même de la bonne forme du mail, mais pas de son existence.