56. pepsi-stage-if¶
Brancher le pipeline selon une valeur d’état stockée.
56.1. Rôle¶
pepsi-stage-if est un embranchement programmable : elle teste l’égalité d’un membre du JSON state du message avec une valeur configurée et avance le message vers TRUE_STAGE lorsqu’ils sont égaux, sinon vers FALSE_STAGE. Elle permet à un opérateur d’acheminer selon n’importe quel verdict qu’une étape antérieure a noté — state.spam, state.auth.dkim, state.local_origin, … — sans écrire de code. Elle ne fait que déplacer la colonne stage ; elle ne réécrit jamais un message, ne le met jamais en pause et ne le fait jamais échouer, et laisse state intact. Référence : pepsi-stage-if(1).
56.2. Fonctionnalités¶
Chemins d’état pointés :
STATE_PATHest un chemin séparé par des points dansstate. Chaque segment indexe un objet par clé ; un segment qui s’analyse comme un entier indexe un tableau par position — par exemplespam,auth.dkim,dsn.rcpt.0.notify.Comparaison textuelle scalaire : la valeur trouvée est comparée à
VALUEpar sa forme textuelle naturelle — une chaîne correspond à son texte, un booléen àtrue/false, un nombre à son rendu décimal, le null JSON au littéralnull.Faux si absent ou non scalaire : un chemin manquant, ou qui se résout en un tableau ou un objet (qui n’a pas de forme scalaire), n’est jamais égal et prend donc la branche
FALSE_STAGE.VALUEest obligatoire et ne peut pas être vide.Non destructif : le corps n’est jamais chargé et
state(y comprisstate.dsn) est préservé à travers la branche, de sorte que l’étape peut être placée n’importe où dans le graphe.
Un usage courant est de scinder le pipeline par direction : pepsi-ingress note state.local_origin = true pour une soumission authentifiée, de sorte qu’un test STATE_PATH = local_origin / VALUE = true envoie le courrier sortant sur un chemin de signature/relais et le courrier entrant sur le chemin de filtrage/remise (voir Démarrage sur un VPS bon marché).
56.3. Configuration¶
[stage-<name>] : PROGRAM = pepsi-stage-if, STATE_PATH (le chemin pointé à tester), VALUE (obligatoire, la valeur à laquelle comparer) et les cibles de branche TRUE_STAGE/FALSE_STAGE. pepsi-setup vérifie que les deux cibles de branche se résolvent en de vraies étapes, comme NEXT_STAGE. Voir pepsi-stage-if(1).
56.4. État¶
Entrées : l’unique membre de
statesélectionné parSTATE_PATH.Sorties : aucune — l’étape ne fait qu’avancer le message et laisse
stateinchangé.
56.5. Voir aussi¶
pepsi-stage-check-whitelist, pepsi-stage-bounce, Fonctionnalités prises en charge, Démarrage sur un VPS bon marché, pepsi-stage-if(1).