49. pepsi-stage-reencrypt

Sceller ce que la passerelle a déchiffré avec la propre clé du destinataire avant son classement.

49.1. Rôle

pepsi-stage-decrypt ouvre le courrier chiffré vers la clé de passerelle (MTA) d’un utilisateur afin que les étapes suivantes puissent en lire le contenu. pepsi-stage-reencrypt s’exécute une fois qu’elles l’ont fait, immédiatement avant la remise locale, et scelle à nouveau le message — avec la clé que l’utilisateur a enregistrée pour son propre client de messagerie (une identité custody = client, la clé MUA). La boîte aux lettres ne contient alors que du texte chiffré que seul ce client peut ouvrir. Référence : pepsi-stage-reencrypt(1).

49.2. Fonctionnalités

  • Uniquement ce que la passerelle a ouvert. state.crypto.in doit indiquer que le message est arrivé chiffré et a été déchiffré ; le courrier arrivé en clair, et celui que decrypt a laissé fermé pour le client, sont transmis sans modification.

  • Un destinataire, une clé. Un message dont les destinataires sont traités différemment est d’abord éclaté en une ligne par destinataire ; chaque copie est scellée avec la clé MUA active la plus récente de ce destinataire, OpenPGP ou S/MIME.

  • En-têtes. L’en-tête Autocrypt: de l’expéditeur, la trace de transport, les champs d’adressage et X-Pepsi-Crypto restent à l’extérieur ; les champs de contenu et Autocrypt-Gossip: vont à l’intérieur. PROTECT_HEADERS masque en outre l’objet.

  • Aucune signature n’est ajoutée : le verdict de l’étape decrypt est déjà consigné dans state.crypto.in et X-Pepsi-Crypto, et une signature de la passerelle ne ferait qu’affirmer que la passerelle a scellé le message.

  • Une politique pour les utilisateurs sans clé (ON_NO_CLIENT_KEY) : remettre en clair (par défaut) ou refuser avec un DSN 5.7.5 qui ne renvoie ni le corps ni l’objet. Réglable par destinataire via pepsi-settings.

  • Sans privilèges : sceller avec une clé publique ne demande aucun matériel privé ; contrairement aux autres étapes cryptographiques, elle est donc intégrée au binaire multi-appel pepsi et s’exécute sous l’utilisateur ordinaire pepsi.

49.3. Configuration

Un NEXT_STAGE obligatoire (remise locale), BOUNCE_STAGE (pour les refus), ON_NO_CLIENT_KEY (plaintext/bounce), PROTECT_HEADERS (no par défaut), ENABLED et les options de localité LOCAL_DOMAINS / TARGETS / RECIPIENT_DELIMITER / REQUIRE_ACCOUNT avec les valeurs par défaut de l’étape decrypt. Le message entier est chargé. Voir Configuration.

[stage-reencrypt]
PROGRAM = pepsi-stage-reencrypt
NEXT_STAGE = local
BOUNCE_STAGE = bounce

49.4. Placement

Après tout ce qui lit le message ou peut en transférer une copie ailleurs — la détection de langue, les barrières antispam, pepsi-stage-autocrypt-learn, les alias, le répondeur d’absence, ~/.forward — et directement devant pepsi-stage-relay-to-maildir ou pepsi-stage-relay-to-lmtp. L’assistant de configuration la propose avec la question sur la cryptographie et la place à cet endroit ; pepsi-setup avertit de tout autre ordre.