60. pepsi-settings

Manage per-address stage option overrides.

60.1. Role

pepsi-settings is the operator’s tool for the pepsi.settings table, which overrides a stage’s [stage-<name>] options for messages to or from a particular envelope address (the INI value remains the default). It connects through the shared [pepsi-postgres] section and has no configuration of its own. The table is consulted transparently by the stage scaffolding (see pepsi-dispatch); this tool lets an administrator edit rows directly. It is not a stage. Started as root it continues as the pepsi service account before connecting (after reading the configuration and any import input file), so no sudo -u pepsi is needed. Reference: pepsi-settings(1).

Each row maps one lower-cased envelope address to a JSON object { "stage-<name>": { OPTION: value, } }. The relevant address is the envelope sender for locally-originated mail (state.local_origin), otherwise an envelope recipient, matched exactly. When one inbound message’s recipients resolve to different overrides for the stage about to run, the pipeline splits it into one row per distinct override group.

60.2. Features

  • set ADDRESS STAGE OPTION VALUE — set one option override (the stage label is stored as the section key stage-<name>; the value is parsed by the stage like its INI value).

  • unset ADDRESS STAGE [OPTION] — remove one option, or the whole stage section; empty sections and rows are dropped automatically.

  • import ADDRESS SOURCE — replace an address’s whole object from a JSON file (- for standard input).

  • get / list — print one address’s settings, or all rows (--json).

  • remove — delete an address’s row entirely.

pepsi-setup validates the table after installing the schema: top-level keys must be real [stage-<name>] sections and option values must be JSON scalars.

60.3. See also

pepsi-dispatch, pepsi-stage-check-whitelist, pepsi-stage-edit-settings, pepsi-setup, Architecture, pepsi-settings(1), pepsi.conf(5).