37. pepsi-stage-aliases

Expandiert Umschlagempfänger über eine Alias-/Mailinglisten-Map.

37.1. Rolle

pepsi-stage-aliases schreibt die Umschlagempfänger einer Nachricht vor der Zustellung über eine Zuordnungsdatei um: Jeder Empfänger, der auf einen Eintrag in der Map passt, wird durch die Zieladressen dieses Eintrags ersetzt, Empfänger, die auf nichts passen, bleiben unverändert, die resultierende Liste wird dedupliziert, sodass jede Adresse höchstens einmal zugestellt wird, und die Nachricht schaltet zu NEXT_STAGE weiter. Es ist der klassische /etc/aliases-/Virtual-Domain-Expansionsschritt und wird normalerweise direkt vor der lokalen Zustellung platziert. Es lädt nur den Umschlag und state — nie die Header oder den Nachrichtentext — und pausiert, schlägt fehl oder schließt eine Nachricht nie ab. Referenz: pepsi-stage-aliases(1).

37.2. Funktionen

  • Map-Datei im Postfix-Stil. ALIASES benennt eine menschenlesbare Datei, die wie eine Postfix-virtual(5)-Tabelle geparst wird: Jede nicht-leere Zeile bildet einen Schlüssel — eine Volladresse, einen @domain-Catch-All oder ein *-Glob wie sales-*@example.org — auf eine oder mehrere durch Komma/Leerraum getrennte Zieladressen ab (wörtlich beibehalten; Ziele dürfen selbst keine Wildcard enthalten). Ein Schlüssel ohne Ziele wird ignoriert, sodass ein Empfänger nie stillschweigend gelöscht wird.

  • Spezifischster Treffer gewinnt. Ein Empfänger wird kleingeschrieben und wörtlich nachgeschlagen; bei einem Fehlschlag wird der @domain-Catch-All versucht, dann die spezifischste passende *-Wildcard (ein enges sales-*@example.org schlägt ein breites *@example.org schlägt ein bloßes *). Subadress-(+tag-)Detail wird nicht entfernt, sodass eine spezifische Listenadresse für sich aliasiert werden kann.

  • Transitive Expansion mit Schleifendurchbrechung. Wenn ein Ziel selbst ein Schlüssel ist, wird es seinerseits expandiert, sodass verschachtelte Verteilerlisten zu ihren Blattadressen auflösen; ein Zyklus wird durchbrochen, indem der wiederholte Schlüssel auf seine literale Adresse aufgelöst wird, statt ewig zu rekursieren.

  • Zwischengespeichert, fail-soft. Die Map wird in einen prozessglobalen Cache gelesen und nur dann neu geparst, wenn sich die Identität der Datei (Änderungszeit, Größe oder Inode) ändert, sodass ein ausgelasteter Worker sie nicht pro Nachricht neu liest. Eine fehlende oder nicht lesbare Datei wird als leere Map behandelt (und protokolliert), sodass eine vorübergehende Fehlkonfiguration keine Mail fehlschlagen lässt. pepsi-setup prüft die Datei zur Installationszeit auf Syntax, wenn sie existiert.

37.3. Zustellungsstatusbenachrichtigungen

state.dsn.rcpt läuft parallel zur Empfängerliste, daher wird es im Gleichschritt mit den umgeschriebenen Empfängern neu aufgebaut. Ein expandiertes Ziel erbt das NOTIFY des ursprünglichen Empfängers ohne ein etwaiges SUCCESS (ein NOTIFY, das nur SUCCESS war, wird zu NEVER), sodass eine einzige Einlieferung an einen Alias nicht eine positive DSN pro Mitglied nach sich zieht; gemäß RFC 3461 §5.2.7 trägt es außerdem ein ORCPT, das auf diesen ursprünglichen Empfänger zeigt (sein bestehendes ORCPT, falls vorhanden, sonst rfc822;<original-recipient>). Ein nicht expandierter Empfänger behält seinen DSN-Eintrag, und RET/ENVID auf Nachrichtenebene sowie jeder andere state-Schlüssel bleiben erhalten.

37.4. Konfiguration

[stage-<name>]: PROGRAM = pepsi-stage-aliases, der ALIASES-Map-Dateipfad und das NEXT_STAGE, zu dem die expandierte Nachricht weiterschaltet. pepsi-setup erstellt eine Starter-ALIASES-Vorlage, wenn die Datei fehlt, und prüft sie auf Syntax, wenn vorhanden. Siehe pepsi-stage-aliases(1) und Konfiguration.

37.5. State

  • Eingaben: das Umschlag-rcpt_to und das parallele state.dsn.rcpt.

  • Ausgaben: ein umgeschriebenes rcpt_to und ein passendes state.dsn.rcpt (nur wenn ein Alias zutraf oder ein Duplikat entfernt wurde); kein anderes state wird berührt.

  • Übergänge: weiterschalten zu NEXT_STAGE (der einzige Übergang).

37.6. Siehe auch

pepsi-stage-relay-to-maildir, pepsi-stage-relay-to-lmtp, pepsi-stage-if, Unterstützte Funktionen, pepsi-stage-aliases(1).