mxout — Manual técnico

O mxout recebe um e-mail por HTTP (POST /send), assina com DKIM e entrega direto no MX do destinatário via SMTP+STARTTLS. É um relay HTTP→SMTP enxuto, multi-domínio e stateless.

Não é um servidor de recebimento (inbound). Não é multi-tenant. Não tem fila persistente — três tentativas em memória e segue.

Visão geral

Versão 0.2.0
Linguagem Rust (edition 2021)
Entrada HTTP POST /send (JSON)
Saída SMTP direto no MX do destino (porta 25, STARTTLS oportunístico)
Assinatura DKIM RSA-SHA256, relaxed/relaxed, por domínio
Estado Stateless (nada persiste em disco)
Imagem Container scratch (~6 MB, binário estático, não-root)

O problema e a solução

Aplicações precisam enviar e-mail transacional pelos próprios domínios, sem depender de um relay terceiro (SES, Mailgun) nem montar um Postfix completo.

O mxout resolve isso: uma API HTTP simples por trás de um token, que roteia pelo domínio do remetente, assina com a chave DKIM daquele domínio e entrega direto. Cada envio é rastreável ponta a ponta por um message_id.

Arquitetura

  app cliente
      │  POST /send  (JSON, HTTP, X-Auth-Token)
      ▼
  ┌─────────┐   resolve MX    ┌──────────────┐  SMTP+STARTTLS  ┌────────────┐
  │  mxout  │ ───────────────▶│  DNS (MX/A)  │ ───────────────▶│ MX destino │
  └─────────┘                 └──────────────┘                 └────────────┘
      │ assina DKIM pelo domínio do envelope-from
      │ retry efêmero em memória: 5s / 10s / 30s
      │ emite ledger JSON (1 linha por evento) no stdout

O ledger — uma linha JSON por evento do ciclo de vida no stdout — é o mecanismo de controle e auditoria. Como nada persiste, o log é a fonte de verdade do que foi enviado. Ver Ledger.

Por onde começar

Você quer... Vá para
Entender o que é e quando usar O que é o mxout
Enviar o primeiro e-mail Primeiro envio (5 min)
Adicionar um domínio Adicionar um domínio
Integrar via API POST /send
Monitorar/auditar envios Ledger
Configurar DNS Configurar DNS

Requisitos

  • Um servidor com IP de saída na porta 25 liberada e PTR/rDNS configurado.
  • Controle do DNS dos domínios remetentes (para publicar DKIM, SPF, DMARC).
  • Docker para rodar a imagem, ou o binário estático.
By Borlot.com.br on 01/06/2026