Skip to content
Engineering

Domaines et Emails : Comment Fonctionne le Routage dans les Boîtes de Réception API

| | 14 min de lecture
Domaines et Emails : Comment Fonctionne le Routage dans les Boîtes de Réception API
Domains and Emails: How Routing Works in API Inboxes

Si vous développez une automatisation qui “attend un email”, la partie difficile n’est rarement l’analyse HTML. La partie difficile est le routage : comment un message adressé à quelque-chose@votre-domaine arrive de manière déterministe dans la bonne boîte de réception API, à chaque fois, sous les tentatives répétées, la concurrence, et les cas limites SMTP étranges.

Ce guide détaille comment les domaines et les emails interagissent dans les produits de boîtes de réception API, ce qui se passe réellement lors de la livraison SMTP, et les modèles de routage qui rendent les workflows basés sur les boîtes de réception fiables pour les agents IA et l’assurance qualité.

Pour les formes de requête/réponse spécifiques à Mailhook et le contrat canonique, référez-vous au llms.txt du projet.

Routage d’emails 101 : le domaine contrôle la livraison

Une adresse email comporte deux parties :

  • Partie locale : tout ce qui précède @ (par exemple signup-test-42)
  • Domaine : tout ce qui suit @ (par exemple example.net)

Quand un expéditeur transmet un message, le domaine détermine l’email est livré sur internet, via DNS.

Les enregistrements MX décident quel serveur reçoit le courrier

Pour les emails entrants, les serveurs expéditeurs recherchent les enregistrements MX pour le domaine destinataire. Les enregistrements MX pointent vers des échangeurs de courrier (noms d’hôtes) qui acceptent le courrier pour ce domaine.

  • Si votredomaine.com a des enregistrements MX pointant vers un fournisseur de boîtes de réception API, les messages vers [email protected] seront livrés à ce fournisseur.
  • S’il n’y a pas d’enregistrements MX, de nombreux expéditeurs se rabattent sur l’enregistrement A/AAAA du domaine (comportement défini dans les standards SMTP et implémenté par les MTA), mais vous ne devriez pas compter sur ce comportement de repli pour le routage en production.

Si vous voulez le contexte des standards, voir RFC 5321 (SMTP) pour comment SMTP livre aux domaines et comment fonctionne “l’enveloppe”.

Les destinataires d’enveloppe comptent plus que les en-têtes

La livraison SMTP est basée sur l’enveloppe (la transaction SMTP), pas sur ce que l’email “dit” dans ses en-têtes visibles.

Deux champs sont couramment confondus :

  • Destinataire d’enveloppe : ce qui a été fourni au serveur SMTP dans RCPT TO:<destinataire@domaine>
  • En-tête To : ce qui est dans les en-têtes du message, qui peut inclure plusieurs adresses, des noms d’affichage, ou même être absent dans certains messages automatisés

Pour l’automatisation, le routage est presque toujours basé sur le destinataire d’enveloppe (ou un équivalent normalisé), car c’est la représentation la plus directe de “quelle adresse a reçu ce message.”

Comment fonctionne le routage dans les boîtes de réception API

Une fois que le fournisseur reçoit le message pour un domaine qu’il contrôle, il doit répondre à une question simple :

Sous quelle ressource de boîte de réception ce message doit-il être stocké ?

C’est là où le “routage de boîte de réception API” diffère de l’email grand public. Dans l’email grand public, le routage se termine à une boîte aux lettres. Dans une API de boîte de réception orientée automatisation, le routage se termine à un identifiant de boîte de réception programmable (souvent exposé comme un ID de boîte de réception) que votre code peut utiliser pour récupérer le message en JSON, s’abonner aux événements webhook, ou traiter les messages par lots.

Les trois couches de routage

La plupart des systèmes de boîtes de réception API peuvent être compris comme trois couches :

  1. Routage au niveau domaine (DNS) : amène le message au fournisseur
  2. Mappage destinataire-vers-boîte (logique applicative) : mappe partie-locale@domaine vers une ressource de boîte de réception
  3. Livraison vers votre code (API/webhooks) : expose le message stocké à vos systèmes

Mailhook est conçu autour de ce modèle d’automatisation, fournissant des boîtes de réception jetables créées par API, une sortie JSON normalisée, des notifications webhook, et un accès par polling (voir le contrat llms.txt pour les endpoints exacts et les formes de payload).

💡 Passez l’infrastructure SMTP et allez directement au routage fiable

Au lieu de construire vos propres serveurs mail et logique de routage, commencez avec les boîtes de réception programmables de Mailhook qui gèrent automatiquement la normalisation d’enveloppe, la conversion JSON, et la livraison webhook. Commencez à développer avec l’API →

Commencez gratuitement → ou Voir comment ça marche →

Diagramme montrant un flux de routage d’email entrant : l’expéditeur résout le MX pour un domaine, SMTP livre au fournisseur, le fournisseur mappe l’adresse destinataire vers un ID de boîte, stocke le message, puis notifie un webhook et supporte la récupération par polling en JSON pour un agent ou un exécuteur de test.

Modèles courants de mappage destinataire-vers-boîte

Il existe quelques modèles éprouvés pour mapper une adresse destinataire entrante vers une boîte de réception. Le bon choix dépend de si votre produit veut des adresses stables, des adresses tournantes, ou plusieurs adresses par boîte de réception.

Modèle A : “Clé de boîte encodée” dans la partie locale

La partie locale du destinataire encode directement une clé de routage, comme un ID de boîte de réception ou un token court qui peut être recherché.

Conceptuellement :

  • Vous créez une boîte de réception via API
  • L’API retourne une adresse email comme [email protected]
  • Quand le courrier arrive pour [email protected], le fournisseur décode ou recherche k9f3p2 et route le message vers la boîte de réception k9f3p2

Pourquoi c’est populaire :

  • Routage rapide avec un minimum de recherches en base de données (selon l’implémentation)
  • Les adresses peuvent être générées de manière sûre et unique
  • Fonctionne bien pour l’automatisation “une boîte par exécution”

Ce qu’il faut surveiller :

  • Si votre partie locale est traitée comme un identifiant, vous voulez qu’elle soit non ambiguë sous les règles de normalisation (par exemple, changement de casse, suppression d’espaces, adressage plus). Les fournisseurs définissent typiquement des règles strictes ici.

Modèle B : Table d’alias (registre d’adresses)

Le fournisseur stocke une table de mappage de l’adresse email complète (ou destinataire normalisé) vers une boîte de réception.

Pourquoi c’est populaire :

  • Supporte plusieurs adresses par boîte de réception
  • Supporte les comportements “renommer”, “faire tourner”, ou “attacher nouvelle adresse” sans changer l’identifiant de boîte de réception

Ce qu’il faut surveiller :

  • Les tables de mappage doivent être indexées et résistantes sous la concurrence
  • Vous avez besoin d’une politique de normalisation claire pour ce qui compte comme “la même adresse”

Modèle C : Domaine catch-all avec marquage par message

Un domaine catch-all accepte n’importe quelle partie locale et route les messages basés sur des métadonnées supplémentaires (par exemple, un token ajouté par votre app dans un en-tête, ou une partie structurée du destinataire).

Pourquoi c’est utilisé :

  • Utile pour certains workflows d’ingestion (par exemple, adresses style “intake@…”)

Ce qu’il faut surveiller :

  • La corrélation passe de “l’adresse identifie uniquement la boîte” à “le message contient un corrélateur”, ce qui peut être moins déterministe sauf si vous contrôlez l’expéditeur.

Domaines partagés vs domaines personnalisés : ce qui change dans le routage

Les fournisseurs de boîtes de réception API offrent habituellement deux stratégies de domaine :

  • Domaines partagés : le fournisseur possède et exploite des domaines que vous pouvez utiliser immédiatement
  • Domaines personnalisés : vous routez un domaine que vous contrôlez vers le fournisseur (habituellement en configurant les enregistrements MX)

Mailhook supporte les domaines partagés et les configurations de domaines personnalisés (encore une fois, voir llms.txt pour les capacités autoritatives et détails d’intégration).

Une matrice de décision pratique

Choix Ce que vous contrôlez Adaptation typique Compromis opérationnels
Domaine partagé Juste le cycle de vie de boîte et la récupération Tests CI, automatisation QA, tâches d’agent de courte durée Configuration la plus rapide, mais la réputation du domaine et les contraintes de délivrabilité sont partagées avec d’autres locataires dans beaucoup de systèmes
Domaine personnalisé DNS pour courrier entrant (MX), plus votre réputation de domaine Staging ressemblant à la production, flux de marque, exigences de délivrabilité plus strictes Plus de configuration, mais limites de propriété de domaine plus claires et moins de surprises avec les listes blanches

Notes :

  • La délivrabilité est complexe et dépend du comportement de l’expéditeur, de la politique du récepteur, et de la réputation du domaine. Router un domaine personnalisé vous donne principalement le contrôle, pas une garantie.
  • Pour les tests, les domaines partagés sont souvent idéaux car ils réduisent la friction de configuration et gardent les environnements jetables.

Ce qui se passe réellement après que le fournisseur reçoit le message

Une fois la livraison SMTP terminée, la plupart des APIs de boîtes de réception orientées automatisation exécutent un pipeline d’ingestion qui ressemble à ceci :

  1. Accepter SMTP pour un destinataire sur un domaine géré
  2. Normaliser et analyser le message (en-têtes, structure MIME, corps texte et HTML, pièces jointes)
  3. Stocker le message et l’indexer sous un identifiant de boîte de réception
  4. Notifier les consommateurs en aval (événements webhook), et/ou l’exposer via une API de récupération

Le modèle de Mailhook (à haut niveau) est : recevoir l’email entrant, le convertir en JSON structuré, puis le rendre disponible via des webhooks et une API de polling, avec des payloads signés pour vous aider à valider l’authenticité.

Webhooks vs polling n’est pas du routage, mais ça affecte la “sémantique d’attente”

Le routage décide quelle boîte de réception reçoit le message. Les webhooks et le polling décident comment votre code apprend que le message est arrivé.

En automatisation, l’approche la plus robuste est habituellement :

  • Webhook d’abord pour la faible latence et le flux dirigé par événements
  • Polling de secours pour récupérer des échecs temporaires de webhook, déploiements, ou problèmes réseau

C’est là où les payloads webhook signés comptent : le fournisseur de boîte de réception vous dit “un message pour la boîte X existe”, donc votre récepteur devrait vérifier les signatures avant de traiter l’événement comme réel.

Si vous voulez une discussion de conception plus approfondie, les RFC définissent le transport d’email et le format de message (par exemple RFC 5322 pour les en-têtes de message et la structure du corps), mais la sémantique de livraison webhook est au niveau applicatif.

Modes d’échec de routage pour lesquels vous devriez concevoir

Même avec un DNS parfait, le routage peut échouer au niveau applicatif de manières qui rendent les tests instables ou les agents peu fiables.

1) Collisions dans les boîtes partagées (le problème du “mauvais message”)

Si vous réutilisez la même adresse destinataire à travers des exécutions parallèles, vous pouvez obtenir :

  • Plusieurs messages correspondants
  • Un ancien OTP réutilisé par accident
  • Un message d’une exécution différente qui satisfait par hasard un matcher lâche

La solution est la conception du routage : créer une boîte de réception isolée par exécution (ou par tentative), puis router vers elle en utilisant une adresse unique qui mappe vers cette boîte de réception.

2) Règles de normalisation ambiguës

Certains systèmes traitent Utilisateur@domaine et utilisateur@domaine comme le même destinataire. D’autres pas. Certains traitent l’adressage plus comme une partie locale distincte, d’autres l’enlèvent.

Pour une automatisation déterministe, vous voulez un fournisseur (ou politique interne) qui est explicite sur :

  • La gestion de la casse
  • Le comportement d’adressage plus
  • Le jeu de caractères autorisé pour les parties locales
  • La longueur maximale de partie locale

Si vous générez des adresses programmatiquement, gardez les parties locales conservatrices : minuscules, non ambiguës, et libres de caractères qui pourraient être transformés par des systèmes intermédiaires.

3) Destinataires multiples et transfert

Un seul email peut avoir plusieurs destinataires visibles (dans To:/Cc:) et peut aussi être transféré ou renvoyé.

Pour la correction de routage dans une boîte de réception API, préférez utiliser :

  • Le destinataire d’enveloppe (l’adresse réelle sur votre domaine qui a reçu l’email)
  • Une portée de boîte de réception étroite (boîte-par-exécution)
  • Un matcher de message qui inclut au moins un critère stable que vous contrôlez (par exemple, un token de corrélation inséré par votre app)

4) Tentatives répétées, doublons, et livraison dans le désordre

Les expéditeurs SMTP retentent. Votre app peut envoyer plusieurs emails de vérification. Les utilisateurs ou exécuteurs de test peuvent cliquer renvoyer. Les fournisseurs peuvent livrer les événements webhook plus d’une fois.

Le routage met le message dans la bonne boîte de réception, mais votre consommateur doit quand même être robuste :

  • Traiter les événements webhook comme “au moins une fois” sauf si documenté autrement
  • Dédupliquer en utilisant des identifiants de message stables dans le payload JSON
  • Préférer explicite “attendre un message correspondant à X dans un budget temps” plutôt que des sleeps fixes

Routage favorable aux agents : traiter l’identifiant de boîte comme la source de vérité

Pour les agents LLM, la meilleure amélioration de fiabilité est d’arrêter de penser “l’adresse email est l’identifiant” et à la place penser :

  • L’identifiant de boîte de réception (ID de boîte) est l’identifiant
  • L’adresse email est juste un pointeur routable qui livre le courrier dans cette boîte de réception

Ceci évite un anti-pattern courant : chercher dans une boîte aux lettres partagée pour “le dernier email” et espérer qu’il appartient à votre exécution.

Une interface minimale qui garde les agents en sécurité

Quand vous exposez l’email aux agents, gardez la surface d’outil petite et déterministe. Un modèle pratique ressemble à :

  • create_inbox() retourne un identifiant de boîte de réception et une adresse routable
  • wait_for_message(inbox_id, matcher, timeout) bloque jusqu’à ce qu’une correspondance arrive
  • get_message(inbox_id, message_id) récupère le JSON normalisé

Puis gardez le LLM focalisé sur seulement ce qu’il doit extraire (OTP, lien magique), pas sur le rendu HTML ou l’exploration du contenu brut.

Mailhook est construit autour de ces primitives (création de boîte de réception jetable, sortie JSON, webhooks, polling, payloads signés), donc vous pouvez implémenter ce style “d’email comme outil” sans faire tourner votre propre pile SMTP. Pour les champs exacts et endpoints, utilisez llms.txt de Mailhook.

💡 Donnez à vos agents IA des outils email déterministes

Implémentez le modèle boîte-par-exécution avec les boîtes de réception jetables programmables de Mailhook. Vos agents obtiennent des messages JSON propres, des notifications webhook, et un routage isolé—pas de collisions de boîte aux lettres partagée. Voir le guide d’intégration agent IA →

Commencez gratuitement pour agents IA → ou Voir les exemples d’intégration →

Une checklist de routage avant de livrer

Utilisez ceci comme une vérification de cohérence quand vous câblez domaines et emails dans un harnais d’automatisation :

  • Décider de la stratégie de domaine : domaine partagé pour la vitesse, domaine personnalisé pour le contrôle.
  • S’assurer que le routage DNS est correct : les enregistrements MX pour votre domaine personnalisé pointent où vous attendez.
  • Utiliser boîte-par-exécution (ou boîte-par-tentative) pour éliminer la diaphonie.
  • Traiter le destinataire d’enveloppe comme la clé de routage, pas l’en-tête To:.
  • Vérifier les signatures webhook avant d’agir sur les événements.
  • Implémenter le polling de secours pour qu’un webhook manqué ne casse pas une exécution.
  • Dédupliquer les messages et écrire des matchers qui sont assez étroits pour éviter les faux positifs.
  • Garder la rétention et la journalisation minimales, l’email contient souvent des données sensibles.

Où Mailhook s’adapte

Si vous voulez construire ce modèle de routage sans exploiter des serveurs mail, Mailhook fournit des boîtes de réception jetables programmables via API, livre les emails reçus comme JSON structuré, et supporte les webhooks temps réel plus une API de polling, avec des payloads signés pour la sécurité et le traitement par lots d’emails.

Pour intégrer sans deviner, commencez avec la spec canonique : llms.txt Mailhook. Vous pouvez aussi explorer le produit sur Mailhook.

email-automation smtp-routing api-design webhooks dns-configuration

Articles connexes