47. pepsi-stage-auto-whitelist

Enregistrer les destinataires du courrier sortant pour qu’ils puissent toujours répondre.

47.1. Rôle

pepsi-stage-auto-whitelist est le pendant côté écriture de pepsi-stage-check-whitelist. Au passage d’un message sortant, elle insère chaque destinataire d’enveloppe (rcpt_to) dans une liste blanche nommée, de sorte que lorsque cette personne répond plus tard, l’étape de vérification reconnaisse son en-tête From: et laisse passer la réponse sans paiement. Placez-la sur le chemin sortant (par exemple avant une étape de relais). Elle ne fait qu’écrire des lignes de liste blanche et avancer — elle ne modifie jamais le message et ne le supprime, ne le fait rebondir ni ne le met en pause. Référence : pepsi-stage-auto-whitelist(1).

47.2. Fonctionnalités

  • Table de liste blanche partagée : écrit dans la même table pepsi.whitelist que celle lue par l’étape de vérification, de sorte qu’aucun schéma propre n’est nécessaire ; l’option WHITELIST_NAME sélectionne le groupe whitelist_name à peupler.

  • Tous les destinataires d’enveloppe : chaque adresse de rcpt_to est enregistrée en un seul aller-retour, de façon idempotente (ON CONFLICT (whitelist_name, match_field, whitelist_regex) DO NOTHING) ; les lignes sont écrites avec match_field = from.

  • Motifs entièrement ancrés : chaque adresse est mise en minuscules, échappée pour l’expression régulière et encadrée de ^/$, de sorte que le whitelist_regex stocké corresponde à cette adresse et à rien d’autre. L’étape de vérification l’évalue (sans distinction de casse, avec l’opérateur ~*) face à l”addr-spec extraite de l’en-tête From: d’une réponse, et non face à la valeur brute de l’en-tête — de sorte que bob@example.com (Bob) corresponde toujours à la ligne de bob@example.com, tandis que bob@example.com.evil et (bob@example.com)x@attacker.test n’y correspondent pas. L’ancrage est porteur : une classe de frontière énumérant les caractères qu’une adresse peut contenir laisserait un attaquant trouver un seul caractère hors de cette classe et le placer de part et d’autre d’une adresse sur liste blanche à l’intérieur d’une partie locale lui appartenant.

  • La liste blanche de qui : sur le chemin sortant, les couches par adresse sont consultées pour l”expéditeur de l’enveloppe. L’opérateur peut nommer n’importe quelle liste blanche dans le fichier INI, dans pepsi.config_override à n’importe quelle portée, ou dans une ligne pepsi.settings écrite avec pepsi-settings, y compris une liste partagée par tous les utilisateurs locaux. Un titulaire de compte qui peut modifier l’étape par courrier (pepsi-stage-edit-settings) ne peut choisir qu’une liste dans son propre espace de noms <login>/..., ou garder celle de l’opérateur ; toute autre possibilité lui permettrait de remplir une liste partagée ou étrangère avec des adresses de son choix.

  • Conditions par ligne :

    • dkim_required est renseigné depuis l’option DKIM_REQUIRED (par défaut yes).

    • signature_required est mis à true si et seulement si l’état du message porte encrypted: true — ce que pepsi-stage-encrypt positionne lorsque la copie d’un destinataire a réellement été chiffrée. Un correspondant atteint sous chiffrement est ainsi soumis à la même exigence lorsqu’il répond. Cela ne fonctionne que si l’étape est placée après l’étape de chiffrement ; elle ne modifie aucun contenu, elle peut donc se situer entre le chiffrement et pepsi-stage-dkim-sign, qui est l’endroit où l’assistant de configuration la place.

47.3. Configuration

[stage-<name>] : PROGRAM = pepsi-stage-auto-whitelist, WHITELIST_NAME (obligatoire — l’unique groupe whitelist_name à peupler, un nom littéral : les marqueurs ne sont pas développés et sont refusés), DKIM_REQUIRED (booléen, par défaut yes) et NEXT_STAGE (obligatoire — l’étape enregistre les destinataires et transmet toujours le message). Ni les en-têtes ni le corps ne sont chargés. Voir pepsi-stage-auto-whitelist(1).

47.4. État

  • Entrées : les destinataires d’enveloppe issus de la colonne rcpt_to, et state.encrypted — positionné par pepsi-stage-encrypt, plus tôt sur le même chemin sortant, lorsque le message sortant a réellement été chiffré vers une clé de destinataire —, qui renseigne l’indicateur signature_required stocké, de sorte qu’un correspondant atteint sous chiffrement soit plus tard soumis à la même exigence.

  • Sorties : aucune sur le message — son state reste intact ; l’effet de bord est une ligne pepsi.whitelist par destinataire.

47.5. Voir aussi

pepsi-stage-check-whitelist, pepsi-stage-anti-spam, pepsi-stage-arc, Fonctionnalités prises en charge, pepsi-stage-auto-whitelist(1).