40. pepsi-stage-relay-to-maildir¶
Stellt in die Maildirs lokaler Benutzer zu; leitet den Rest weiter.
40.1. Rolle¶
pepsi-stage-relay-to-maildir ist die Stage für die lokale Zustellung. Für jeden Umschlagempfänger entscheidet sie, ob die Adresse lokal ist, und schreibt die Nachricht, falls ja, über den setuid-root pepsi-helper-maildir-writer(1)-Helper in das Maildir/new/ dieses Benutzers; jeder andere Empfänger wird zu NEXT_STAGE weitergeleitet. Referenz: pepsi-stage-relay-to-maildir(1).
40.2. Funktionen¶
40.2.1. Abgleich lokaler Empfänger¶
Ein Empfänger ist lokal, wenn seine Domain in
LOCAL_DOMAINSist (Standardwert[pepsi-ingress] ACCEPTED_DOMAINS), sein Postfachname auf einen passwd-Eintrag auflöst und diese uid durchTARGETSerlaubt ist.TARGETSist eine Positivliste von Benutzernamen, uids und uid-Bereichen (alice,452,1000-1100,10000-); der Standardwert ist der reguläre (Nicht-System-)uid-Bereich aus/etc/login.defs. Der Helfer lehnt jede uid unterhalb vonUID_MINohnehin ab, sodass ein hier aufgeführtes Systemkonto gebounct wird.Der Postfachname ist der Local-Part mit entfernter
RECIPIENT_DELIMITER-Subadresse (Standardwert+), kleingeschrieben.
40.2.2. Teilzustellung¶
Lokale Empfänger werden in ihre Maildirs geschrieben; die übrigen Empfänger werden auf einen neuen
pending-Datensatz aufgeteilt, und wohin, hängt davon ab, warum sie nicht lokal sind. Ein Empfänger an der Domain eines anderen ist eine Weiterleitung und geht zuNEXT_STAGE, das den SRS-Relay-Schwanz erreichen sollte. Ein Empfänger an einer unsererLOCAL_DOMAINS, der sich zu keinem zugelassenen Konto auflöst, ist ein unbekanntes Postfach und geht zuUNKNOWN_MAILBOX_STAGE, das einen Bounce erreichen sollte — ihn stattdessen zu relayen würde unseren eigenen MX nachschlagen, diesen Host finden und die Nachricht an uns selbst zurückschicken.UNKNOWN_MAILBOX_STAGEfällt standardmäßig aufNEXT_STAGEzurück.Zwei Adressen für dasselbe lokale Konto werden nur einmal zugestellt.
Jeder lokalen Kopie werden ein
Return-Path:, einDelivered-To:-Schleifenschutz und einReceived:-Trace-Header vorangestellt.
40.2.3. Wiederholung, Bounce und DSN¶
Der Exit-Code des Helfers entscheidet, ob eine Wiederholung helfen kann. Ein vorübergehender Fehler (eine volle Platte, ein E/A-Fehler, ein noch nicht setuid installierter Helfer) pausiert diesen Empfänger mit exponentiellem Backoff bis
MAX_LIFETIMEund routet ihn erst dann zuBOUNCE_STAGE; ein dauerhafter (das Postfach selbst ist unbrauchbar — falsche Eigentümerschaft oder Rechte, kein Heimatverzeichnis, keine solche uid) wird sofort gebounct, da keine Wiederholung ihn zustellen kann. Ein Bounce wird nie erneut gebounct, und dasNOTIFYdes Absenders wird durchgehend beachtet.Ein Empfänger über seinem Kontingent (der eigene Quota-Exit des Helfers) wird gemäß
[pepsi] MAILBOX_OVER_QUOTAbehandelt:defer(der Standardwert) wiederholt ihn wie jeden vorübergehenden Fehler,bounceroutet ihn mit einem Status5.2.2zuQUOTA_LIMIT_STAGE. Siehe pepsi-quota.Erzeugt eine positive DSN bei erfolgreicher lokaler Zustellung, wenn
[pepsi] ORIGINATE_SUCCESS_DSNgesetzt ist und der EmpfängerNOTIFY=SUCCESSangefordert hat.
40.2.4. Privilegienmodell¶
Das Stage-Binärprogramm wird setgid
pepsi-maildirinstalliert, Modus2550pepsi:pepsi-maildir. Der Dispatcher führt es als unprivilegiertenpepsi-Benutzer aus; das setgid-Bit gewährt die effektive gid, die zum Ausführen des gruppenbeschränkten Helpers nötig ist — und nichts anderes auf dem Host erlangt diese Fähigkeit. Genau das erkauft der Modus: bei2755könnte jeder lokale Benutzer die Stage ausführen und dieselbe gid erben und von dort aus den setuid-root-Helper.pepsikann das Ausführungsrecht nicht aus der Gruppe nehmen (es ist bewusst kein Mitglied), also nimmt es das Recht stattdessen aus den Eigentümerbits.
40.3. Konfiguration¶
[stage-<name>] mit PROGRAM = pepsi-stage-relay-to-maildir: SERVER_NAME (erforderlich), TARGETS, LOCAL_DOMAINS, RECIPIENT_DELIMITER, HELPER (Standardwert pepsi-helper-maildir-writer), NEXT_STAGE/BOUNCE_STAGE, UNKNOWN_MAILBOX_STAGE, QUOTA_LIMIT_STAGE und die Wiederholungsrichtlinie (RETRY_INITIAL/RETRY_MAX_INTERVAL/RETRY_FACTOR/MAX_LIFETIME). pepsi-setup prüft, dass UNKNOWN_MAILBOX_STAGE und QUOTA_LIMIT_STAGE echte Stages benennen. Vollständige Referenz: pepsi-stage-relay-to-maildir(1).
40.4. State¶
Eingaben:
state.dsn(NOTIFY/ORCPTje Empfänger) undstate.attempts(die Anzahl der Wiederholungen).Ausgaben:
attempts/last_errorbei Pause; einstate.bounce-Objekt auf den für die Bounce-Stage eingereihten Datensätzen; dasstate.dsnje Empfänger wird auf jeden aufgeteilten Datensatz zugeschnitten.state.dsn/state.originbleiben erhalten.
40.5. Siehe auch¶
pepsi-stage-relay-to-lmtp (die LMTP-Alternative), pepsi-stage-relay-to-smarthost, pepsi-stage-relay-to-internet, pepsi-stage-bounce, pepsi-quota, Unterstützte Funktionen, pepsi-stage-relay-to-maildir(1), pepsi-helper-maildir-writer(1).