- Go
- SMTP
- Docker
- Next.js
- REST API
Über
Deadletter ist ein kleiner, eigenständiger SMTP-Sink, der für die lokale Entwicklung und für Tests konzipiert ist. Anstatt E-Mails an echte SMTP-Anbieter zu senden, schicken Anwendungen sie an Deadletter. Jede Nachricht wird genau einmal als rohe .eml-Datei plus unveränderliche Metadaten erfasst und im Speicher indexiert, damit sie über eine einfache HTTP-API oder Web-UI inspiziert, wiedergegeben und beobachtet werden kann.
Das Dateisystem ist die Wahrheitsquelle. Der In-Memory-Zustand dient nur der schnellen Inspektion, abgeleiteten Metriken, Zeitleisten und Replay-Zählern. Deadletter ist bewusst minimal: keine externen Abhängigkeiten, keine falschen Postfächer und kein Risiko, E-Mails versehentlich an echte Nutzer zu senden.
Funktionen
- SMTP-Erfassung
- Erfasst jede E-Mail an Port 1025 als rohe .eml-Datei mit unveränderlichen JSON-Metadaten. Keine Konfiguration, kein Risiko.
- Web-Oberfläche
- Eine saubere, entwicklerorientierte Web-Oberfläche an Port 8025 zum Durchsuchen erfasster E-Mails, Anzeigen von Headern, Inhalt und Metadaten.
- E-Mail-Replay
- Senden Sie jede erfasste E-Mail erneut an einen echten SMTP-Server, um Weiterleitungsregeln, Templates und Zustellpipelines zu testen.
- REST-API
- Vollständige HTTP-API zum Auflisten, Inspizieren, Exportieren und Wiedergeben von E-Mails. Integriert sich in jede CI/CD-Pipeline oder jedes Test-Framework.
- CLI-Werkzeug
- Ein leichtgewichtiges CLI (deadletterctl) für Scripting gegen die HTTP-API. E-Mails auflisten, anzeigen, wiedergeben und exportieren.
- Aufbewahrungsrichtlinie
- Konfigurierbare Aufbewahrung in Minuten steuert, wie lange Nachrichten aufbewahrt werden. Bereinigung kann manuell ausgelost werden oder lauft automatisch.
Erste Schritte
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
API-Referenz
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /health | Gesamtstatus, Version, Uptime, Metriken |
| GET | /emails | E-Mail-Metadaten auflisten (neueste zuerst) |
| GET | /emails/{id} | Einzelne E-Mail-Metadaten |
| GET | /emails/{id}/raw | Rohe .eml-Datei |
| GET | /config/replay | Replay-Konfiguration lesen |
| PUT | /config/replay | Replay-Konfiguration aktualisieren |
| POST | /replay | Erfasste E-Mail erneut senden |
| GET | /events | SSE-Stream mit Benachrichtigungen |
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