Yuva Email Worker para Cloudflare
E-mail de suporte pelo Cloudflare.Nenhum servidor de e-mail para rodar.
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 compartilhada como uma conversa que sua equipe 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, então 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 requisição 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 equipe responde do mesmo painel do chat e das mensagens do app.
Como uma mensagem vai do cliente até a sua equipe
- 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 repassa 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 você compartilha 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 requisição 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.
- 6Sua equipe responde no painel. A resposta é enviada pela conta SMTP do próprio canal de e-mail, como Amazon SES, Postmark ou 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 você escolher, desde que você 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 Configurações → 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 seu domínio → Email → Email Routing e ative. O Cloudflare adiciona os registros MX e SPF dele.
- 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, então use 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 requisição está documentado no README do Worker.
Perguntas e respostas
Preciso rodar 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 o repassa. As respostas precisam de uma conta SMTP para o canal de e-mail, como Amazon SES, Postmark ou 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 você gerencia 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 tem um 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 requisição 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 você.
O Yuva usa o resultado de DMARC do Cloudflare?
Sim, quando você define YUVA_INGRESS_AUTHSERV_ID como mx.cloudflare.net. O Yuva então lê 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 registradas 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.