Guide

Les emails catch-all expliqués : ce que les domaines accept-all cachent à la vérification

Pourquoi SMTP répond oui à toutes les adresses d’un domaine catch-all, comment les vérificateurs le détectent et quand garder ou exclure ces contacts B2B.

Une rangée de boîtes aux lettres colorées sur des poteaux en bois

En bref

Un domaine catch-all (accept-all) affirme à tout expéditeur que n’importe quelle boîte existe. Une vérification SMTP prouve donc que le domaine reçoit du courrier, jamais qu’une personne précise existe. Les vérificateurs le détectent en testant une adresse aléatoire : si elle est acceptée elle aussi, un résultat « valide » ne veut rien dire. Traitez ces adresses comme risquées : notez-les sur des indices, envoyez avec prudence et excluez celles sans historique.

Tôt ou tard, chaque expéditeur B2B se heurte à la même énigme. La liste est passée par la vérification, les adresses sont revenues correctes, et la campagne a quand même rebondi. Très souvent, la cause est un domaine catch-all : un serveur de messagerie d’entreprise qui dit oui à toutes les adresses, si bien que le contrôle censé protéger votre réputation d’expéditeur n’avait rien de réel à signaler.

Ce guide explique ce que signifie catch-all, pourquoi la vérification ne peut pas voir au-delà, comment BounceIntel détecte et note ces adresses, et les règles qui décident lesquelles méritent un envoi.

Ce que signifie catch-all (accept-all)

Un domaine catch-all, aussi appelé accept-all, est un domaine dont le serveur de messagerie accepte les messages pour n’importe quelle adresse de ce domaine. jane.doe@, j.doe@, sales-team@ et xq7k2@ reçoivent tous le même accueil, qu’une boîte portant ce nom existe ou non.

Les entreprises le configurent pour des raisons qui semblent raisonnables :

  • Ne pas perdre de courrier. Un client qui écorche le nom d’un employé atteint quand même quelqu’un, car les adresses inconnues arrivent dans une boîte partagée.
  • Le départ des salariés. Le courrier adressé aux personnes parties continue d’arriver quelque part au lieu de revenir en erreur chez les clients.
  • Les passerelles de sécurité. Certains services de filtrage placés devant les boîtes d’une entreprise acceptent tout d’abord et font le tri ensuite.
  • Une ancienne configuration que personne n’a regardée depuis des années.

Les configurations catch-all sont courantes sur les domaines d’entreprise et rares chez les grands fournisseurs grand public, c’est pourquoi le problème apparaît surtout dans les listes B2B.

Pourquoi SMTP dit toujours « oui »

La vraie vérification d’email repose sur une seule question posée via SMTP. Le vérificateur se connecte au serveur de messagerie du domaine, indique l’adresse avec RCPT TO et lit la réponse. Un serveur normal cherche la boîte, puis l’accepte ou la refuse comme inconnue. Pour la séquence complète, voir comment fonctionne la vérification d’email.

Un serveur catch-all saute cette recherche, ou la repousse à plus tard. Il répond 250, accepté, pour chaque destinataire. Ce qui arrive ensuite à un vrai message dépend de la configuration :

  • Il est livré dans une boîte partagée que quelqu’un lira peut-être.
  • Il est accepté puis renvoyé en erreur, quelques minutes ou quelques heures plus tard, sous la forme d’un message de rebond distinct, bien après la fin de la conversation du vérificateur.
  • Il est supprimé sans bruit.

Le deuxième cas est le plus dangereux. Un rebond qui arrive tard compte quand même contre vous auprès de votre service d’emailing, et il indique toujours aux fournisseurs de messagerie que vous écrivez à des adresses qui n’existent pas. Votre rapport de vérification était propre, et votre réputation a payé quand même.

Un éventail d’enveloppes ouvertes et de lettres manuscrites

Comment les vérificateurs le détectent

Puisque le serveur dit oui à l’adresse réelle, le vérificateur l’interroge sur une adresse qui n’existe certainement pas. BounceIntel le fait sur la même connexion SMTP que pour l’adresse soumise : il envoie un second RCPT TO pour une partie locale aléatoire de 15 caractères sur le même domaine. Aucun message n’est envoyé, ni dans un cas ni dans l’autre.

  • Si l’adresse aléatoire est refusée, le serveur vérifie réellement les boîtes, et son acceptation de votre adresse a un sens.
  • Si l’adresse aléatoire est acceptée, le domaine est catch-all, et l’acceptation de votre adresse ne dit rien sur cette boîte.

Pour quelques fournisseurs de messagerie dont les serveurs ont un comportement bien à eux, la sonde est ignorée et des règles propres au fournisseur s’appliquent à la place.

Dans la réponse de l’API, un catch-all détecté ressemble à ceci. C’est un résultat réel pour un nom inventé sur notre propre domaine, qui accepte le courrier pour n’importe quelle adresse :

{
  "input": "[email protected]",
  "is_reachable": "risky",
  "smtp": {
    "can_connect_smtp": true,
    "is_deliverable": true,
    "is_catch_all": true,
    "is_disabled": false,
    "has_full_inbox": false
  },
  "score": {
    "reason_codes": ["catch_all", "catch_all_high_risk"],
    "catch_all": {
      "severity": "high",
      "confidence": 55,
      "factors": ["catch_all:corporate_domain", "website:present", "auth_records:present"]
    }
  },
  "bounce_risk": { "action": "verify_manually" }
}

Remarquez smtp.is_deliverable: true. Le serveur a bien accepté l’adresse, et c’est justement la réponse qu’on ne peut pas prendre au pied de la lettre.

Pourquoi « valide » est un mensonge ici

Beaucoup d’outils de vérification présentent une adresse catch-all acceptée comme valide ou délivrable, parce que techniquement le serveur a dit oui. Mais le serveur dit la même chose d’un vrai salarié et d’un nom que vous avez inventé il y a trente secondes. Une étiquette qui donne la même réponse aux deux n’est pas une information. C’est une supposition déguisée en résultat.

Les dégâts sont prévisibles. Une liste passe la vérification, le taux de rebond grimpe malgré tout, et c’est le vérificateur qui est accusé. C’est pire encore avec les listes construites par déduction, quand quelqu’un a généré [email protected] pour chaque nom trouvé sur un site ou acheté un fichier de ce genre d’adresses. Sur un domaine catch-all, chaque supposition « se vérifie », et la liste paraît parfaite jusqu’au moment de l’envoi.

BounceIntel ne classe jamais une adresse catch-all comme sûre. is_reachable vaut risky, score.safe_to_send vaut false, et le code de raison catch_all explique pourquoi, afin qu’aucune partie de votre code ne la confonde avec une boîte confirmée.

Noter les catch-all et send_with_caution

Qualifier toutes les adresses catch-all de risquées est honnête, mais peu utile à lui seul : en B2B, une grande partie d’une liste parfaitement saine peut se trouver sur des domaines catch-all. BounceIntel évalue donc chaque adresse selon les indices qui l’entourent et le résume dans score.catch_all, sous la forme d’une severity (low, medium ou high), d’une valeur de confidence et des factors qui les justifient.

Le point de départ dépend du domaine. Un domaine d’entreprise commence en gravité élevée ; un fournisseur grand public gratuit commence en gravité faible. Les indices la font ensuite évoluer :

IndiceEffetFacteur
Votre compte a vu cette adresse revenir propre au moins 3 fois en 180 joursLa gravité passe à faibletenant_history:safe_repeat
Au moins 5 autres adresses au même format de nom vérifiées sur ce domaine dans votre compte en 180 joursLa gravité passe à faiblepattern:…:verified_matches
De 2 à 4 adresses de ce typeÉlevée devient moyennepattern:some_verified_matches
Le domaine a au moins un anÉlevée devient moyennedomain_age:established
Le domaine n’a pas de site webGravité fixée à élevéewebsite:missing
SPF ou DMARC est absentGravité fixée à élevéeauth_records:weak

La gravité est reprise sous forme de code de raison exploitable dans votre code : catch_all_low_confidence, catch_all_medium_confidence ou catch_all_high_risk. La recommandation de bounce_risk.action suit ensuite le risque global de l’adresse. Une adresse catch-all appuyée par de bons indices revient en général avec send_with_caution, une adresse avec peu d’indices avec verify_manually, et une adresse qui cumule d’autres mauvais signaux, comme une adresse générique sur un domaine sans site web, avec do_not_send.

send_with_caution veut dire exactement cela. L’adresse est probablement bonne, et elle doit quand même partir d’une manière qui limite les dégâts si elle ne l’est pas.

Règles B2B : garder ou exclure

La vérification vous fournit les indices. Ce que vous faites d’une adresse catch-all relève d’une politique, et il vaut la peine de l’écrire pour que toute l’équipe l’applique de la même façon. Voici les règles que nous recommandons.

Gardez l’adresse, et envoyez-lui dans un segment à part, quand :

  • elle provient d’un formulaire rempli par la personne elle-même, idéalement avec double opt-in, ou d’une vraie conversation ;
  • le contact a ouvert, cliqué ou répondu ces derniers mois ;
  • sa gravité est low ou medium, ou elle suit un format de nom déjà vérifié dans cette entreprise ;
  • elle appartient à une personne nommée, sur un domaine qui a un site web et SPF ou DMARC en place.

Excluez-la quand :

  • c’est une adresse générique comme info@ ou sales@ dans une liste froide, où les codes catch_all et role_account apparaissent ensemble ;
  • elle a été devinée, collectée par scraping ou achetée, quoi qu’en dise un vérificateur ;
  • sa gravité est high et vous n’avez aucun historique d’engagement avec elle ;
  • elle a déjà fait un hard bounce, ne serait-ce qu’une fois. Ne réessayez jamais un hard bounce.

Quand vous envoyez à des adresses catch-all :

  1. Placez-les dans un segment séparé de vos adresses confirmées, pour qu’un problème reste circonscrit.
  2. Commencez par un petit lot et regardez le taux de rebond avant d’envoyer le reste.
  3. Arrêtez-vous et analysez si les rebonds augmentent, au lieu d’envoyer tout le segment.
  4. Retirez immédiatement chaque hard bounce, de toutes les listes.
  5. Vérifiez à nouveau le segment avant la campagne suivante, car les indices de format sur lesquels repose le score s’accumulent à chaque vérification.

Testez vous-même une adresse catch-all

Dans votre code, lisez smtp.is_catch_all dans la réponse de POST /v1/check_email, ou dans chaque ligne d’un job en masse, et orientez vos décisions selon score.catch_all.severity et bounce_risk.action. La documentation de l’API décrit chaque champ, et la vérification en masse montre comment faire passer une liste entière par les mêmes contrôles.

FAQ

Les questions qu’on nous pose à ce sujet

Une adresse email catch-all est-elle valide ?

Peut-être. Le domaine accepte le courrier pour toutes les adresses, donc une vérification ne peut pas distinguer une vraie boîte d’une adresse inventée. Certaines atteignent une personne, d’autres une boîte partagée, et d’autres rebondissent plus tard ou disparaissent. « Risquée » est l’étiquette honnête.

Peut-on vérifier un email sur un domaine catch-all ?

Pas avec certitude via SMTP, car le serveur donne la même réponse pour chaque destinataire. On peut en revanche peser les indices autour de l’adresse : si elle suit un format de nom déjà confirmé sur ce domaine, votre propre historique avec elle et les signaux sur le domaine lui-même.

Comment les vérificateurs détectent-ils un domaine catch-all ?

Sur la même connexion que pour l’adresse réelle, le vérificateur interroge le serveur sur une adresse aléatoire du même domaine qui ne peut pas exister. Si le serveur l’accepte aussi, le domaine est catch-all. BounceIntel utilise une partie locale aléatoire de 15 caractères et indique le résultat dans smtp.is_catch_all.

Le test catch-all envoie-t-il un email à quelqu’un ?

Non. Le test s’arrête avant la transmission de tout message. On demande seulement au serveur s’il accepterait chaque destinataire, puis la connexion est fermée.

Faut-il envoyer aux adresses catch-all ?

Souvent oui, mais pas à l’aveugle. Envoyez à celles qui ont des indices favorables dans un segment séparé et plus petit, surveillez de près les rebonds et retirez toute adresse en hard bounce. Excluez les adresses catch-all sans engagement ni autre indice, surtout sur des listes achetées ou anciennes.

Comment repérer les adresses catch-all dans l’API BounceIntel ?

Lisez smtp.is_catch_all dans la réponse. L’adresse porte aussi le code de raison catch_all, un code de gravité (catch_all_low_confidence, catch_all_medium_confidence ou catch_all_high_risk) et un objet score.catch_all avec la gravité, une valeur de confiance et les facteurs qui l’expliquent.

Protégez votre réputation d’expéditeur avant le prochain envoi.

Vérifiez une liste, branchez l’API sur votre formulaire d’inscription et gardez les mauvaises adresses loin de vos campagnes.