36. pepsi-stage-bounce¶
Réécrire un message en une notification d’état de remise (DSN).
36.1. Rôle¶
pepsi-stage-bounce transforme un message en un DSN RFC 3464 — un rebond d’échec, ou (sur demande) un rapport positif ou de délai. Une étape de remise achemine ici un message échoué ou remis via son BOUNCE_STAGE. Le DSN est produit non signé et avancé vers NEXT_STAGE (normalement pepsi-stage-dkim-sign, puis une étape de remise). Références : pepsi-stage-bounce(1) / pepsi.conf(5).
36.2. Fonctionnalités¶
Réécriture sur place en un DSN (
multipart/reportRFC 3464) : l’expéditeur d’enveloppe devient l’expéditeur nul<>, le destinataire devient l’expéditeur d’origine (state.srs.originallorsque pepsi-stage-srs en a noté un, sinon la colonnemail_from), et le corps cite les en-têtes d’origine ; les codes d’état étendus de la RFC 3463 sont utilisés.RET=FULL (RFC 3461 §6.2) : lorsque l’expéditeur a demandé le retour du message entier, le corps est chargé — l’unique aller-retour supplémentaire de l’arborescence, effectué uniquement pour un tel message — et renvoyé intégralement, sauf s’il dépasse
RET_FULL_MAX_SIZE(par défaut 256 Kio,0pour désactiver la limite), auquel cas le DSN se rabat sur les seuls en-têtes, comme le §6.2 l’autorise explicitement.Texte fourni par l’opérateur. Lorsque
BOUNCE_MESSAGEnomme un modèle, la partie lisible par un humain du DSN est rendue à partir debounce-<NAME>.<lang>.bodysous[pepsi] TEMPLATE_DIR, avec l’intégralité dustatede la ligne.<lang>suitstate.languagedans l’ordre desq, avec repli suren: l’avis est adressé à l’expéditeur d’origine, et la langue détectée dans son message est le meilleur indicateur disponible de ce qu’il lit (sans détection sur le chemin, l’avis est en anglais). Tout échec de rendu se rabat sur le texte intégré, de sorte qu’un rebond est toujours produit.Tient compte de NOTIFY (RFC 3461) : un rapport d”échec n’est émis que lorsque
NOTIFYa demandéFAILURE(la valeur par défaut en son absence) —NOTIFY=NEVER(ou une liste sansFAILURE) abandonne le message silencieusement.Trois sortes de rapport, sélectionnées par
state.bounce.kind:permanent→Action: failed(le rebond d’échec par défaut) ;success→Action: delivered(seulement lorsqu’une étape de remise l’a émis sousORIGINATE_SUCCESS_DSN+NOTIFY=SUCCESS) ;delay→Action: delayed(un avertissementDELAY_DSN_AFTERd’une étape de relais).
Renvoie en écho les
ENVID/ORCPTd’origine dansOriginal-Envelope-Id/Original-Recipientlorsqu’ils sont présents.Ne fait jamais rebondir un rebond (RFC 5321 §6.1) : un message à expéditeur nul est supprimé, non réécrit.
Aucune E/S réseau : le message réécrit est remis par ce que nomme
NEXT_STAGE; le rebond est laissé non signé pour l’étape de signature DKIM.
36.3. Configuration¶
[stage-<name>] : PROGRAM = pepsi-stage-bounce, SERVER_NAME (obligatoire ; utilisé dans ``From:``/``Reporting-MTA``/``Message-ID``), POSTMASTER (le From: du rebond et l’identité DKIM ; par défaut postmaster@<SERVER_NAME>), BOUNCE_MESSAGE (le nom du modèle ; non réglé, le texte intégré est utilisé), RET_FULL_MAX_SIZE (par défaut 256 Kio) et NEXT_STAGE (obligatoire ; normalement une étape de signature DKIM — le DSN est construit non signé, donc sans elle chaque rebond échoue une fois le DSN déjà composé). Voir pepsi.conf(5).
36.4. État¶
Entrées :
state.srs.original(le destinataire du DSN, lorsqu’il est présent) etstate.bounce—kind,diagnostic,failed_recipient, le détail structuré du saut suivant que les étapes de relais enregistrent (remote_mta/smtp_code/enhanced_status/phase/reply_text, qui alimente aussi leStatus:du DSN), et lesnotify/orcpt/envid/retcopiés (un message mis en file à la main sansstate.bounceproduit un avis d’échec générique). Le bloc d’en-têtes est chargé ; le corps ne l’est que pour un rebondRET=FULL.Sorties : remet
stateà null — le rebond est un nouveau message à expéditeur nul qui n’hérite d’aucune provenance de l’original. C’est la seule étape qui ne préserve passtate.
36.5. Voir aussi¶
pepsi-stage-dkim-sign, pepsi-stage-relay-to-internet, pepsi-stage-discard, Fonctionnalités prises en charge, pepsi-stage-bounce(1), pepsi.conf(5).