55. pepsi-stage-edit-settings¶
Permettre au titulaire d’un compte de modifier ses propres paramètres par e-mail.
55.1. Rôle¶
pepsi-stage-edit-settings permet au titulaire d’un compte de modifier ses propres redéfinitions par adresse (la table pepsi.settings ; voir pepsi-settings) en envoyant un e-mail de contrôle. Le message doit être d’origine locale, porter le sujet exact SUBJECT (par défaut Pepsi) et être adressé à <CONTROL_LOCAL_PART>@<controlled-domain> (partie locale par défaut pepsi, les domaines étant [pepsi-ingress] ACCEPTED_DOMAINS) ; son corps est un extrait INI des options à définir. Tout autre message passe sans modification, de sorte que l’étape peut être placée sans risque n’importe où sur le chemin de soumission locale. Référence : pepsi-stage-edit-settings(1).
L’adresse dont les paramètres sont édités est l”expéditeur d’enveloppe, et la réponse y revient — de sorte que l’authentification de soumission de l’opérateur doit lier l’expéditeur d’enveloppe.
55.2. Fonctionnalités¶
Corps INI, analysé avec souplesse : sections
[stage-<name>]et lignesOPTION = value; salutations, commentaires et signature finale sont ignorés. Une valeur vide (OPTION =) annule une redéfinition (revenant à la valeur INI par défaut) ; toute autre valeur l’ajoute ou la redéfinit.Liste d’autorisation de l’opérateur : seules les étapes nommées dans EDITABLE_STAGES peuvent être modifiées.
Valider avant d’adopter : les paramètres combinés (valeurs par défaut INI + redéfinitions existantes + le nouvel INI) sont vérifiés par le véritable analyseur de configuration de chaque étape concernée (partagé avec pepsi-setup), par-dessus la configuration de l’opérateur pour l’expéditeur (redéfinitions
domain:/address:comprises).Uniquement ses propres listes blanches : un
WHITELIST_NAMEque l’expéditeur définit pour pepsi-stage-auto-whitelist ou pepsi-stage-secretary – les étapes qui écrivent une liste blanche au nom du titulaire – doit en nommer une dans son propre espace de noms<login>/..., ou celle que la configuration de l’opérateur lui attribue déjà. Une liste partagée ou celle d’un autre utilisateur est refusée, puisqu’elle permettrait au titulaire de la remplir avec des adresses de son choix. Une valeur déjà stockée dans la ligne (l’opérateur peut l’avoir définie avec pepsi-settings) ne bloque pas les modifications des autres options. Cette étape est le seul moyen pour un titulaire de compte d’écrire danspepsi.settings; la règle est donc appliquée ici, et les couches propres à l’opérateur peuvent nommer n’importe quelle liste blanche.Tout ou rien : en cas d’erreur, rien n’est changé et une réponse lisible par un humain énumère les problèmes.
Réponse de confirmation : en cas de succès, les redéfinitions fusionnées sont stockées et une réponse cite l’ensemble complet des options effectives de chaque étape éditable, en syntaxe INI. Les deux réponses portent
Subject: Pepsi, utilisent l’expéditeur nul, et sont injectées à RESPONSE_STAGE pour être signées par DKIM et relayées.Réponses localisées : la prose d’encadrement provient du modèle
edit-settings.<lang>.bodysitué sous[pepsi]TEMPLATE_DIR, choisi d’après la langue détectée de l’expéditeur (state.language, telle que pepsi-stage-detect-language l’a notée), avec repli sur l’anglais.Sûr par défaut : un e-mail ne peut pointer le
PROGRAMd’une étape que vers une commandepepsi-stage-*, et ne peut pas toucher aux options qui décident de l’identité sous laquelle un message est signé ou émis (SIGNING_DOMAIN). Les deux restrictions sont levées par leUNRESTRICTED_UNSAFE_STAGES = YESde l’opérateur, qui est bien ce que son nom annonce.
55.3. Configuration¶
[stage-<name>] : PROGRAM = pepsi-stage-edit-settings, NEXT_STAGE (obligatoire — presque tous les messages ne sont pas des messages de contrôle et sont avancés sans modification), EDITABLE_STAGES (obligatoire, noms d’étapes séparés par des espaces ou des virgules), RESPONSE_STAGE (obligatoire, là où la réponse est injectée), SUBJECT (par défaut Pepsi), CONTROL_LOCAL_PART (par défaut pepsi), RESPONSE_FROM (le From: de la réponse ; par défaut <CONTROL_LOCAL_PART>@<matched domain>) et UNRESTRICTED_UNSAFE_STAGES (par défaut no). pepsi-setup vérifie que chaque entrée de EDITABLE_STAGES et que RESPONSE_STAGE nomment une étape réelle, et que le modèle de repli edit-settings.en.body existe. L’étape lit ses propres options depuis la configuration de base, jamais depuis les redéfinitions par adresse, de sorte qu’un correspondant ne peut pas s’envoyer par e-mail une liste d’autorisation plus large. Voir pepsi-stage-edit-settings(1).
55.4. État¶
Entrées :
state.local_origin(un message qui n’est pas d’origine locale n’est jamais un message de contrôle) etstate.language(la langue de la réponse).Sorties : aucune — la ligne d’un message de contrôle est supprimée une fois la réponse injectée ; tout autre message est avancé avec son
state, y comprisstate.dsn, intact.
55.5. Voir aussi¶
pepsi-settings, pepsi-dispatch, pepsi-stage-check-whitelist, pepsi-setup, Architecture, pepsi-stage-edit-settings(1), pepsi.conf(5).