Ir para o conteúdo
Yuva

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

  1. 1Um cliente escreve para um dos seus endereços de suporte, por exemplo support@example.com.
  2. 2O Cloudflare Email Routing recebe a mensagem e a transmite ao Yuva Email Worker.
  3. 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.
  4. 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.
  5. 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.
  6. 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. 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. 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. 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. 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. 5

    Envie uma mensagem de teste e veja a conversa aparecer no painel.

  6. 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.