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_PATH ist ein punktgetrennter Pfad in state. 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 VALUE in seiner natürlichen Textform verglichen — eine Zeichenkette passt auf ihren Text, ein Boolean auf true/false, eine Zahl auf ihre Dezimaldarstellung, JSON-null auf das literale null.

  • 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. VALUE ist erforderlich und darf nicht leer sein.

  • Nicht-destruktiv: Der Nachrichtentext wird nie geladen und state (einschließlich state.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_PATH ausgewählte Mitglied von state.

  • Ausgaben: keine — die Stage schaltet die Nachricht nur weiter und lässt state unverä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).