35. pepsi-stage-dkim-sign¶
Stellt DKIM-Signaturen vor der Zustellung voran.
35.1. Rolle¶
pepsi-stage-dkim-sign signiert die Nachricht per DKIM und schaltet sie zu einer Zustell-Stage weiter. Die Trennung von Signieren und Nachrichtenkonstruktion lässt pepsi-stage-bounce eine unsignierte DSN bauen und ihr NEXT_STAGE hierher richten, sodass ein erzeugter Bounce vor dem Senden signiert wird. Referenz: pepsi-stage-dkim-sign(1).
35.2. Funktionen¶
DKIM mit doppelter Signatur (RFC 6376): stellt standardmäßig sowohl einen RSA-2048- als auch einen Ed25519-
DKIM-Signature-Header (RFC 8463) voran;[pepsi] DKIM_ALGORITHMSschränkt das auf einen ein (die größten Empfänger verifizieren Ed25519 nicht und melden es in DMARC-Aggregatberichten alsfail).Signierdomain-Auswahl:
SIGNING_DOMAIN, falls gesetzt, sonst die Domain desFrom:-Headers der Nachricht.Immer vollständige Abdeckung des Nachrichtentexts: Das
l=-Tag für die Länge des Nachrichtentexts aus RFC 6376 wird nie ausgegeben und lässt sich nicht konfigurieren. Strenge Verifizierer (mail-auth, Stalwart und Pepsis eigener) weisen eine Signatur mitl > 0rundheraus zurück, und RFC 6376 §8.2 warnt, dass angehängter Inhalt das Original in den Augen des Lesers ersetzen kann.Nur-Voranstellen / einzelner Schreibvorgang: Signaturen werden oben hinzugefügt, sodass bestehende Signaturen weiter unten in der Nachricht unberührt bleiben; nur die
headers-Spalte wird umgeschrieben.Fail-closed: Eine Nachricht wird nie unsigniert weitergeschaltet. Wenn sich keine Signierdomain bestimmen lässt oder es für sie kein Schlüsselverzeichnis gibt, schlägt die Nachricht fehl (terminales
failed, mit dem Grund instate.last_error), und pepsi-failure-bouncer oder der Betreiber entscheidet, was mit ihr geschieht. Wenn die Schlüssel existieren, aber nicht gelesen oder verwendet werden können (eine halb abgeschlossene Rotation, eine geänderte Berechtigung), ist der Host schuld: Die Nachricht wird pausiert und erneut versucht, mit dem Grund instate.last_error, bis zumMAX_LIFETIMEder Stage (Standardwert 120 Stunden) — beheben Sie den Schlüssel, und die Warteschlange leert sich von selbst.
35.3. Konfiguration¶
[stage-<name>]: PROGRAM = pepsi-stage-dkim-sign, NEXT_STAGE (erforderlich) und SIGNING_DOMAIN, dazu die Signaturparameter HEADER_CANONICALIZATION / BODY_CANONICALIZATION (relaxed — der Standard — oder simple, unabhängig voneinander wählbar), SIGNED_HEADERS (die h=-Menge; muss From enthalten) und SIGNATURE_EXPIRATION_DAYS (das x=-Tag; standardmäßig keines). Schlüsselmaterial und Selektoren kommen aus dem gemeinsamen Abschnitt [pepsi] (KEY_DIR, DKIM_SELECTOR; der Ed25519-Selektor ist dieser Name mit angehängtem -ed25519; DKIM_ALGORITHMS). Siehe pepsi-stage-dkim-sign(1).
35.4. State¶
Eingaben: keine aus
state(Domain ausSIGNING_DOMAINoder derfrom_header-Spalte; Hash des Nachrichtentexts aus der geladenen Nachricht).Ausgaben: keine auf dem Signierpfad — das gesamte
state, einschließlichstate.dsn, bleibt erhalten. Nur ein Fehlschlag oder eine Wiederholung schreibt etwas (state.last_errorund bei einer Wiederholungstate.temporary_failures).
35.5. Siehe auch¶
pepsi-stage-bounce, pepsi-stage-relay-to-internet, Unterstützte Funktionen, pepsi-stage-dkim-sign(1).