58. pepsi-stage-route¶
Envoyer chaque destinataire vers le saut suivant que son domaine sélectionne.
58.1. Rôle¶
pepsi-stage-route prend l’unique décision d’acheminement qu’une passerelle placée devant un autre système de courrier a à prendre sur chaque message entrant : ce destinataire appartient-il au système derrière moi, ou à l’internet ? Elle choisit une étape suivante par destinataire d’enveloppe d’après le domaine de ce destinataire, scindant le message lorsque les destinataires divergent. Elle ne déplace que la colonne stage — elle ne réécrit, ne remet, ne fait rebondir ni n’abandonne jamais un message, et state (y compris state.dsn) est préservé. Référence : pepsi-stage-route(1).
Se tromper sur cette décision n’est pas un échec de remise mais une boucle de courrier : les domaines situés derrière la passerelle sont exactement les domaines dont le MX public est la passerelle. Voir Microsoft Exchange comme passerelle pour le déploiement auquel cette étape est destinée.
58.2. Fonctionnalités¶
Domaines gérés par défaut.
MANAGED_DOMAINSvaut par défaut[pepsi-ingress] ACCEPTED_DOMAINS, de sorte que l’ensemble des domaines traités comme « derrière la passerelle » ne peut pas dériver de l’ensemble que l’ingress accepte réellement. AvecMANAGED_STAGEdéfini, toute la topologie de passerelle tient en deux options.Des règles explicites pour les exceptions.
ROUTESprend des paires<domain>=<stage>séparées par des espaces ou des virgules, consultées avant l’ensemble géré, de sorte qu’un sous-domaine puisse aller ailleurs sans retirer son parent deMANAGED_DOMAINS(ce qui empêcherait aussi l’ingress de l’accepter).Des motifs glob, pas des expressions régulières.
*correspond à toute suite de caractères et la correspondance est ancrée aux deux extrémités :*.example.orgcorrespond àmail.example.orgmais ni àexample.orgni àmail.example.org.evil.test. Un motif ayant l’allure d’une expression régulière est rejeté au moment de la configuration plutôt que de ne silencieusement correspondre à rien.Éventail des destinataires par groupe. Les destinataires divergents deviennent des lignes
pendingsœurs en un seul appel à la base, chacune ne portant que ses propres destinataires, avecstate.dsn.rcptdécoupé pour correspondre àrcpt_to.Regroupement déterministe. Les groupes sont formés dans l’ordre de première apparition, de sorte qu’un message réessayé conserve les mêmes destinataires sur la même ligne.
Métadonnées seules. Ni les en-têtes ni le corps ne sont chargés.
Note
Contrairement aux autres étapes à métadonnées seules, celle-ci n’a pas FUSION = yes par défaut. Sur le papier elle est candidate — elle est pliée dans le binaire unifié et ne charge aucun contenu de message — mais une étape fusionnée s’exécute dans le worker de son prédécesseur, et l’éventail de destinataires de cette étape refuse de s’exécuter tant que des modifications de contenu non validées d’un prédécesseur sont en attente. Plutôt que de faire de cette interaction une surprise à l’exécution, l’étape est simplement dispatchée normalement.
58.3. Prévention des boucles¶
pepsi-setup refuse — et n’avertit pas seulement — deux configurations :
une configuration dans laquelle un message pour un domaine servi pourrait atteindre
pepsi-stage-relay-to-internet, trouvé en avançant depuis chaque étape qu’un destinataire géré peut atteindre, le long de chaque option qui fait elle-même suivre le message —NEXT_STAGE, les cibles de routage, lesTRUE_STAGEetFALSE_STAGEdepepsi-stage-if, lesACCEPT_STAGE/QUARANTINE_STAGEd’un milter, leQUARANTINE_STAGEde decrypt, leSECURE_LINK_STAGEd’encrypt, leUNCHALLENGEABLE_STAGEdu secrétaire et leBOUNCE_TARGET_STAGEdu paywall.BOUNCE_STAGEet les autres voies d’échec (leREJECT_STAGEd’un milter, les cibles de quota, de Sieve, de notification et de boîte aux lettres inconnue des étapes de remise locale) ne sont pas suivis : ce qui y circule devient un DSN à expéditeur nul concernant une remise déjà échouée, et il atteint légitimement un relais. Pas davantage les cibles de typeRESPONSE_STAGE(un nouveau message à quelqu’un d’autre), unRESTART_STAGEde~/.forwardou les cibles des étapes de listes de diffusion, qui réadressent le message à de nouveaux destinataires.une section
[pepsi-stage-relay-to-smarthost-mta-*]dont leHOSTest cet hôte et dont lePORTest un port auquel un listener d’ingress est lié. Les deux moitiés sont requises — un site peut légitimement exploiter un relais sans rapport sur le même hôte, ou joindre une autre machine sur le port 25.
Ce sont des refus parce qu’une boucle ne s’arrête que lorsque la garde MAX_HOP_COUNT des étapes de relais se déclenche, des dizaines de copies plus tard, et que le rebond que cette garde produit alors est lui-même adressé de nouveau dans la boucle.
58.4. Configuration¶
Option |
Signification |
|---|---|
|
Paires |
|
Les domaines situés derrière cette passerelle. Vaut par défaut |
|
Où va un destinataire d’un domaine géré. Facultatif ; sans elle, les destinataires gérés prennent |
|
Où va tout autre destinataire. Requis — l’étape ne remet, ne fait rebondir ni n’abandonne jamais, de sorte que chaque destinataire doit avoir quelque part où aller. |
58.5. Placement¶
Sur le chemin entrant, après l’authentification et le déchiffrement et avant les étapes de relais — typiquement arc → decrypt → aliases → route, où MANAGED_STAGE nomme l’étape smarthost qui relaie vers Exchange et NEXT_STAGE nomme l’étape de remise directe vers le MX.
58.6. Voir aussi¶
Microsoft Exchange comme passerelle — le chapitre de déploiement.
pepsi-stage-if — la branche à usage général, pour les conditions qui ne portent pas sur le domaine du destinataire.
pepsi-stage-relay-to-smarthost, pepsi-stage-relay-to-internet.