Luís Peixoto
Ativo

Dead Letter

Onde os emails vão descansar

Docker Hub
  • Go
  • SMTP
  • Docker
  • Next.js
  • REST API

Sobre

O Deadletter é um pequeno SMTP sink autocontido, desenhado para desenvolvimento local e testes. Em vez de enviar emails para provedores SMTP reais, as aplicações enviam-nos para o Deadletter. Cada mensagem é capturada exatamente uma vez como um ficheiro .eml bruto mais metadados imutáveis, e indexada em memória para poder ser inspecionada, reproduzida e observada através de uma API HTTP simples ou de uma interface web.

O sistema de ficheiros é a fonte de verdade. O estado em memória existe apenas para suportar inspeção rápida, métricas derivadas, timelines e contadores de replay. O Deadletter é intencionalmente mínimo: sem dependências externas, sem caixas de correio falsas e sem risco de entregar emails acidentalmente a utilizadores reais.

Funcionalidades

Captura SMTP
Captura todos os emails enviados para a porta 1025 como ficheiro .eml bruto com metadados JSON imutáveis. Zero configuração, zero risco.
Interface Web
Uma interface web limpa e focada no programador na porta 8025 para navegar emails capturados, ver cabeçalhos, conteúdo e metadados.
Replay de Email
Reenviar qualquer email capturado para um servidor SMTP real para testar regras de encaminhamento, templates e pipelines de entrega.
API REST
API HTTP completa para listar, inspecionar, exportar e reproduzir emails. Integra com qualquer pipeline CI/CD ou framework de testes.
Ferramenta CLI
Uma CLI leve (deadletterctl) para scripting contra a API HTTP. Listar, mostrar, reproduzir e exportar emails a partir do terminal.
Política de Retenção
Retenção configuravel em minutos controla quanto tempo as mensagens sao mantidas. Limpeza pode ser acionada manualmente ou correr automaticamente.

Como Começar

Docker
docker run -d \
  --name deadletter \
  -p 1025:1025 \
  -p 8025:8025 \
  -v "$PWD/data:/data" \
  peixotomdb/deadletter:latest
SMTP
localhost:1025
HTTP
localhost:8025

Referência API

MétodoCaminhoDescrição
GET/healthEstado geral, versao, uptime, metricas
GET/emailsListar metadados de emails (mais recentes)
GET/emails/{id}Metadados de um email
GET/emails/{id}/rawFicheiro .eml bruto
GET/config/replayLer configuração de replay
PUT/config/replayAtualizar config de replay
POST/replayReenviar um email capturado
GET/eventsStream SSE com notificacoes

CLI

deadletterctl
# list all emails
go run ./cmd/deadletterctl list

# inspect metadata
go run ./cmd/deadletterctl show <id>

# replay / export
go run ./cmd/deadletterctl replay <id>
go run ./cmd/deadletterctl export <id> eml
go run ./cmd/deadletterctl export <id> json