56. pepsi-stage-if¶
Verzweigt die Pipeline anhand eines gespeicherten State-Werts.
56.1. Rolle¶
pepsi-stage-if ist eine programmierbare Verzweigung: Es testet ein Mitglied des state-JSON der Nachricht auf Gleichheit mit einem konfigurierten Wert und schaltet die Nachricht zu TRUE_STAGE weiter, wenn sie gleich sind, andernfalls zu FALSE_STAGE. Es lässt einen Operator nach jedem Urteil routen, das eine frühere Stage festgehalten hat — state.spam, state.auth.dkim, state.local_origin, … — ohne Code zu schreiben. Es verschiebt nur die stage-Spalte; es schreibt eine Nachricht nie um, pausiert sie nie und lässt sie nie fehlschlagen, und state bleibt unberührt. Referenz: pepsi-stage-if(1).
56.2. Funktionen¶
Punktierte State-Pfade:
STATE_PATHist ein punktgetrennter Pfad instate. Jedes Segment indiziert ein Objekt nach Schlüssel; ein Segment, das als Ganzzahl geparst wird, indiziert ein Array nach Position — z. B.spam,auth.dkim,dsn.rcpt.0.notify.Skalarer Textvergleich: Der gefundene Wert wird mit
VALUEin seiner natürlichen Textform verglichen — eine Zeichenkette passt auf ihren Text, ein Boolean auftrue/false, eine Zahl auf ihre Dezimaldarstellung, JSON-null auf das literalenull.Falsch bei fehlendem oder nicht-skalarem Wert: Ein Pfad, der fehlt oder auf ein Array oder Objekt auflöst (das keine Skalarform hat), ist nie gleich und nimmt daher den
FALSE_STAGE-Zweig.VALUEist erforderlich und darf nicht leer sein.Nicht-destruktiv: Der Nachrichtentext wird nie geladen und
state(einschließlichstate.dsn) bleibt über die Verzweigung hinweg erhalten, sodass die Stage überall im Graphen platziert werden kann.
Eine häufige Verwendung ist, die Pipeline nach Richtung aufzuteilen: pepsi-ingress hält state.local_origin = true für eine authentifizierte Submission fest, sodass ein STATE_PATH = local_origin / VALUE = true-Test ausgehende Mail einen Signier-/Relay-Pfad und eingehende Mail den Filter-/Zustell-Pfad hinunterschickt (siehe Erste Schritte auf einem günstigen VPS).
56.3. Konfiguration¶
[stage-<name>]: PROGRAM = pepsi-stage-if, STATE_PATH (der zu testende punktierte Pfad), VALUE (erforderlich, der verglichene Wert) und die Verzweigungsziele TRUE_STAGE/FALSE_STAGE. pepsi-setup prüft, dass beide Verzweigungsziele auf echte Stages auflösen, wie NEXT_STAGE. Siehe pepsi-stage-if(1).
56.4. State¶
Eingaben: das einzelne von
STATE_PATHausgewählte Mitglied vonstate.Ausgaben: keine — die Stage schaltet die Nachricht nur weiter und lässt
stateunverändert.
56.5. Siehe auch¶
pepsi-stage-check-whitelist, pepsi-stage-bounce, Unterstützte Funktionen, Erste Schritte auf einem günstigen VPS, pepsi-stage-if(1).