Luís Peixoto
Aktiv

Dead Letter

Wo E-Mails zur Ruhe kommen

Docker Hub
  • 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

MethodePfadBeschreibung
GET/healthGesamtstatus, Version, Uptime, Metriken
GET/emailsE-Mail-Metadaten auflisten (neueste zuerst)
GET/emails/{id}Einzelne E-Mail-Metadaten
GET/emails/{id}/rawRohe .eml-Datei
GET/config/replayReplay-Konfiguration lesen
PUT/config/replayReplay-Konfiguration aktualisieren
POST/replayErfasste E-Mail erneut senden
GET/eventsSSE-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