40. pepsi-stage-relay-to-maildir¶
Remettre dans les Maildirs des utilisateurs locaux ; rediriger le reste.
40.1. Rôle¶
pepsi-stage-relay-to-maildir est l’étape de remise locale. Pour chaque destinataire d’enveloppe, elle décide si l’adresse est locale et, si oui, écrit le message dans le Maildir/new/ de cet utilisateur via le helper pepsi-helper-maildir-writer(1) setuid-root ; tout autre destinataire est redirigé vers NEXT_STAGE. Référence : pepsi-stage-relay-to-maildir(1).
40.2. Fonctionnalités¶
40.2.1. Correspondance des destinataires locaux¶
Un destinataire est local lorsque son domaine est dans
LOCAL_DOMAINS(par défaut[pepsi-ingress] ACCEPTED_DOMAINS), que son nom de boîte aux lettres se résout en une entrée passwd, et que cet uid est permis parTARGETS.TARGETSest une liste d’autorisation de noms d’utilisateur, d’uids et de plages d’uid (alice,452,1000-1100,10000-) ; par défaut, la plage d’uid réguliers (non système) de/etc/login.defs. Le helper refuse de toute façon tout uid inférieur àUID_MIN, de sorte qu’un compte système listé ici fait l’objet d’un rebond.Le nom de boîte aux lettres est le local-part, toute sous-adresse
RECIPIENT_DELIMITER(par défaut+) retirée, mis en minuscules.
40.2.2. Remise partielle¶
Les destinataires locaux sont écrits dans leurs Maildirs ; les destinataires restants sont scindés sur une nouvelle ligne
pending, et l’endroit dépend de la raison pour laquelle ils ne sont pas locaux. Un destinataire sur le domaine de quelqu’un d’autre est un transfert et part versNEXT_STAGE, qui devrait atteindre la queue de relais SRS. Un destinataire sur l’un de nosLOCAL_DOMAINSqui ne se résout vers aucun compte autorisé est une boîte aux lettres inconnue et part versUNKNOWN_MAILBOX_STAGE, qui devrait aboutir à un rebond — le relayer reviendrait à consulter notre propre MX, à y trouver cet hôte et à nous réexpédier le message. La valeur par défaut deUNKNOWN_MAILBOX_STAGEestNEXT_STAGE.Deux adresses pour le même compte local ne sont remises qu’une seule fois.
Chaque copie locale reçoit un
Return-Path:, une protection contre les bouclesDelivered-To:et un en-tête de traceReceived:ajoutés en tête.
40.2.3. Réessai, rebond et DSN¶
Le code de sortie du helper décide si un réessai peut servir à quelque chose. Un échec transitoire (un disque plein, une erreur d’E/S, un helper pas encore installé setuid) met ce destinataire en pause avec un backoff exponentiel jusqu’à
MAX_LIFETIMEet ne l’achemine qu’ensuite versBOUNCE_STAGE; un échec permanent (la boîte aux lettres elle-même est inutilisable — mauvais propriétaire ou mauvais mode, pas de répertoire personnel, uid inexistant) est rebondi immédiatement, puisqu’aucun réessai ne pourra le remettre. Un rebond n’est jamais rebondi à nouveau, et leNOTIFYde l’expéditeur est honoré d’un bout à l’autre.Un destinataire au-delà du quota (le code de sortie de quota propre au helper) est traité selon
[pepsi] MAILBOX_OVER_QUOTA:defer(la valeur par défaut) le réessaie comme n’importe quel échec transitoire,bouncel’achemine versQUOTA_LIMIT_STAGEavec un statut5.2.2. Voir pepsi-quota.Émet un DSN positif à une remise locale réussie lorsque
[pepsi] ORIGINATE_SUCCESS_DSNest réglé et que le destinataire a demandéNOTIFY=SUCCESS.
40.2.4. Modèle de privilèges¶
Le binaire d’étape est installé setgid
pepsi-maildir, mode2550pepsi:pepsi-maildir. Le dispatcher l’exécute en tant qu’utilisateurpepsinon privilégié ; le bit setgid accorde le gid effectif nécessaire pour exécuter le helper restreint au groupe — et rien d’autre sur l’hôte n’obtient cette capacité. C’est cette dernière clause que le mode achète : à2755, tout utilisateur local pourrait exécuter l’étape et hériter du même gid, et de là du helper setuid-root.pepsine peut pas tenir le droit d’exécution du groupe (il n’en est délibérément pas membre), il le tient donc des bits du propriétaire.
40.3. Configuration¶
[stage-<name>] avec PROGRAM = pepsi-stage-relay-to-maildir : SERVER_NAME (obligatoire), TARGETS, LOCAL_DOMAINS, RECIPIENT_DELIMITER, HELPER (par défaut pepsi-helper-maildir-writer), NEXT_STAGE/BOUNCE_STAGE, UNKNOWN_MAILBOX_STAGE, QUOTA_LIMIT_STAGE et la politique de réessai (RETRY_INITIAL/RETRY_MAX_INTERVAL/RETRY_FACTOR/MAX_LIFETIME). pepsi-setup vérifie que UNKNOWN_MAILBOX_STAGE et QUOTA_LIMIT_STAGE nomment de vraies étapes. Référence complète : pepsi-stage-relay-to-maildir(1).
40.4. État¶
Entrées :
state.dsn(NOTIFY/ORCPTpar destinataire) etstate.attempts(le compteur de tentatives).Sorties :
attempts/last_errorà la pause ; un objetstate.bouncesur les lignes mises en file pour l’étape de rebond ; lestate.dsnpar destinataire est découpé sur chaque ligne scindée.state.dsn/state.originsont préservés.
40.5. Voir aussi¶
pepsi-stage-relay-to-lmtp (l’alternative LMTP), pepsi-stage-relay-to-smarthost, pepsi-stage-relay-to-internet, pepsi-stage-bounce, pepsi-quota, Fonctionnalités prises en charge, pepsi-stage-relay-to-maildir(1), pepsi-helper-maildir-writer(1).