Yuva Email Worker para Cloudflare
E-mail de suporte pelo Cloudflare.Nenhum servidor de e-mail para executar.
O Cloudflare® Email Routing recebe o e-mail dos seus endereços de suporte, e o Yuva Email Worker, de código aberto, entrega cada mensagem ao Yuva, assinada. Ela chega à sua caixa de entrada partilhada como uma conversa que a sua equipa responde.
O que é
Email Routing na frente
O Cloudflare Email Routing passa a ser o MX do seu domínio e recebe o e-mail. O Yuva não escuta SMTP, por isso não há servidor de e-mail para instalar nem manter atualizado.
Um pequeno Worker de código aberto
O Yuva Email Worker lê a mensagem bruta e o envelope, assina a pedido e a envia ao Yuva. A análise, o agrupamento em threads e as decisões sobre spam ficam no servidor.
Conversas de verdade
O e-mail para um endereço de suporte abre ou continua uma conversa na caixa de entrada, e a equipa responde do mesmo painel do chat e das mensagens do app.
Como uma mensagem vai do cliente até a sua equipa
- 1Um cliente escreve para um dos seus endereços de suporte, por exemplo support@example.com.
- 2O Cloudflare Email Routing recebe a mensagem e a transmite ao Yuva Email Worker.
- 3O Worker assina a mensagem bruta, os dois endereços do envelope e um carimbo de data/hora com HMAC-SHA256 usando um segredo que partilha com o Yuva, e os envia para /ingress/email no seu servidor Yuva.
- 4O Yuva confere a assinatura e se o carimbo de data/hora está dentro de 5 minutos antes de ler a mensagem. Uma pedido com assinatura errada é recusada.
- 5O Yuva encontra o canal de e-mail do endereço do destinatário e agrupa a mensagem, por In-Reply-To e References, na conversa a que ela pertence. Qualquer outra coisa abre uma nova conversa. Uma resposta reabre a conversa.
- 6A sua equipa responde no painel. A resposta é enviada pela conta SMTP do próprio canal de e-mail, como Amazon SES, Postmark ou o seu próprio relay, do mesmo endereço e na mesma thread. As respostas não passam pelo Worker.
As recusas chegam ao remetente
Quando o Yuva recusa uma mensagem em definitivo, por exemplo por endereço desconhecido, remetente bloqueado ou mensagem grande demais, o Worker a rejeita e o remetente recebe um erro SMTP permanente com o motivo do Yuva.
Se o Yuva estiver inacessível
Se o Yuva responder com um erro de servidor, não responder em 20 segundos ou estiver inacessível, o Worker pode encaminhar a mensagem para um endereço que escolher, desde que defina FALLBACK_FORWARD. Esse endereço precisa ser um destino verificado no Email Routing. A mensagem chega então como um encaminhamento comum e não aparece no Yuva. Sem FALLBACK_FORWARD, a entrega falha com um erro e o servidor remetente pode tentar de novo mais tarde.
Configure em poucos passos
Você precisa de um servidor Yuva e de uma conta Cloudflare que gerencie o domínio.
- 1
No Yuva, abra Definições → a sua caixa de entrada → Canais → E-mail e adicione o endereço de suporte. Defina um segredo no servidor e reinicie-o:
YUVA_INGRESS_SECRET=<openssl rand -hex 32> YUVA_INGRESS_AUTHSERV_ID=mx.cloudflare.net
- 2
Faça o deploy do Worker na sua conta do Cloudflare, com o mesmo segredo:
cd edge bun install bunx wrangler login bunx wrangler secret put INGRESS_SECRET bunx wrangler deploy --var YUVA_URL:https://support.example.com
- 3
No painel do Cloudflare, abra o seu domínio → Email → Email Routing e ative-o. O Cloudflare adiciona os respetivos registos MX e SPF.
- 4
Em Routing rules, envie cada endereço de suporte ao Worker yuva-edge. Para um canal catch-all, aponte a regra catch-all para ele.
- 5
Envie uma mensagem de teste e veja a conversa aparecer no painel.
- 6
Opcional: guarde o e-mail durante uma queda adicionando um endereço de reserva ao comando de deploy:
bunx wrangler deploy --var YUVA_URL:https://support.example.com --var FALLBACK_FORWARD:you@example.org
O Email Routing passa a ser o MX do domínio, por isso utilize um domínio ou subdomínio que nenhum outro servidor de e-mail trate.
Ler o guia de configuração →Sem amarras ao Cloudflare
O Worker é uma forma de chamar /ingress/email. Qualquer servidor de e-mail ou relay pode enviar a mensagem bruta com os mesmos cabeçalhos assinados, e um servidor de e-mail que entrega a um comando pode canalizar a mensagem para yuva ingest-email. O formato da pedido está documentado no README do Worker.
Perguntas e respostas
Preciso executar um servidor de e-mail?
Não para e-mail de entrada. O Yuva não escuta SMTP; o Cloudflare Email Routing recebe o e-mail e o Worker a transmite. As respostas precisam de uma conta SMTP para o canal de e-mail, como Amazon SES, Postmark ou o seu próprio relay.
O que acontece quando o Yuva está fora do ar?
Com FALLBACK_FORWARD definido, a mensagem é encaminhada a esse endereço. Sem ele, a entrega falha e o servidor remetente pode tentar de novo. As mensagens que o Yuva recusa de propósito, como e-mail para um endereço desconhecido, são rejeitadas, não encaminhadas.
Quais domínios e endereços posso usar?
Qualquer domínio que gere no Cloudflare e cujo e-mail nenhum outro servidor trate, porque o Email Routing passa a ser o MX dele. Cada canal de e-mail tnum endereço, ou o catch-all *@example.com para todo endereço do domínio que nenhum canal tenha exatamente. Um subendereço como support+billing@example.com chega ao canal de support@example.com.
Qual o tamanho máximo de uma mensagem?
Uma mensagem pode ter até 25 MiB com os anexos, que é o limite do Cloudflare Email Routing. O Yuva guarda até 50 anexos por mensagem, cada um dentro do limite de tamanho de anexo do servidor (25 MiB por padrão) e dos tipos permitidos; o restante é descartado.
Alguém pode falsificar e-mails para o meu servidor Yuva?
O Yuva recusa qualquer pedido sem assinatura HMAC válida ou com carimbo de data/hora fora por mais de 5 minutos, antes de ler o corpo. Mantenha o segredo só para si.
O Yuva usa o resultado de DMARC do Cloudflare?
Sim, quando define YUVA_INGRESS_AUTHSERV_ID como mx.cloudflare.net. O Yuva lê então o veredito DMARC que o Email Routing adiciona. Uma nova conversa que falha no DMARC é marcada como spam.
Cloudflare, o logotipo da Cloudflare e Cloudflare Workers são marcas comerciais e/ou marcas registadas da Cloudflare, Inc. nos Estados Unidos e em outras jurisdições. O Yuva é um projeto independente de código aberto, sem vínculo com a Cloudflare nem aprovação dela.