Ce qui se passe
Symfony signe et chiffre les e-mails en S/MIME depuis la 4.4, avec des certificats X.509 émis par une autorité. Beaucoup de correspondants utilisent plutôt des clés OpenPGP : Symfony 8.2 les prend en charge dans le composant Mime, selon PGP/MIME (RFC 3156).
Le fonctionnement reprend celui de S/MIME : signature détachée d'un côté,
chiffrement avec les clés publiques des destinataires de l'autre. En
application complète, on configure une fois le Mailer, puis on ajoute
X-Pgp-Sign et/ou X-Pgp-Encrypt aux messages concernés. Symfony agit après
le rendu (donc avec TemplatedEmail) et signe toujours avant de chiffrer. Pas
d'extension PHP : le binaire gpg est appelé par le composant Process.
L'option on_missing_key règle le cas d'un destinataire sans clé publique :
fail, encrypt (il ne pourra pas lire) ou skip (retiré de l'envoi). Le
message ne part jamais en clair, et les destinataires en Bcc sont masqués
dans la partie chiffrée.
Le piège S/MIME
Jusqu'ici, en S/MIME, un seul destinataire sans certificat faisait partir le
message non chiffré pour tout le monde. La 8.2 ajoute
on_missing_certificate, avec les mêmes valeurs, et permet de déclarer les
certificats directement en configuration.
Mais par compatibilité, la valeur par défaut reste send_unencrypted —
dépréciée, elle ne lèvera une exception qu'en Symfony 9.0. Un message peut
aussi fixer son propre comportement :
$email->getHeaders()->addTextHeader('X-SMime-Encrypt', 'skip');Enfin, les écouteurs DKIM et S/MIME s'exécutent désormais dans un ordre fixe — signature, chiffrement, puis DKIM — pour qu'un message à la fois signé et chiffré passe toujours.
Les limites
- Seul le corps est chiffré :
Subject,FrometTorestent lisibles. - PGP/MIME est expérimental : l'API peut changer d'une version mineure à l'autre.
Source : New in Symfony 8.2: PGP/MIME Signed and Encrypted Emails, Symfony, 29 septembre 2026 ; contribution de Florent Morselli.