Passer au contenu
Yuva

Yuva Email Worker pour Cloudflare

E-mail de support via Cloudflare.Aucun serveur de messagerie à gérer.

Cloudflare® Email Routing reçoit le courrier de vos adresses de support, et le Yuva Email Worker open source remet chaque message à Yuva, signé. Il arrive dans votre boîte partagée sous forme de conversation à laquelle votre équipe répond.

Ce que c'est

Email Routing en première ligne

Cloudflare Email Routing devient le MX de votre domaine et reçoit le courrier. Yuva n'écoute pas SMTP : il n'y a donc aucun serveur de messagerie à installer ni à maintenir à jour.

Un petit Worker open source

Le Yuva Email Worker lit le message brut et l'enveloppe, signe la requête et l'envoie à Yuva. L'analyse, le regroupement en fils et les décisions anti-spam restent sur le serveur.

De vraies conversations

Un e-mail envoyé à une adresse de support ouvre ou poursuit une conversation dans la boîte, et l'équipe répond depuis le même panneau que pour le chat et les messages de l'app.

Comment un message va du client à votre équipe

  1. 1Un client écrit à l'une de vos adresses de support, par exemple support@example.com.
  2. 2Cloudflare Email Routing reçoit le message et le transmet au Yuva Email Worker.
  3. 3Le Worker signe le message brut, les deux adresses de l'enveloppe et un horodatage avec HMAC-SHA256 sous un secret que vous partagez avec Yuva, puis les envoie à /ingress/email sur votre serveur Yuva.
  4. 4Yuva vérifie la signature et que l'horodatage est dans une fenêtre de 5 minutes avant de lire le message. Une requête à la signature erronée est refusée.
  5. 5Yuva trouve le canal e-mail de l'adresse du destinataire et rattache le message, grâce à In-Reply-To et References, à la conversation à laquelle il appartient. Tout le reste ouvre une nouvelle conversation. Une réponse rouvre la conversation.
  6. 6Votre équipe répond dans le panneau. La réponse part par le compte SMTP propre au canal e-mail, comme Amazon SES, Postmark ou votre propre relais, depuis la même adresse et dans le même fil. Les réponses ne passent pas par le Worker.

Les refus parviennent à l'expéditeur

Quand Yuva refuse définitivement un message, par exemple pour une adresse inconnue, un expéditeur bloqué ou un message trop volumineux, le Worker le rejette et l'expéditeur reçoit une erreur SMTP permanente avec le motif de Yuva.

Si Yuva est injoignable

Si Yuva répond par une erreur serveur, ne répond pas en 20 secondes ou est injoignable, le Worker peut transférer le message à une adresse de votre choix, à condition que vous définissiez FALLBACK_FORWARD. Cette adresse doit être une destination vérifiée dans Email Routing. Le message arrive alors comme un simple transfert et n'apparaît pas dans Yuva. Sans FALLBACK_FORWARD, la remise échoue avec une erreur et le serveur expéditeur peut réessayer plus tard.

Configurez-le en quelques étapes

Il vous faut un serveur Yuva et un compte Cloudflare qui gère le domaine.

  1. 1

    Dans Yuva, ouvrez Réglages → votre boîte → Canaux → E-mail et ajoutez l'adresse de support. Définissez un secret sur le serveur et redémarrez-le :

    YUVA_INGRESS_SECRET=<openssl rand -hex 32>
    YUVA_INGRESS_AUTHSERV_ID=mx.cloudflare.net
  2. 2

    Déployez le Worker sur votre compte Cloudflare, avec le même secret :

    cd edge
    bun install
    bunx wrangler login
    bunx wrangler secret put INGRESS_SECRET
    bunx wrangler deploy --var YUVA_URL:https://support.example.com
  3. 3

    Dans le tableau de bord Cloudflare, ouvrez votre domaine → Email → Email Routing et activez-le. Cloudflare ajoute ses enregistrements MX et SPF.

  4. 4

    Sous Routing rules, envoyez chaque adresse de support vers le Worker yuva-edge. Pour un canal fourre-tout, faites pointer la règle fourre-tout vers lui.

  5. 5

    Envoyez un message de test et regardez la conversation apparaître dans le panneau.

  6. 6

    Facultatif : conservez le courrier pendant une panne en ajoutant une adresse de repli à la commande de déploiement :

    bunx wrangler deploy --var YUVA_URL:https://support.example.com --var FALLBACK_FORWARD:you@example.org

Email Routing devient le MX du domaine : utilisez donc un domaine ou un sous-domaine qu'aucun autre serveur de messagerie ne traite.

Lire le guide d'installation →

Pas lié à Cloudflare

Le Worker est une façon d'appeler /ingress/email. N'importe quel serveur de messagerie ou relais peut envoyer le message brut avec les mêmes en-têtes signés, et un serveur de messagerie qui délivre à une commande peut transmettre le message à yuva ingest-email par un tube. Le format de la requête est documenté dans le README du Worker.

Questions et réponses

Dois-je gérer un serveur de messagerie ?

Pas pour le courrier entrant. Yuva n'écoute pas SMTP ; Cloudflare Email Routing reçoit le courrier et le Worker le transmet. Les réponses nécessitent un compte SMTP pour le canal e-mail, comme Amazon SES, Postmark ou votre propre relais.

Que se passe-t-il quand Yuva est en panne ?

Avec FALLBACK_FORWARD défini, le message est transféré à cette adresse à la place. Sans lui, la remise échoue et le serveur expéditeur peut réessayer. Les messages que Yuva refuse volontairement, comme le courrier vers une adresse inconnue, sont rejetés et non transférés.

Quels domaines et adresses puis-je utiliser ?

Tout domaine que vous gérez dans Cloudflare et dont aucun autre serveur ne traite le courrier, car Email Routing en devient le MX. Chaque canal e-mail a une adresse, ou l'adresse fourre-tout *@example.com pour toutes les adresses du domaine qu'aucun canal ne possède exactement. Une sous-adresse comme support+billing@example.com arrive dans le canal de support@example.com.

Quelle taille peut avoir un message ?

Un message peut peser jusqu'à 25 Mio pièces jointes comprises, ce qui est la limite de Cloudflare Email Routing. Yuva conserve jusqu'à 50 pièces jointes par message, chacune dans la limite de taille des pièces jointes du serveur (25 Mio par défaut) et parmi les types autorisés ; il ignore le reste.

Quelqu'un peut-il falsifier du courrier vers mon serveur Yuva ?

Yuva refuse toute requête sans signature HMAC valide ou dont l'horodatage s'écarte de plus de 5 minutes, avant de lire le corps. Gardez le secret pour vous.

Yuva utilise-t-il le résultat DMARC de Cloudflare ?

Oui, quand vous définissez YUVA_INGRESS_AUTHSERV_ID sur mx.cloudflare.net. Yuva lit alors le verdict DMARC qu'ajoute Email Routing. Une nouvelle conversation qui échoue à DMARC est marquée comme spam.

Cloudflare, le logo Cloudflare et Cloudflare Workers sont des marques et/ou des marques déposées de Cloudflare, Inc. aux États-Unis et dans d'autres juridictions. Yuva est un projet open source indépendant, ni affilié à Cloudflare ni approuvé par elle.