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 par TARGETS.

  • TARGETS est 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 vers NEXT_STAGE, qui devrait atteindre la queue de relais SRS. Un destinataire sur l’un de nos LOCAL_DOMAINS qui ne se résout vers aucun compte autorisé est une boîte aux lettres inconnue et part vers UNKNOWN_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 de UNKNOWN_MAILBOX_STAGE est NEXT_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 boucles Delivered-To: et un en-tête de trace Received: 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_LIFETIME et ne l’achemine qu’ensuite vers BOUNCE_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 le NOTIFY de 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, bounce l’achemine vers QUOTA_LIMIT_STAGE avec un statut 5.2.2. Voir pepsi-quota.

  • Émet un DSN positif à une remise locale réussie lorsque [pepsi] ORIGINATE_SUCCESS_DSN est 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, mode 2550 pepsi:pepsi-maildir. Le dispatcher l’exécute en tant qu’utilisateur pepsi non 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. pepsi ne 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/ORCPT par destinataire) et state.attempts (le compteur de tentatives).

  • Sorties : attempts/last_error à la pause ; un objet state.bounce sur les lignes mises en file pour l’étape de rebond ; le state.dsn par destinataire est découpé sur chaque ligne scindée. state.dsn/state.origin sont 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).