Email transactionnel & DKIM multi-NDD
Configuration opérationnelle de la stack email Telaria en production. SPF + DKIM + DMARC implémentés et validés.
Architecture
Application Symfony
│ (Mailer DSN : smtp://localhost)
â–Ľ
Postfix (satellite / relais)
│ (relay → OVH SMTP)
â–Ľ
OpenDKIM (signature DKIM avant envoi)
│
â–Ľ
OVH SMTP (relais sortant)
│
â–Ľ
Destinataire
Postfix est configuré en mode satellite : il ne reçoit pas d'emails entrants, il relaie uniquement les emails sortants de l'application vers OVH.
Postfix — configuration satellite
Fichier : /etc/postfix/main.cf (extraits clés)
# Mode satellite — relais OVH uniquement relayhost = [ssl0.ovh.net]:465 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = encrypt smtp_tls_wrappermode = yes # Milter OpenDKIM (signature avant envoi) milter_default_action = accept milter_protocol = 6 smtpd_milters = unix:/var/spool/postfix/opendkim/opendkim.sock non_smtpd_milters = unix:/var/spool/postfix/opendkim/opendkim.sock
Credentials OVH : /etc/postfix/sasl_passwd
[ssl0.ovh.net]:465 login@telaria.dev:mot_de_passe
sudo postmap /etc/postfix/sasl_passwd # recompiler après modif sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
OpenDKIM — multi-NDD
OpenDKIM signe tous les emails sortants avec la clé privée du domaine expéditeur. La config multi-NDD permet de signer depuis plusieurs domaines avec des clés distinctes.
Fichiers de config
/etc/opendkim.conf (extraits)
Mode sv Socket local:/var/spool/postfix/opendkim/opendkim.sock UserID opendkim UMask 007 Syslog yes SyslogSuccess yes LogWhy yes # Multi-NDD KeyTable /etc/opendkim/key.table SigningTable refile:/etc/opendkim/signing.table ExternalIgnoreList refile:/etc/opendkim/trusted.hosts InternalHosts refile:/etc/opendkim/trusted.hosts
/etc/opendkim/signing.table — qui signe quoi
*@telaria.dev telaria._domainkey.telaria.dev *@adoption.fr adoption._domainkey.adoption.fr
/etc/opendkim/key.table — quel sélecteur/clé par domaine
telaria._domainkey.telaria.dev telaria.dev:telaria:/etc/opendkim/keys/telaria.dev/telaria.private adoption._domainkey.adoption.fr adoption.fr:adoption:/etc/opendkim/keys/adoption.fr/adoption.private
/etc/opendkim/trusted.hosts
127.0.0.1 localhost telaria.dev adoption.fr
Génération des clés
sudo mkdir -p /etc/opendkim/keys/telaria.dev cd /etc/opendkim/keys/telaria.dev sudo opendkim-genkey -s telaria -d telaria.dev sudo chown opendkim:opendkim telaria.private sudo chmod 600 telaria.private # telaria.txt contient l'enregistrement DNS TXT Ă publier cat telaria.txt
Enregistrement DNS Ă publier (OVH)
telaria._domainkey.telaria.dev TXT "v=DKIM1; h=sha256; k=rsa; p=<clé_publique>"
Vérification
# Tester la signature echo "Test" | mail -s "test DKIM" destinataire@example.com # Vérifier les headers reçus : chercher "DKIM-Signature" et "Authentication-Results: dkim=pass" # Vérification DNS dig TXT telaria._domainkey.telaria.dev
SPF
Enregistrement DNS à publier sur chaque domaine expéditeur :
telaria.dev TXT "v=spf1 include:mx.ovh.com ~all"
DMARC
_dmarc.telaria.dev TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@telaria.dev; pct=100"
Piège connu — socket Postfix/OpenDKIM
Le socket OpenDKIM doit être dans le chroot Postfix pour que Postfix puisse y accéder :
# Créer le répertoire socket dans le chroot Postfix sudo mkdir -p /var/spool/postfix/opendkim sudo chown opendkim:postfix /var/spool/postfix/opendkim sudo chmod 750 /var/spool/postfix/opendkim # Ajouter opendkim au groupe postfix (ou l'inverse) sudo adduser postfix opendkim
Symptôme si mal configuré : emails envoyés sans signature DKIM (Authentication-Results: dkim=none) ou Postfix refuse de démarrer (milter: can't connect).
Symfony Mailer — configuration
Dans .env.local :
MAILER_DSN=smtp://localhost:25 # ou MAILER_DSN=sendmail://default
Le Mailer Symfony envoie au Postfix local, qui relaie signé vers OVH.
Voir aussi
stack-production.md— contexte infra (services systemd, ports)deployment.md— installation initialessl-tls.md— TLS et certificatsguides/dsn-ovh.md— configuration DNS OVH