35. pepsi-stage-dkim-sign¶
Ajouter les signatures DKIM en tête avant la remise.
35.1. Rôle¶
pepsi-stage-dkim-sign signe le message avec DKIM et l’avance vers une étape de remise. Séparer la signature de la construction du message permet à pepsi-stage-bounce de construire un DSN non signé et de pointer son NEXT_STAGE ici, de sorte qu’un rebond généré est signé avant d’être envoyé. Référence : pepsi-stage-dkim-sign(1).
35.2. Fonctionnalités¶
DKIM à double signature (RFC 6376) : ajoute par défaut en tête à la fois un en-tête
DKIM-SignatureRSA-2048 et un Ed25519 (RFC 8463) ;[pepsi] DKIM_ALGORITHMSréduit cela à un seul (les plus grands destinataires ne vérifient pas Ed25519 et le signalent commefaildans les rapports agrégés DMARC).Sélection du domaine de signature :
SIGNING_DOMAINs’il est défini, sinon le domaine de l’en-têteFrom:du message.Couverture intégrale du corps, toujours : la balise de longueur de corps
l=de la RFC 6376 n’est jamais émise et n’est pas configurable. Les vérificateurs stricts (mail-auth, Stalwart et celui de Pepsi) rejettent purement et simplement une signature avecl > 0, et la RFC 6376 §8.2 avertit qu’un contenu ajouté à la fin peut remplacer l’original aux yeux du lecteur.Ajout en tête uniquement / écriture unique : les signatures sont ajoutées en haut, de sorte que les signatures existantes plus bas dans le message ne sont pas perturbées ; seule la colonne
headersest réécrite.Fail-closed : un message n’est jamais avancé non signé. Si aucun domaine de signature ne peut être déterminé, ou s’il n’y a pas de répertoire de clés pour lui, le message est mis en échec (
failedterminal, avec la raison dansstate.last_error), et pepsi-failure-bouncer ou l’opérateur décide de ce qu’il en advient. Si les clés existent mais ne peuvent être lues ou utilisées (une rotation à moitié faite, une permission modifiée), c’est l’hôte qui est en cause : le message est mis en pause et réessayé, avec la raison dansstate.last_error, jusqu’auMAX_LIFETIMEde l’étape (par défaut 120 heures) — corrigez la clé et la file se vide d’elle-même.
35.3. Configuration¶
[stage-<name>] : PROGRAM = pepsi-stage-dkim-sign, NEXT_STAGE (obligatoire) et SIGNING_DOMAIN, plus les paramètres de signature HEADER_CANONICALIZATION / BODY_CANONICALIZATION (relaxed — la valeur par défaut — ou simple, choisissables indépendamment), SIGNED_HEADERS (l’ensemble h= ; doit inclure From) et SIGNATURE_EXPIRATION_DAYS (l’étiquette x= ; aucune par défaut). Le matériel de clés et les sélecteurs proviennent de la section partagée [pepsi] (KEY_DIR, DKIM_SELECTOR ; le sélecteur Ed25519 est ce nom suivi de -ed25519 ; DKIM_ALGORITHMS). Voir pepsi-stage-dkim-sign(1).
35.4. État¶
Entrées : aucune depuis
state(domaine depuisSIGNING_DOMAINou la colonnefrom_header; hachage du corps depuis le message chargé).Sorties : aucune sur le chemin de signature — tout le
state, y comprisstate.dsn, est préservé. Seul un échec ou un réessai écrit quelque chose (state.last_error, etstate.temporary_failurespour un réessai).
35.5. Voir aussi¶
pepsi-stage-bounce, pepsi-stage-relay-to-internet, Fonctionnalités prises en charge, pepsi-stage-dkim-sign(1).