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_ALGORITHMS schränkt das auf einen ein (die größten Empfänger verifizieren Ed25519 nicht und melden es in DMARC-Aggregatberichten als fail).

  • Signierdomain-Auswahl: SIGNING_DOMAIN, falls gesetzt, sonst die Domain des From:-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 mit l > 0 rundheraus 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 in state.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 in state.last_error, bis zum MAX_LIFETIME der 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 aus SIGNING_DOMAIN oder der from_header-Spalte; Hash des Nachrichtentexts aus der geladenen Nachricht).

  • Ausgaben: keine auf dem Signierpfad — das gesamte state, einschließlich state.dsn, bleibt erhalten. Nur ein Fehlschlag oder eine Wiederholung schreibt etwas (state.last_error und bei einer Wiederholung state.temporary_failures).

35.5. Siehe auch

pepsi-stage-bounce, pepsi-stage-relay-to-internet, Unterstützte Funktionen, pepsi-stage-dkim-sign(1).