Changelog

Formato baseado em Keep a Changelog.

[0.4.0] - 2026-06-07

Adicionado

  • Gestão de domínios via API (atrás do X-Auth-Token): POST /domains (gera o kit DKIM e registra o domínio como pending), GET /domains e GET /domains/{dominio}/instructions.
  • Controle de rate limit: GET /ratelimit e PUT /ratelimit (cota por domínio, throttle de API e delay de envio).
  • IP allowlist: GET /allowlist e PUT /allowlist (lista vazia = aberta).
  • Freios anti-produção no POST /send: cota por domínio (hora e dia → 429), throttle de API por IP (→ 429), envio serializado e delay forçado por mensagem.

Modificado

  • Domínio só envia depois de validado: um domínio novo nasce pending e o GET /check o promove a active quando DKIM, SPF e DMARC passam. Domínio pending no POST /send retorna 403.
  • O mxout.json passou a ser gravável: a API atualiza domínios, limites e allowlist e persiste no próprio arquivo. Config antiga (sem status) carrega como active.

[0.3.0] - 2026-06-02

Adicionado

  • Validação de DNS embarcada: mxout check [dominio] (CLI) e GET /check / GET /check/{dominio} (HTTP, atrás do X-Auth-Token). Confere DKIM (chave publicada bate com a privada), SPF (IP do servidor autorizado) e DMARC (existe e bem-formado) de cada domínio remetente.
  • Campo opcional public_ip no mxout.json (usado pelo check para avaliar o SPF).

[0.2.2] - 2026-06-01

Corrigido

  • Chave pública DKIM publicada em SubjectPublicKeyInfo (SPKI), não PKCS#1 — corrige DKIM=FAIL em validadores estritos como o Gmail.

[0.2.1] - 2026-06-01

Adicionado

  • Subcomando mxout healthcheck (autoverificação HTTP) + HEALTHCHECK na imagem, para a imagem scratch ficar saudável sob o orquestrador (Runner honra o HC da imagem).

[0.2.0] - 2026-06-01

Adicionado

  • Ledger de eventos write-only em JSON no stdout (target mxout::ledger), correlacionado por message_id — mecanismo de controle e auditoria.
  • message_id próprio, gerado por requisição, presente no header Message-ID (assinado por DKIM), no ledger e na resposta HTTP.
  • Autenticação por MXOUT_AUTH_TOKEN (variável de ambiente), com comparação em tempo constante.
  • MXOUT_DNS para definir o resolver DNS explicitamente (útil em containers sem /etc/resolv.conf).
  • Limite de 5 MiB no corpo do POST /send.
  • Imagem Docker scratch (binário estático musl, ~6 MB, não-root).

Modificado

  • Token de autenticação saiu do mxout.json e passou para a variável de ambiente MXOUT_AUTH_TOKEN.
  • Dependências atualizadas (axum 0.8, hickory-resolver, rustls 0.23, mail-builder 0.4).

Corrigido

  • Date e Message-ID agora são sempre gerados antes da assinatura DKIM, garantindo headers estáveis e assinados.

[0.1.0] - 2026-06-01

Adicionado

  • Versão inicial: POST /send, assinatura DKIM RSA-SHA256 por domínio, resolução de MX, entrega SMTP com STARTTLS oportunístico e retry em memória.
By Borlot.com.br on 01/06/2026