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 comopending),GET /domainseGET /domains/{dominio}/instructions. - Controle de rate limit:
GET /ratelimitePUT /ratelimit(cota por domínio, throttle de API e delay de envio). - IP allowlist:
GET /allowlistePUT /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
pendinge oGET /checko promove aactivequando DKIM, SPF e DMARC passam. DomíniopendingnoPOST /sendretorna403. - O
mxout.jsonpassou a ser gravável: a API atualiza domínios, limites e allowlist e persiste no próprio arquivo. Config antiga (semstatus) carrega comoactive.
[0.3.0] - 2026-06-02
Adicionado
- Validação de DNS embarcada:
mxout check [dominio](CLI) eGET /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_ipnomxout.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) +HEALTHCHECKna imagem, para a imagemscratchficar 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 pormessage_id— mecanismo de controle e auditoria. message_idpróprio, gerado por requisição, presente no headerMessage-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_DNSpara 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.jsone passou para a variável de ambienteMXOUT_AUTH_TOKEN. - Dependências atualizadas (axum 0.8, hickory-resolver, rustls 0.23, mail-builder 0.4).
Corrigido
DateeMessage-IDagora 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