85.1.15. pepsi-stage-discard¶
discard a message (a sink stage for staging)
- Handbuchabschnitt:
1
85.1.15.1.1. Name¶
pepsi-stage-discard - die Discard-(Senken-)Stage der Pepsi-Pipeline.
85.1.15.1.2. Übersicht¶
pepsi-stage-discard [GLOBAL-OPTIONS] worker
85.1.15.1.3. Beschreibung¶
Diese Stage hat den Standardwert FUSION = yes: Wenn Stage-Fusion aktiviert ist ([pepsi] ALLOW_FUSION, der Standardwert) und diese Stage in das vereinheitlichte pepsi-Binärprogramm eingefaltet ist, kann ein Vorgänger sie in seinem eigenen Worker-Prozess ausführen, statt sie separat zu dispatchen. Siehe pepsi-dispatch(1) und pepsi.conf(5).
pepsi-stage-discard ist ein Stage-Programm, das von pepsi-dispatch(1) als persistenter Worker ausgeführt wird, der Nachrichten-IDs von der Standardeingabe liest. Es lädt diesen pepsi.workqueue-Datensatz (und weigert sich zu handeln, sofern sein status nicht running ist), liest seinen [stage-<stage>]-Abschnitt und verwirft dann die Nachricht: Der Datensatz wird gelöscht und dem Dispatcher als Erfolg gemeldet. Nichts wird irgendwohin weitergeleitet. Dies ist für Staging- und Test-Installationen gedacht — zum Beispiel eine Pipeline, die Ingress, Authentifizierung und die Stages durchspielt, ohne Mail ins Netzwerk zu bringen.
Das Verwerfen ist bewusst terminal: Es ignoriert NEXT_STAGE. Zwei Optionen formen, was — wenn überhaupt — das Verwerfen dem Absender zurückmeldet.
DISPOSITION wählt das simulierte Ergebnis: success (der Standardwert) behandelt die Nachricht als zugestellt, failure behandelt sie als dauerhaften Zustellfehler.
BOUNCE (Standardwert no) wählt, ob das Verwerfen überhaupt eine Delivery-Status-Notification (DSN) ausgeben darf. Wenn es darf, werden die DSN-Wünsche des Absenders stets beachtet, und zwar je Empfänger: NOTIFY wird jeweils zu einem RCPT angegeben, also wird es auch empfängerweise beantwortet. In beiden Fällen wird der Datensatz selbst stets gelöscht; ein Bericht ist eine Geschwister-Nachricht, die neben dieser Löschung erzeugt wird, eine je berichtbarem Empfänger, im selben einzelnen Datenbankaufruf (ihr Token ist das des Originals mit dem Suffix -discard<N>, sodass die Erzeugung höchstens einmal geschieht):
failure+BOUNCE = yes: Je Empfänger, dessenNOTIFYFAILUREanfordert (der Standardwert bei Abwesenheit), wird ein Geschwister-Datensatz zum BOUNCE_STAGE der Stage geroutet, das den Failure-Bounce erzeugt;NOTIFY=NEVERverwirft stillschweigend.success+BOUNCE = yes: Ein positiver (Action: delivered-)Bericht wird auf dieselbe Weise erzeugt, aber nur, wenn das globale[pepsi]-ORIGINATE_SUCCESS_DSNaktiviert ist und dasNOTIFYdieses EmpfängersSUCCESSanfordert (Success hat keinen impliziten Standardwert).Eine Nachricht, die bereits ein Bounce ist (der Null-Absender), erhält nie erneut einen Bounce und zieht auch nie einen Erfolgsbericht nach sich.
In jedem Fall, in dem keine DSN gerechtfertigt ist — BOUNCE = no, ein NOTIFY, das den relevanten Bericht nicht anfordert, eine Null-Absender-Nachricht oder kein verdrahtetes BOUNCE_STAGE —, wird der Datensatz einfach gelöscht, ohne dass etwas erzeugt wird.
85.1.15.1.4. Konfiguration¶
Die Optionen liegen im eigenen [stage-<name>]-Abschnitt der Stage (PROGRAM = pepsi-stage-discard): DISPOSITION (success/failure), BOUNCE (yes/no) und das BOUNCE_STAGE, zu dem die Geschwister-Berichte eines berichtbaren Verwerfens geroutet werden. Beide Stage-Optionen sind optional — ein Verwerfen ohne BOUNCE_STAGE löscht den Datensatz einfach. NEXT_STAGE wird ignoriert (ein Verwerfen ist terminal), und der Erfolgspfad konsultiert das gemeinsame [pepsi] ORIGINATE_SUCCESS_DSN-Flag. Alle sind in pepsi.conf(5) dokumentiert.
85.1.15.1.5. State¶
Eingaben: state.dsn — das notify/orcpt jedes Empfängers und das envid/ret auf Nachrichtenebene, verwendet, um empfängerweise zu entscheiden, ob (und wie) der Absender benachrichtigt wird.
Ausgaben: keine auf der Nachricht selbst, die stets gelöscht wird. Bei einem berichtbaren Verwerfen erhält jeder berichtbare Empfänger eine Geschwister-Nachricht bei BOUNCE_STAGE, die ein state.bounce-Objekt trägt (kind = permanent für einen Fehlschlag oder success für einen positiven Bericht, dazu diagnostic und der failed_recipient, über den berichtet wird), für pepsi-stage-bounce(1). Das State-Layout wird in pepsi.state(7) beschrieben.
Übergänge (getrieben von DISPOSITION, BOUNCE, dem NOTIFY jedes Empfängers und [pepsi] ORIGINATE_SUCCESS_DSN):
ein berichtbares Ergebnis — ein Fehlschlag (
DISPOSITION = failure,BOUNCE = yes,NOTIFY, das Failure will) oder ein positiver Bericht (DISPOSITION = success,BOUNCE = yes, mitORIGINATE_SUCCESS_DSNundNOTIFY=SUCCESS) — schließt den Datensatz ab und erzeugt je solchem Empfänger einen Geschwister-Datensatz bei BOUNCE_STAGE;andernfalls → abschließen (der Datensatz wird gelöscht, nichts wird erzeugt).
NEXT_STAGE wird ignoriert (ein Verwerfen ist immer terminal); ein Null-Absender-Bounce erhält nie erneut einen Bounce. Die Stage schaltet nie weiter, pausiert nie und schlägt nie fehl.
85.1.15.1.6. Befehle¶
- worker
Läuft als persistenter pepsi-dispatch(1)-Worker, der Nachrichten-IDs von der Standardeingabe liest.
85.1.15.1.7. Globale Optionen¶
- -c FILE, –config FILE
Liest die Konfiguration aus FILE, statt die Standardorte zu durchsuchen.
- -L LOGLEVEL, –log LOGLEVEL
Setzt die Log-Ausführlichkeit (Standardwert
info).- -v, –verbose
Zeigt Log-Meldungen aus allen Quellen.
- -h, –help; -V, –version
Gibt eine Verwendungsübersicht / die Version aus und beendet sich.
85.1.15.1.8. Exit-Status¶
Das Ergebnis jeder Nachricht wird pepsi-dispatch(1) auf der Statuszeile des Workers gemeldet, nicht als Exit-Status.
- 0
Der Worker lief, bis seine Standardeingabe geschlossen wurde.
- 1
Ein fataler Fehler ist aufgetreten (unlesbare Konfiguration, die Datenbank konnte nicht geöffnet werden, oder Standardein-/-ausgabe schlug fehl). Der Grund wird in das Journal geschrieben.
85.1.15.1.9. Beispiele¶
Nachricht 42 über einen einmaligen Worker verwerfen (sie muss running sein):
echo 42 | pepsi-stage-discard -c /etc/pepsi/pepsi.conf worker
Ein Staging-[stage-*]-Abschnitt, der alles still als zugestellt verwirft:
[stage-sink]
PROGRAM = pepsi-stage-discard
DISPOSITION = success
Ein Abschnitt, der dauerhaften Fehlschlag simuliert und einen Bounce erzeugt (unter Beachtung von NOTIFY):
[stage-sink]
PROGRAM = pepsi-stage-discard
DISPOSITION = failure
BOUNCE = yes
BOUNCE_STAGE = bounce
85.1.15.1.10. Siehe auch¶
pepsi-config(1), pepsi-stage-bounce(1), pepsi-stage-relay-to-internet(1), pepsi-stage-relay-to-smarthost(1), pepsi-dispatch(1), pepsi.conf(5), pepsi.state(7), pepsi-setup(1)
85.1.15.1.11. Fehler¶
Melden Sie Fehler an den Pepsi-Issue-Tracker.