39. pepsi-stage-relay-to-smarthost

Relayer via un smarthost amont configuré.

39.1. Rôle

pepsi-stage-relay-to-smarthost relaie le courrier vers un MTA amont configuré (smarthost) choisi par domaine de destinataire, au lieu de contacter directement les hôtes MX. C’est l’autre étape de remise interchangeable. Référence : pepsi-stage-relay-to-smarthost(1).

39.2. Fonctionnalités

39.2.1. Acheminement smarthost

  • Achemine chaque domaine de destinataire vers le […-mta-<name>] dont le DOMAINS le liste, ou vers l’unique MTA CATCH_ALL ; un domaine sans MTA correspondant est un échec permanent. Un domaine ne peut être listé que par un seul MTA. Les sections MTA sont partagées entre toutes les étapes de relais vers smarthost.

  • Pas de découverte MX ni de MTA-STS appris par DNS — il ne parle qu’aux smarthosts configurés.

39.2.2. Transport et authentification

  • Transport par MTA plain / tls (implicite) / starttls (RFC 3207, la valeur par défaut).

  • Vérification de certificat par rapport au magasin système (plus un TLS_CA supplémentaire facultatif), ou désactivée pour les tests ; un certificat client facultatif (TLS_CLIENT_CERT/TLS_CLIENT_KEY).

  • SMTP AUTH (RFC 4954), par MTA : none, plain, login, external, cram-md5, digest-md5, scram-sha-1 / scram-sha-256 et leurs formes -plus de liaison de canal, ntlm, gssapi, oauth, ou auto pour choisir le mécanisme par mot de passe le plus robuste que le serveur propose. La plupart prennent USERNAME/PASSWORD ; gssapi prend SERVICE_NAME/KRB5CCNAME, ntlm prend NT_DOMAIN/NT_WORKSTATION, et oauth prend USERNAME/TOKEN_FILE.

  • DANE/TLSA (RFC 7672) par section MTA : DANE = off | warn | strict, par défaut warn.

  • HELO_NAME par MTA (par défaut SERVER_NAME).

39.2.3. Remise, réessai et rebond

  • Envoie avec l’expéditeur d’enveloppe propre au message, un destinataire par tentative (une ligne à plusieurs destinataires est d’abord scindée en une ligne par destinataire).

  • En cas de succès, termine la ligne (ou avance vers NEXT_STAGE).

  • Backoff exponentiel sur échec transitoire jusqu’à MAX_LIFETIME ; détection de boucle via MAX_HOP_COUNT.

  • Un échec permanent (y compris l’absence de MTA correspondant) achemine vers BOUNCE_STAGE (ou marque failed) ; un échec permanent d’un rebond est abandonné, jamais rebondi à nouveau. Un identifiant rejeté est un échec transitoire, jamais un rebond.

39.2.4. DSN et adaptation du contenu

  • Propage RET/ENVID/NOTIFY/ORCPT au smarthost seulement lorsqu’il annonce DSN (RFC 3461) ; génère des rapports d’échec, de succès et de délai selon les mêmes règles que l’étape directe.

  • Ré-annonce ou rétrogradation par saut de 8BITMIME/SMTPUTF8 (RFC 6152 / RFC 6531 / RFC 2045 / RFC 2047).

39.3. Configuration

[stage-<name>] avec PROGRAM = pepsi-stage-relay-to-smarthost : SERVER_NAME (obligatoire), NEXT_STAGE/BOUNCE_STAGE, les timeouts (CONNECT_TIMEOUT/COMMAND_TIMEOUT/DATA_TIMEOUT), la politique de réessai (RETRY_INITIAL/RETRY_MAX_INTERVAL/RETRY_FACTOR/MAX_LIFETIME/ DELAY_DSN_AFTER), MAX_HOP_COUNT, ADDRESS_FAMILY (la valeur par défaut dont hérite chaque entrée MTA) et les réglages du résolveur DANE DNS_SERVERS/DNS_TIMEOUT. Les MTA amont sont définis dans des sections partagées [pepsi-stage-relay-to-smarthost-mta-<name>] : HOST/PORT (tous deux obligatoires), MODE, TLS_VERIFY/TLS_CA/TLS_CLIENT_CERT/ TLS_CLIENT_KEY, AUTH avec ses identifiants, DANE, ADDRESS_FAMILY, HELO_NAME, et le routage via DOMAINS / CATCH_ALL. Référence complète : pepsi-stage-relay-to-smarthost(1).

39.4. Privilège

Installé setgid pepsi-token (mode 2550, propriétaire pepsi:pepsi-token), et donc binaire autonome plutôt que l’un des programmes pliés dans le binaire pepsi unifié. Le dispatcher exécute l’étape sous l’utilisateur non privilégié pepsi ; le bit setgid donne au worker egid=pepsi-token, ce qui lui permet de lire les fichiers restreints au groupe dont il a besoin — les jetons d’accès OAuth qu’écrit pepsi-helper-token-refresh (AUTH = oauth), une clé TLS_CLIENT_KEY de TLS mutuel et un cache d’identifiants Kerberos (AUTH = gssapi) — sans faire de pepsi un membre permanent de ce groupe. Le fichier n’est pas exécutable par tous : l’étape accepte -c, de sorte que tout utilisateur local capable de l’exécuter pourrait la pointer vers un serveur à lui et envoyer les identifiants à ce serveur.

39.5. État

Identique à pepsi-stage-relay-to-internet :

  • Entrées : state.dsn et state.origin.

  • Sorties : attempts/last_error/delay_sent à la mise en pause ; un objet state.bounce lors de l’acheminement vers l’étape de rebond ou de la mise en file pour celle-ci ; last_error au fail terminal. state.dsn/state.origin préservés.

39.6. Voir aussi

pepsi-stage-relay-to-internet, pepsi-stage-bounce, pepsi-helper-token-refresh, Fonctionnalités prises en charge, pepsi-stage-relay-to-smarthost(1).