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_PATH est un chemin séparé par des points dans state. Chaque segment indexe un objet par clé ; un segment qui s’analyse comme un entier indexe un tableau par position — par exemple spam, auth.dkim, dsn.rcpt.0.notify.

  • Comparaison textuelle scalaire : la valeur trouvée est comparée à VALUE par 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éral null.

  • 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. VALUE est obligatoire et ne peut pas être vide.

  • Non destructif : le corps n’est jamais chargé et state (y compris state.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 state sélectionné par STATE_PATH.

  • Sorties : aucune — l’étape ne fait qu’avancer le message et laisse state inchangé.

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).