36. pepsi-stage-bounce¶
Schreibt eine Nachricht in eine Zustellungsstatusbenachrichtigung (DSN) um.
36.1. Rolle¶
pepsi-stage-bounce verwandelt eine Nachricht in eine RFC-3464-DSN — einen Fehler-Bounce oder (auf Anforderung) einen positiven oder einen Delay-Bericht. Eine Zustell-Stage routet eine fehlgeschlagene/zugestellte Nachricht über ihr BOUNCE_STAGE hierher. Die DSN wird unsigniert erzeugt und zu NEXT_STAGE weitergeschaltet (normalerweise pepsi-stage-dkim-sign, dann eine Zustell-Stage). Referenzen: pepsi-stage-bounce(1) / pepsi.conf(5).
36.2. Funktionen¶
Umschreiben an Ort und Stelle in eine DSN (RFC-3464-
multipart/report): Der Umschlagabsender wird zum Null-Absender<>, der Empfänger zum ursprünglichen Absender (state.srs.original, wenn pepsi-stage-srs einen festgehalten hat, sonst die Spaltemail_from), und der Nachrichtentext zitiert die ursprünglichen Header; es werden erweiterte RFC-3463-Statuscodes verwendet.RET=FULL (RFC 3461 §6.2): Hat der Absender die ganze Nachricht zurückverlangt, wird der Nachrichtentext geholt — der eine zusätzliche Round-Trip im Baum, der nur für eine solche Nachricht unternommen wird — und vollständig zurückgesendet, es sei denn, er überschreitet
RET_FULL_MAX_SIZE(Standardwert 256 KiB,0schaltet die Grenze ab); in diesem Fall fällt die DSN auf die Header allein zurück, wie es §6.2 ausdrücklich erlaubt.Vom Betreiber gelieferter Fließtext. Benennt
BOUNCE_MESSAGEeine Vorlage, so wird der menschenlesbare Teil der DSN ausbounce-<NAME>.<lang>.bodyunter[pepsi] TEMPLATE_DIRmit dem vollständigenstatedes Datensatzes gerendert.<lang>folgtstate.languageinq-Reihenfolge, mit Rückfall aufen: Der Hinweis geht an den ursprünglichen Absender, und die in dessen Nachricht erkannte Sprache ist der beste verfügbare Anhaltspunkt dafür, was er liest (ohne Spracherkennung auf dem Pfad ist der Hinweis englisch). Jeder Renderfehler fällt auf den eingebauten Text zurück, sodass immer ein Bounce erzeugt wird.NOTIFY-bewusst (RFC 3461): Ein Fehler-Bericht wird nur ausgegeben, wenn
NOTIFYFAILUREangefordert hat (der Standardwert bei Abwesenheit) —NOTIFY=NEVER(oder eine Liste ohneFAILURE) verwirft die Nachricht stillschweigend.Drei Berichtsarten, ausgewählt durch
state.bounce.kind:permanent→Action: failed(der standardmäßige Fehler-Bounce);success→Action: delivered(nur wenn eine Zustell-Stage es unterORIGINATE_SUCCESS_DSN+NOTIFY=SUCCESSerzeugt hat);delay→Action: delayed(eineDELAY_DSN_AFTER-Warnung einer Relay-Stage).
Spiegelt das ursprüngliche
ENVID/ORCPTinOriginal-Envelope-Id/Original-Recipient, wenn vorhanden.Erzeugt niemals einen Bounce auf einen Bounce (RFC 5321 §6.1): Eine Null-Absender-Nachricht wird gelöscht, nicht umgeschrieben.
Keine Netzwerk-E/A: Die umgeschriebene Nachricht wird von demjenigen zugestellt, was
NEXT_STAGEbenennt; der Bounce bleibt für die DKIM-Sign-Stage unsigniert.
36.3. Konfiguration¶
[stage-<name>]: PROGRAM = pepsi-stage-bounce, SERVER_NAME (erforderlich; verwendet in ``From:``/``Reporting-MTA``/``Message-ID``), POSTMASTER (das From: des Bounces und die DKIM-Identität; Standardwert postmaster@<SERVER_NAME>), BOUNCE_MESSAGE (der Vorlagenname; nicht gesetzt für den eingebauten Fließtext), RET_FULL_MAX_SIZE (Standardwert 256 KiB) und NEXT_STAGE (erforderlich; normalerweise eine DKIM-Sign-Stage — die DSN wird unsigniert gebaut, ohne eine solche schlägt daher jeder Bounce fehl, nachdem die DSN bereits zusammengestellt wurde). Siehe pepsi.conf(5).
36.4. State¶
Eingaben:
state.srs.original(der DSN-Empfänger, falls vorhanden) undstate.bounce—kind,diagnostic,failed_recipient, die strukturierten Angaben zum nächsten Hop, die die Relay-Stages festhalten (remote_mta/smtp_code/enhanced_status/phase/reply_text, was auch dasStatus:der DSN speist), und die kopiertennotify/orcpt/envid/ret(eine von Hand eingereihte Nachricht ohnestate.bounceergibt einen generischen Fehlerhinweis). Der Header-Block wird geladen; der Nachrichtentext nur für einenRET=FULL-Bounce.Ausgaben: setzt
stateauf null — der Bounce ist eine neue Null-Absender-Nachricht, die nichts von der Herkunft des Originals erbt. Dies ist die einzige Stage, diestatenicht bewahrt.
36.5. Siehe auch¶
pepsi-stage-dkim-sign, pepsi-stage-relay-to-internet, pepsi-stage-discard, Unterstützte Funktionen, pepsi-stage-bounce(1), pepsi.conf(5).