Zustellungsmodell
Truncus trennt die Transportschicht von der Kontrollebene. Diese Trennung erklärt, was "deterministische Zustellung" in der Praxis bedeutet.
Architektur
Transportschicht: AWS SES übernimmt die SMTP-Zustellung an die Empfänger-Mailserver.
Kontrollebene (EU): Truncus orchestriert Versendungen, speichert Zustellereignisse, erzwingt Idempotenz, verwaltet Replay und stellt terminalen Status bereit.
Ihr System interagiert ausschließlich mit der Kontrollebene. Die Transportschicht ist ein Implementierungsdetail.
Zustellungsablauf
- Sendeanfrage von Truncus empfangen
- Validierung (API-Key, Payload, Domain-Autorisierung)
- Transportversuch via AWS SES
- Terminaler Status aus SES-Rückmeldung ermittelt
- Ereignis in der EU (Frankfurt) gespeichert
- Webhook an Ihren Endpoint ausgelöst
Terminale Status
Jeder Versand endet in genau einem terminalen Status:
| Status | Bedeutung |
|---|---|
delivered | Vom Empfänger-Mailserver akzeptiert |
bounced | Vom Empfänger-Mailserver abgelehnt, mit Grund |
rejected | Vor Transportversuch blockiert, mit Grund |
delivered bedeutet, dass die Nachricht vom Mailserver des Empfängers akzeptiert wurde. Es garantiert keine Posteingang-Platzierung.
bounced enthält maschinenlesbare Gründe: mailbox_full, no_mx_record, mailbox_does_not_exist.
rejected erfolgt vor dem Zustellversuch: suppression_list, invalid_address, domain_not_verified.
Was Truncus nicht tut
- Keine impliziten Wiederholungen nach Bounce oder Rejection
- Kein Status-Merging — jeder Versand wird unabhängig getrackt
- Keine optimistischen Erfolgsmeldungen — SES-Ablehnungen werden weitergeleitet
Event-Speicherung
Alle Zustellereignisse werden in der EU (Frankfurt) gespeichert und sind über API oder Dashboard abfragbar. Ereignisse werden auf allen Plänen 90 Tage lang aufbewahrt.
Ereignisse sind auf Abruf wiederholbar.
Synchroner vs. asynchroner Status
Die API-Response enthält für die meisten Versendungen einen synchronen terminalen Status. Finales SES-Feedback ist asynchron und kann das gespeicherte Ereignis innerhalb von Sekunden aktualisieren.
Für Produktionssysteme empfehlen wir, den Zustellungsstatus über Webhooks statt über Polling der Send-Response zu konsumieren.