Rebonds

Gestion des rebonds (bounces) ou erreurs SMTP en utilisant l’API Newsletter newsletter/feedback pour désabonner une adresse mail qui n’est plus valide. Ce plugin s’adresse uniquement aux envois directs sur un serveur SMTP.

Installation

Le plugin Rebonds s’installe comme tous les plugins. Il nécessite le plugin Newsletters ainsi que l’extension IMAP de votre PHP.

Utilisations

Le plugin Rebonds vient en complément du plugin Mailshot pour traiter les erreurs SMTP (rebonds ou bounces) lors de l’envoi des info-lettres. Seuls les échecs de type “soft bounces” (4.X.X) ou “hard bounces” (5.X.X), respectivement une erreur temporaire (l’adresse est valide) ou définitive (l’adresse n’est pas valide), sont traités.
Ce plugin s’adresse aux envois directs sur un serveur SMTP et non par les services d’un prestataire (mailjet...) dont les erreurs sont gérées directement dans le plugin Mailshot.

La cinématique est la suivante:

  • Lecture IMAP des emails dans la boite aux lettres qui reçoit les échecs (bounces) SMTP
  • Recherche du code rejet SMTP (status) du type 4.X.X ou 5.X.X
  • Recherche du destinataire d’origine (original-recipient) du type destinataire@domaine.ext
  • Recherche des campagnes d’envoi correspondantes
  • Exécution de l’API Newsletter newsletter/feedback

Les adresses mail concernées sont alors désabonnées des listes de diffusion correspondantes.

Configuration

Connexion IMAP à la boite aux lettres

  • La chaîne de connexion au serveur de messagerie est du type imap.hebergeur.ext:993/ssl/novalidate-cert. Voir avec votre hébergeur le nom/port du serveur IMAP de messagerie. Si besoin consulter la documentation php.
  • L’utilisateur est l’adresse email qui collecte les messages d’erreur SMTP
  • Le mot de passe pour se connecter à la boite aux lettres
  • Le dossier est la boite de réception courante, par défaut INBOX
  • La fréquence de consultation de la boite aux lettres est définie en heure

Notification d’échec de remise du message

  • L’expéditeur permet de limiter la lecture des emails à ceux concernant les erreurs SMTP (postmaster...). En son absence, tous les messages de la boite aux lettres seront lus.
  • Le préfixe code erreur est une chaîne de caractères unique qui précède (au plus près) le statut d’erreur SMTP (X.X.X) et permet de le retrouver dans le corps du message
  • Le préfixe destinataire est une chaîne de caractères unique qui précède (au plus près) le destinataire d’origine du message en échec (email) et permet de le retrouver dans le corps du message
    Exemple sur un extrait du message d’échec reçu (bounce)
    Reporting-MTA: dns; smtp.serveur.ext
    X-Postfix-Queue-ID: 3B6DE280868
    X-Postfix-Sender: rfc822; expediteur@serveur.ext
    Arrival-Date: Thu, 01 May 2025 08:47:18 +0200 (CEST)
    Final-Recipient: rfc822;destinataire@domaine.ext
    Original-Recipient: rfc822;destinataire@domaine.ext
    Action: failed
    Status: 5.7.26
    
  • Le préfixe du code rejet pourra alors être Status => 5.7.26
  • Le préfixe du code destinataire pourra alors être : Original-Recipient => destinataire@domaine.ext (même si ’rfc822’ s’intercale entre les deux)

Campagnes d’envoi

La durée définit la profondeur de recherche des rebonds (échecs SMTP) dans la boite aux lettres après le début d’ouverture de la dernière campagne d’envoi. Elle est définie en nombre de jours.

Tester la configuration

Il est possible de tester la configuration de la connexion IMAP dans le formulaire de bas de page. En cas d’anomalie, le message indiquera l’erreur rencontrée, dans le cas contraire, le nombre de message de type “bounce” en attente de traitement.

Traitement périodique

Le traitement est lancé par le Cron SPIP sur la tâche imap_rebonds. Les logs sont écrites dans le fichier tmp/log/rebonds.log

Discussion

One discussion

  • 1

    Ciao

    Excellente initiative, je pense que c’est une très bonne idée de pouvoir gérer les bounces.
    Cela semble simple mais efficace, merci

    • Merci @cam.laft de ton retour sympa. J’ai quelques améliorations dans les tuyaux en attente de test “grandeur nature” pour les passer sur la zone, notamment remettre en “non lu” les messages ouverts mais sans y avoir trouvé le destinataire ou le code erreur. Cela simplifie aussi les quelques tatonnements de réglage au départ.
      Je suis également preneur de toute anomalie et/ou proposition d’amélioration sur le plugin...
      a+
      JMarc

    Reply to this message

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom