32. pepsi-stage-srs

Sender Rewriting Scheme — faire réussir SPF au saut suivant.

32.1. Rôle

pepsi-stage-srs réécrit l’expéditeur d’enveloppe en une adresse locale d’un SRS_DOMAIN contrôlé par Pepsi afin que la vérification SPF du saut suivant réussisse. Le sens inverse (décoder les rebonds renvoyés à une adresse SRS) est assuré par pepsi-ingress au moment du RCPT. Les deux lisent la section partagée [pepsi-srs]. Référence : pepsi-stage-srs(1).

32.2. Fonctionnalités

  • Réécriture directe : MAIL FROM devient SRS0=HHHH=TT=domain=local@srs, signant en HMAC l’expéditeur original et apposant un horodatage à granularité journalière ; le MAC tronqué est encodé en base32 (RFC 4648).

  • Re-signature compacte : une adresse qui est déjà SRS (le courrier a atteint Pepsi via un autre redirecteur) est re-signée sous la forme SRS1 plutôt qu’imbriquée, de sorte qu’un rebond remonte un redirecteur à la fois.

  • Idempotent / sûr : l’expéditeur nul (un rebond de retour) n’est jamais réécrit, et un expéditeur déjà dans SRS_DOMAIN est laissé inchangé.

  • Décodage inverse (dans l’ingress) : un destinataire qui est un jeton SRS valide est vérifié (signature + horodatage) et relayé vers l’expéditeur original décodé, même en dehors des domaines servis ; un jeton falsifié/expiré est rejeté 550.

  • Corps intact : seul l’expéditeur d’enveloppe change ; les hachages de corps DKIM survivent.

  • Outils d’opérateur : les sous-commandes forward/reverse calculent une réécriture ou décodent une adresse à la main.

32.3. Configuration

[stage-<name>] : PROGRAM = pepsi-stage-srs et NEXT_STAGE. Les paramètres SRS sont partagés dans [pepsi-srs] : SRS_DOMAIN, SECRET/SECRET_FILE (la clé HMAC ; doit rester stable et identique sur toutes les instances), et MAX_AGE_DAYS (fenêtre de validité, par défaut 21). Omettre [pepsi-srs] désactive SRS. Voir pepsi-stage-srs(1).

32.4. État

  • Entrées : aucune (opère sur la colonne mail_from).

  • Sorties : state.srs.original — l’expéditeur d’enveloppe tel qu’il était avant la réécriture, écrit uniquement lorsqu’une réécriture a eu lieu et seulement si la clé n’y est pas déjà (de sorte qu’une seconde passe SRS1 conserve le premier correspondant réel). pepsi-stage-bounce y adresse un DSN que ce déploiement émet, plutôt qu’à notre propre alias SRS. Tout le reste de state, y compris state.dsn, est préservé.

32.5. Voir aussi

pepsi-ingress, pepsi-stage-relay-to-internet, Fonctionnalités prises en charge, pepsi-stage-srs(1).