Salut Klaus,
je ne crois pas que SPIP-Liste gère les bounces.
J'ai trouvé un petit script qui permet de vérifier les mails :
Il utilise 2 fonctions :
- getmrr() te permet d'éliminer tous les hosts farfelus.
- Ensuite, si le host existe, tu établis une connection vers le
destinataire avec fsockopen()sur le port 25 du host, tu te présentes
(envoi de "Hello") et tu t'identifies (ton adresse mail). Tu recuperes
le code de retour et si c'est OK, tu sais que l'adresse mail est
valide.
Par contre ça risque de mal marcher en mutualisé car le serveur peut
être blacklisté.
Autre variante pour getmrr(), plus fiable parait-il :
<?php exec("dig MX domaine.com", $resultat); ?>
Mais le tableau retourné est un peu complexe à traiter..
Voici le script :
<?php
//*****************************************
// cette fonction accepte deux paramètres en entrée :
// - l'adresse mail à teste : $mail
// - une adresse mail valide et déclarée autorisée sur le serveur ou
est executé le script : $monMail
// en sortie, on recupère un code :
// - 0 : essayer ulterieurement
// - 1 : adresse mail valide
// - -1 : adresse mail invalide
// - 2 : ce cas n'a pas été prévu dans le script (normalement, ne
doit pas arriver)
//*****************************************
function testMail($mail,$monMail) {
$resultat=-1;
$erreur=false;
$addr=explode("@",$mail);
if(getmxrr($addr[1],$hosts,$weight)) {
foreach($hosts as $host) { // on va tester tous les MX
$Connect = @fsockopen($host,25,$errno,$errstr);
if($Connect) {
$reponse1=substr(fgets($Connect, 1024),0,1); //seul le
premier caractère de la reponse nous interesse
fputs ($Connect, "HELO {$_SERVER['HTTP_HOST']}\r\n");
$reponse2 = substr(fgets ( $Connect, 1024 ),0,1);
//seul le premier caractère de la reponse nous interesse
fputs ($Connect, "MAIL FROM: <".$monMail.">\r\n");
$reponse3 = substr(fgets ( $Connect, 1024 ),0,1);
//seul le premier caractère de la reponse nous interesse
fputs ($Connect, "RCPT TO: <".$mail.">\r\n");
$reponse4 = substr(fgets ($Connect, 1024),0,1); //seul
le premier caractère de la reponse nous interesse
if($reponse1==2 && $reponse2==2 && $reponse3==2 &&
$reponse4==2) return(1); // c'est bon, l'adresse mail est valide
else if ($reponse1==5 || $reponse2==5 || $reponse3==5
|| $reponse4==5) $erreur=true; // l'adresse est invalide
else if ($reponse1==3 || $reponse2==3 || $reponse3==3
|| $reponse4==3) $resultat=3; // demande en cours de traitement,
vraisemblablement timeout un peu long
else if ($reponse1==4 || $reponse2==4 || $reponse3==4
|| $reponse4==4) $resultat=0; // erreur temporaire, faudrat re-essayer
else $resultat=0; // bon, on essayera plus tard
}
}
//si on arrive ici, c'est qu'il y a une erreur ou une
indisponibilité/erreur temporaire
if($resultat==0) return(0); // au moins un MX à signalé une
erreur temporaire, ça vaut le coup de re-essayer plus tard
else if($resultat==3) return(0); // vraisemblablement timeout
un peu long, ça vaut le coup de re-essayer plus tard
else if($erreur) return(-1); // l'adresse mail à de forte
chance d'être incorrecte
else return(2);
} else {
return(-1);
}
}
?>
.Gilles
2009/3/19 klaus++ <klaus@spip.de>:
Salut,
est-ce que vous savez si SPIP-Listes gère les bounces? Dans le temps j'ai
été séduit par l'intégration avec SPIP mais depuis je me suis rendu compte
que certains projet la gestion on besoin d'une gestion automatique des
bounces.
Merci pour vos renseignements,
klaus++
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone