- 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étodo | Caminho | Descrição |
|---|---|---|
| GET | /health | Estado geral, versao, uptime, metricas |
| GET | /emails | Listar metadados de emails (mais recentes) |
| GET | /emails/{id} | Metadados de um email |
| GET | /emails/{id}/raw | Ficheiro .eml bruto |
| GET | /config/replay | Ler configuração de replay |
| PUT | /config/replay | Atualizar config de replay |
| POST | /replay | Reenviar um email capturado |
| GET | /events | Stream 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