[SPIP Zone] SPIP-Listes et bounces

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++

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

Le 20 mars 09 à 17:09, Gilles VINCENT a écrit :

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.

Si je ne m'abuse, pas mal de serveurs refuseront de répondre alors que l'adresse e-mail est valide, par précaution de sécurité.

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

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

-Nicolas

--
Nicolas HOIZEY

2009/3/20 Nicolas Hoizey <nicolas@hoizey.com>:

Le 20 mars 09 à 17:09, Gilles VINCENT a écrit :

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.

Si je ne m'abuse, pas mal de serveurs refuseront de répondre alors que
l'adresse e-mail est valide, par précaution de sécurité.

Ils refuseront si notre serveur n'est pas configuré correctement, ou
est blacklisté (souvent le cas en mutualisé).
Le telnet sur le port 25 est la base du protocole de messagerie (à ne
pas confondre avec un simple ping).

.Gilles

Gilles VINCENT a écrit :

> je ne crois pas que SPIP-Liste gère les bounces.
>
> J'ai trouvé un petit script qui permet de vérifier les mails

Bonjour,

à la question initiale de Klaus, j'aurai plutôt compris la gestion des bounces comme la gestion des retour d'erreurs après envoi (il me semble difficile de vérifier la validité des mails avant l'envoi).

Pour des mailings assez importants (en milliers d'adresses), la méthode de PHPlist marche bien : il gère les bounces en renseignant l'entête Return-Path avec un compte pop spécifique (bounces@domaine.tld).
Ce compte pop n'est pas lu manuellement, mais PHPlist le scanne régulièrement et incrémente un compteur sur chaque adresse mail qui a généré une erreur.
Au bout de n erreurs (5 par défaut), l'adresse est blacklistée.

--
Nico D.

2009/3/24 Nicolas Dorigny <nicolas.dorigny@laposte.net>:

à la question initiale de Klaus, j'aurai plutôt compris la gestion des
bounces comme la gestion des retour d'erreurs après envoi (il me semble
difficile de vérifier la validité des mails avant l'envoi).

Pour des mailings assez importants (en milliers d'adresses), la méthode de
PHPlist marche bien : il gère les bounces en renseignant l'entête
Return-Path avec un compte pop spécifique (bounces@domaine.tld).
Ce compte pop n'est pas lu manuellement, mais PHPlist le scanne
régulièrement et incrémente un compteur sur chaque adresse mail qui a généré
une erreur.
Au bout de n erreurs (5 par défaut), l'adresse est blacklistée.

Cette méthode ne fonctionne pas si le nom de domaine n'est pas valide,
ou qu'il n'y a pas de serveur de mail (ou toutes les erreurs de type
hard bounces).

Le fait de dialoguer avant l'envoi du mail permet de ne pas avoir ce
type d'erreurs (fiable sous réserve qu'on soit sur un vrai serveur de
messagerie, et pas un mutualisé, auquel cas on risque d'être
blacklisté par le serveur mail).

Les erreurs de type "soft bounces" (boite pleine, compte inexistant,
spam détecté..) peuvent en effet être assez facilement traitées en
scannant une boite mail de retour.

A mon avis les 2 traitements sont complémentaires.

---
.Gilles VINCENT

Gilles VINCENT a écrit :

Les erreurs de type "soft bounces" (boite pleine, compte inexistant,
spam détecté..) peuvent en effet être assez facilement traitées en
scannant une boite mail de retour.

A mon avis les 2 traitements sont complémentaires.
  

"en scannant une boite mail de retour" : je me prend à rêver : ce serait donc envisageable.
Si ça a été fait, je suis intéressé !!!

JJ

jjmeric a écrit :

Gilles VINCENT a écrit :

Les erreurs de type "soft bounces" (boite pleine, compte inexistant,
spam détecté..) peuvent en effet être assez facilement traitées en
scannant une boite mail de retour.

A mon avis les 2 traitements sont complémentaires.
  

"en scannant une boite mail de retour" : je me prend à rêver : ce serait donc envisageable.
Si ça a été fait, je suis intéressé !!!

Le plugin Push scanne déjà les bals.
JL

M... je ne suis pas très au fait des plugins, et j'ai du mal à trouver de l'info sur celui là dans spip-contrib.
Dans sedna, je vois que "faut pas pusher" est fait pour publier des articles à partir d'emails
donc effectivement il y a un lien avec ma question :
les emails sont envoyés à une boite mail, qui est elle-même scannée par un prog qui en fait des articles.
Tout ça peut m'intéresser
- la fonction de base, pour un site
- et... un détournement qui permettrait d'agir sur les "bounces", en particulier ceux reçus suite à des signatures de pétition.
Merci pour le |tuyau|
je suis preneur de plus d'info / aide
JJ

JLuc a écrit :

jjmeric a écrit :

Gilles VINCENT a écrit :

Les erreurs de type "soft bounces" (boite pleine, compte inexistant,
spam détecté..) peuvent en effet être assez facilement traitées en
scannant une boite mail de retour.

A mon avis les 2 traitements sont complémentaires.
  

"en scannant une boite mail de retour" : je me prend à rêver : ce serait donc envisageable.
Si ça a été fait, je suis intéressé !!!

Le plugin Push scanne déjà les bals.
JL

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

--
JJ Méric

http://surrealisme.ouvaton.org

jjmeric a écrit :

M... je ne suis pas très au fait des plugins, et j'ai du mal à trouver de l'info sur celui là dans spip-contrib.

Il a changé de nom :

les emails sont envoyés à une boite mail, qui est elle-même scannée par un prog qui en fait des articles.
Tout ça peut m'intéresser
- la fonction de base, pour un site
- et... un détournement qui permettrait d'agir sur les "bounces", en particulier ceux reçus suite à des signatures de pétition.

Le plus dur est d'ouvrir les boites et d'y lire les fichiers.
Selon les serveurs, les protocoles diffèrent un peu.
A l'époque j'avais dépiauté les rfc et autres doc serveurs
pour faire marcher sur apinc.
ça n'a pu que s'améliorer despuis !

Une fois les mails ouverts et lus, la contrib en fait des articles,
mais pourrait aussi bien en faire une gestion des mails en erreur
si c'est des mails arrivés en retour-erreur d'un envoi.

JLuc

Merci pour le |tuyau|
je suis preneur de plus d'info / aide

JLuc a écrit :

jjmeric a écrit :

Gilles VINCENT a écrit :

Les erreurs de type "soft bounces" (boite pleine, compte inexistant,
spam détecté..) peuvent en effet être assez facilement traitées en
scannant une boite mail de retour.

A mon avis les 2 traitements sont complémentaires.
  

"en scannant une boite mail de retour" : je me prend à rêver : ce serait donc envisageable.
Si ça a été fait, je suis intéressé !!!

Le plugin Push scanne déjà les bals.
JL

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

JLuc a écrit :

jjmeric a écrit :

M... je ne suis pas très au fait des plugins, et j'ai du mal à trouver de l'info sur celui là dans spip-contrib.

Il a changé de nom :
Pubemail : publication par email - SPIP-Contrib

le plugin fonctionne-t-il sous spip 2.06?

les emails sont envoyés à une boite mail, qui est elle-même scannée par un prog qui en fait des articles.
Tout ça peut m'intéresser
- la fonction de base, pour un site
- et... un détournement qui permettrait d'agir sur les "bounces", en particulier ceux reçus suite à des signatures de pétition.

Le plus dur est d'ouvrir les boites et d'y lire les fichiers.
Selon les serveurs, les protocoles diffèrent un peu.
A l'époque j'avais dépiauté les rfc et autres doc serveurs
pour faire marcher sur apinc.

tu peux détailler la procédure?

A+

rpapa a écrit :

Le plus dur est d'ouvrir les boites et d'y lire les fichiers.
Selon les serveurs, les protocoles diffèrent un peu.
A l'époque j'avais dépiauté les rfc et autres doc serveurs
pour faire marcher sur apinc.

tu peux détailler la procédure?

Je me souviens juste que c'est très pointilleux sur certains formats ou formalismes.
Mais le source a priori se souvient de tout !

JL

merci JLuc
je vais regarder ça - pour après mon projet de migration -
et m'attaquer au boîtes au lettres ... gmail ...
:frowning:
JJ

JLuc a écrit :

rpapa a écrit :

Le plus dur est d'ouvrir les boites et d'y lire les fichiers.
Selon les serveurs, les protocoles diffèrent un peu.
A l'époque j'avais dépiauté les rfc et autres doc serveurs
pour faire marcher sur apinc.

tu peux détailler la procédure?

Je me souviens juste que c'est très pointilleux sur certains formats ou formalismes.
Mais le source a priori se souvient de tout !

JL

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

--
JJ Méric

http://surrealisme.ouvaton.org