[MAIL] stocker les adresses emails qui ne fonctionnent pas dans une bd

stocker les adresses emails qui ne fonctionnent pas dans une bd [MAIL] - PHP - Programmation

Marsh Posté le 18-05-2007 à 10:08:48    

Bonjour a tous,
 
je suis en train de réaliser un systeme de tracking d'email afin de savoir qui lit les mail qui clique les liens contenu dans celui ci, en stockant dans la bdd l'email du destinataire. Jusque la pas de probleme..
 
Mais il faut aussi que je puisse stocker dans une autre table les email invalide ou qui ne fonctionne plus..
 
et la je n'ai rien trouver qui puisse m'aider a le faire.. si vous avez des idées, meme une petite piste je suis preneuse.... parce que je n'ai vraiment rien trouvé..
 
si vous souhaitez des precisions n'hesitez pas...
 
Merci a tous..


Message édité par c_lolly_pop1 le 18-05-2007 à 10:14:36
Reply

Marsh Posté le 18-05-2007 à 10:08:48   

Reply

Marsh Posté le 18-05-2007 à 10:51:49    

tu ne vas pas pouvoir distinguer un email invalide d'un email avec un bloqueur d'image :/

Reply

Marsh Posté le 18-05-2007 à 11:03:41    

... a oui .. je n'avais pas pensé a ca ...  
 
j'ai pensé au bloqueur d'image pour la lecture du mail, parce qu'en fait on considère  que quelqu'un qui n'affiche pas les images ne lit pas le mail ...  
 
mais ya pas moyen que le mail non délivré qui normalement renvoie un mailer daemon execute un script ... je ne sais pas si tu comprend ce que je veux dire .. lol .. mais je cherche des solutions ... :p

Reply

Marsh Posté le 18-05-2007 à 11:11:38    

en fait ca va dependre des provider de mail  
des fois tu aura un message te disant qu'il n'aura pas ete distribué, des fois non  
 
et le traitement du mail de retour n'est pas non plus super simple a mettre en place

Reply

Marsh Posté le 18-05-2007 à 11:15:22    

ouais ... bon .... en fait en gros c'est pas super faisable selon toi?

Reply

Marsh Posté le 18-05-2007 à 11:17:23    

j'aidu mettre ca en place, et tout au mieux, j'ai pu differencier les adresses qui avaietn afficher les images au moins une fois, de celles qui ne les avaient jamais ouvertes
 
 
j'avais testé avec les demandes d'accusé de reception ,mais ca saoulait les destinataire et c'etait assez souvent bloqué

Reply

Marsh Posté le 18-05-2007 à 11:22:52    

:(  :(  :(  bon ... ben je crois que je vais laisser tomber.. lol

Reply

Marsh Posté le 18-05-2007 à 11:39:26    

Si c'est pour obliger les gens à utiliser des adresses valides au moment de s'inscrire sur le site, tu peux faire le coup classique du mail contenant un "lien d'activation du compte".
 
Par contre, c'est sur que gérer les mails signalant des erreurs de distributions n'est pas facile. A mon ancien boulot, j'avais du utiliser une disaine de filtres succéssifs dans outlook pour trier la pluspart des mails. Malgrés ça j'en avais quand même qui étaient mal classé. En php, c'est encore plus difficile par ce qu'il faut séparer les différentes zones du mail avant de pouvoir y appliquer éfficacement des filtres.

Reply

Marsh Posté le 18-05-2007 à 11:41:56    

flo850 a écrit :

tu ne vas pas pouvoir distinguer un email invalide d'un email avec un bloqueur d'image :/


ben le mail invalide peut être détecté avec le protocole SMTP : tu contactes le serveur host de messagerie, et tu lui demandes des infos sur l'email en question. normalement, il te répond si elle n'existe pas.
=> ze soucy, c'est que tu peux pas passer par un relay, tous les serveurs ne vont pas toujours répondre, etc.
 
L'autre solution, c'est d'avoir une boîte aux lettres virtuelle que tu colles en adresse de réponse à ton mail envoyé. Tout courrier qui y entre provoque un ban immédiat de l'email. Le souci, c'est que si le gars répond ça le fait pas :D (d'un autre côté, quand on répond c'est généralement pour demander à se désinscrire :D)

Reply

Marsh Posté le 18-05-2007 à 11:43:37    

omega2 a écrit :

Par contre, c'est sur que gérer les mails signalant des erreurs de distributions n'est pas facile. A mon ancien boulot, j'avais du utiliser une disaine de filtres succéssifs dans outlook pour trier la pluspart des mails. Malgrés ça j'en avais quand même qui étaient mal classé. En php, c'est encore plus difficile par ce qu'il faut séparer les différentes zones du mail avant de pouvoir y appliquer éfficacement des filtres.


Moi j'ai réglé le problème, mon site envoie des mails avec mon adresse, donc quand j'ai 150 "return mail to sender" dans ma bal, je sais que j'ai 150 adresses à effacer de mon site :D

Reply

Marsh Posté le 18-05-2007 à 11:43:37   

Reply

Marsh Posté le 18-05-2007 à 11:51:20    

MagicBuzz > C'est clair que si ta boite mail ne sert qu'a ça, c'est plus facile, mais quand elle sert aussi à autre chose, ça se complique vu que les serveurs mails de certains FAI francais renvoyent des mails en francais, que les serveurs lotus notes ne renvois pas le même texte que les autres serveurs ...
Enfin bref ...
 
En passant, tu fais comment pour obtenir les infos d'un compte à un serveur smtp? Réponds moi par MP si c'est trop HS.

Reply

Marsh Posté le 18-05-2007 à 12:06:54    

MagicBuzz a écrit :

ben le mail invalide peut être détecté avec le protocole SMTP : tu contactes le serveur host de messagerie, et tu lui demandes des infos sur l'email en question. normalement, il te répond si elle n'existe pas.
=> ze soucy, c'est que tu peux pas passer par un relay, tous les serveurs ne vont pas toujours répondre, etc.
 
L'autre solution, c'est d'avoir une boîte aux lettres virtuelle que tu colles en adresse de réponse à ton mail envoyé. Tout courrier qui y entre provoque un ban immédiat de l'email. Le souci, c'est que si le gars répond ça le fait pas :D (d'un autre côté, quand on répond c'est généralement pour demander à se désinscrire :D)


 
et donc quand tu reçois un mail de type "la remise du message a ete repoussé, mais ne vous inquietez pas le client recevra son mail " , tu considere l'adresse invalide ?

Reply

Marsh Posté le 18-05-2007 à 12:15:26    

Ben attends, je recherche.
 
http://fr.wikipedia.org/wiki/Simpl [...] r_Protocol
 
=> Normalement, lorsque tu dis "RCPT <email>" le serveur répond "250 recipient ok". Si l'email n'est pas bonne, ou si la boite est pleine ou autre, tu es censé recevoir un autre code. Mais après, est-ce que tous les serveurs SMTP respectent la chose ?
 
Dans tous les cas, cela demande à écrire son propre module d'envoie d'email, histoire de faire le test au moment de l'envoi, plutôt que d'établir deux connection pour rien.

Reply

Marsh Posté le 18-05-2007 à 12:20:58    

D'après la norme : http://tools.ietf.org/html/rfc821#section-3.3


         The second step in the procedure is the RCPT command.
 
            RCPT <SP> TO:<forward-path> <CRLF>
 
         This command gives a forward-path identifying one recipient.
         If accepted, the receiver-SMTP returns a 250 OK reply, and
         stores the forward-path.  If the recipient is unknown the
         receiver-SMTP returns a 550 Failure reply.  This second step of
         the procedure can be repeated any number of times.
 
[...]
 
 
         This SMTP example shows mail sent by Smith at host Alpha.ARPA,
         to Jones, Green, and Brown at host Beta.ARPA.  Here we assume
         that host Alpha contacts host Beta directly.
 
            S: MAIL FROM:<Smith@Alpha.ARPA>
            R: 250 OK
 
            S: RCPT TO:<Jones@Beta.ARPA>
            R: 250 OK
 
            S: RCPT TO:<Green@Beta.ARPA>
            R: 550 No such user here
 
            S: RCPT TO:<Brown@Beta.ARPA>
            R: 250 OK
 
            S: DATA
            R: 354 Start mail input; end with <CRLF>.<CRLF>
            S: Blah blah blah...
            S: ...etc. etc. etc.
            S: <CRLF>.<CRLF>
            R: 250 OK


 
Il y a VRFY aussi, mais on dirait qu'il ne sert qu'à matcher le nom de l'utilisateur avec une email. Je ne sais pas s'il accepte une adresse email en entrée.
 


   3.3.  VERIFYING AND EXPANDING
 
      SMTP provides as additional features, commands to verify a user
      name or expand a mailing list.  This is done with the VRFY and
      EXPN commands, which have character string arguments.  For the
      VRFY command, the string is a user name, and the response may
      include the full name of the user and must include the mailbox of
      the user.  For the EXPN command, the string identifies a mailing
      list, and the multiline response may include the full name of the
      users and must give the mailboxes on the mailing list.
 
[...]
 
                    Example of Verifying a User Name
 
         Either
 
            S: VRFY Smith
            R: 250 Fred Smith <Smith@USC-ISIF.ARPA>
 
         Or
 
            S: VRFY Smith
            R: 251 User not local; will forward to <Smith@USC-ISIQ.ARPA>
 
         Or
 
            S: VRFY Jones
            R: 550 String does not match anything.
 
         Or
 
            S: VRFY Jones
            R: 551 User not local; please try <Jones@USC-ISIQ.ARPA>
 
         Or
 
            S: VRFY Gourzenkyinplatz
            R: 553 User ambiguous.


 
PS : Je réponds pas par MP, parceque je pense que c'est de loin la méthode la plus propre pour tester la validité d'un mail.

Reply

Marsh Posté le 18-05-2007 à 12:22:42    

sauf que si ton smtp est par exmeple smtp.wanadoo.fr

 

c'est lui que tu interroge, et je sais aps dans quelle mesure il est fait ses verifs (juste le domaine racine? tout le domain ? ou user@domain)

 

par exemple , tu envoi un mail a toto@compta.france.entreprise.com
est ce qu'il vérifié lexistence du .com ? celle de compta.france.entreprise.com ou celle detoto@compta.france.entreprise.com ?

 


edit : par rapport a ton exmepl , est ce que ca fonctionne aussi avec des domaines disjoint

Message cité 2 fois
Message édité par flo850 le 18-05-2007 à 12:23:23
Reply

Marsh Posté le 18-05-2007 à 13:02:36    

En cherchant j'ai finis par trouver une version francaise de la RFC : http://www.iprelax.fr/smtp/821tm.php
 
Visiblement, VRFY permet de vérifier l'existance d'un utilisateur. Par contre, le fait que l'adresse email soit utilisable pour cette vérification dépend de l'implantation du serveur SMTP.
La commande EXPN permet d'obtenir de la même maniére la liste des inscriptions à une liste de diffusion.
Ces deux commandes peuvent ne pas être implémenté (ca ne fait pas partie des spécifications minimales)
 
Pour RCPT, si j'ai bien compris le truc, ca indique juste que le serveur SMTP accepte d'envoyer le mail à ce destinataire là. On ne peut donc pas vérifier l'existance du destinataire s'il est hébergé sur un autre serveur vu qu'on aura une réponse positive s'il accepte de servir de relais et une négative s'il refuse et ce que l'adresse mail soit ou non valide.

Reply

Marsh Posté le 18-05-2007 à 13:54:36    

flo850 a écrit :

sauf que si ton smtp est par exmeple smtp.wanadoo.fr
 
c'est lui que tu interroge, et je sais aps dans quelle mesure il est fait ses verifs (juste le domaine racine? tout le domain ? ou user@domain)
 
par exemple , tu envoi un mail a toto@compta.france.entreprise.com
est ce qu'il vérifié lexistence du .com ? celle de compta.france.entreprise.com ou celle detoto@compta.france.entreprise.com ?
 
 
edit : par rapport a ton exmepl , est ce que ca fonctionne aussi avec des domaines disjoint


D'où le fait que je dis qu'il faut faire son propre service de SMTP, et se connecter manuellement au serveur final.
 
T'envoies le mail à "trucmuche@domain.com" => tu dois trouver sur quel serveur est hébergé cette email et interroger le domaine.
Faut regarder du côté des relais du coup, ou simplement interroger l'enregistrement MX de "domain.com" ;)

Reply

Marsh Posté le 18-05-2007 à 13:57:17    

flo850 a écrit :

sauf que si ton smtp est par exmeple smtp.wanadoo.fr
 
c'est lui que tu interroge, et je sais aps dans quelle mesure il est fait ses verifs (juste le domaine racine? tout le domain ? ou user@domain)
 
par exemple , tu envoi un mail a toto@compta.france.entreprise.com
est ce qu'il vérifié lexistence du .com ? celle de compta.france.entreprise.com ou celle detoto@compta.france.entreprise.com ?
 
 
edit : par rapport a ton exmepl , est ce que ca fonctionne aussi avec des domaines disjoint


Mon email est en "manga-torii.com"
Mon enregistrement MX est "shawt.net"
 
Avec une requête DNS pour retrouver le MX de manga-torii.com, tu trouves donc l'adresse du SMTP final.
 
Si shawt.net ne faisait qu'un relais vers "zozoll-online.com" alors il te le dirais dans la réponse au moment du VRFY ou RCPT : User not local, en indiquant quelle réelle email se cache derrière. A ce moment, tu récupère le DNS de l'email en question, et tu recommences.

Reply

Marsh Posté le 18-05-2007 à 14:01:58    

omega2 a écrit :

Ces deux commandes peuvent ne pas être implémenté (ca ne fait pas partie des spécifications minimales)


=> C'est pour ça que j'ai dit dès le départ que c'était pas forcément la solution la plus fiable. Ceci dit, si avec ça tu détectes que l'email n'est pas valide, tu peux être sûr et certain qu'elle ne l'est pas, ça va donc filtrer énormément, et éviter d'envoyer le mail pour rien.
 

omega2 a écrit :

Pour RCPT, si j'ai bien compris le truc, ca indique juste que le serveur SMTP accepte d'envoyer le mail à ce destinataire là. On ne peut donc pas vérifier l'existance du destinataire s'il est hébergé sur un autre serveur vu qu'on aura une réponse positive s'il accepte de servir de relais et une négative s'il refuse et ce que l'adresse mail soit ou non valide.


Effectivement. Mais s'il s'agit d'un relay, il doit te dire où il va relayer. A partir de là, tu peux interroger le serveur qui gère l'adresse utilisée pour le relai.
 
Donc dans tous les cas, si t'envoies un mail "toto@truc.com" via Wanadoo, le premier truc à faire, c'est déjà de trouver le MX de truc.com avant d'aller chercher à interroger Wanadoo, qui te répondra forcément qu'il va relayer ;)
 
Le problème, c'est que pour les grosses structures (ou les paranos comme le gars qui gère mon serveur de messagerie ;)), on va rapidement arriver à des relais internes, c'est à dire que le SMTP final n'est pas touchable : mail.shawt.net relai par exemple à serveur.zozoll-online.local, via une IP locale. Ainsi, impossible pour mon nom de domaine de savoir si duchmole@manga-torii.com existe ou non.
 
Edit : D'ailleurs c'est mieux, sur mon mail.shawt.net, un VRFY rençois direct un "permission denied" :D


Message édité par MagicBuzz le 18-05-2007 à 14:04:46
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed