Générateur SPF : concevoir un enregistrement DNS
Introduction
L’authentification des e-mails repose aujourd’hui sur un triptyque SPF, DKIM et DMARC. Dans de nombreuses infrastructures PME ou multi-VPS, le SPF reste la première ligne de défense contre l’usurpation de domaine (spoofing).
Un enregistrement SPF mal conçu ne bloque pas seulement les envois frauduleux : il peut également dégrader la délivrabilité légitime, générer des erreurs permerror, ou dépasser les limites DNS imposées par la RFC 7208.
L’outil SPF Generator d’ITPlatform permet de construire un enregistrement TXT conforme, tout en intégrant :
- Comptage des lookups DNS (limite RFC : 10)
- Validation IPv4 / IPv6 / domaines
- Sélection explicite de la politique
-all,~all,?all - Structuration propre des mécanismes
include,ip4,ip6,a,mx
Cette page documente l’usage professionnel de l’outil et les implications techniques associées.
Problématique terrain
Sur le terrain, les problématiques SPF rencontrées sont récurrentes :
- Empilement d’
include:successifs (Google, Microsoft 365, CRM, outils marketing) - Dépassement des 10 lookups DNS →
permerror - Utilisation abusive de
~allen production - Absence d’inventaire des expéditeurs tiers
- Enregistrement supérieur à 255 caractères par chaîne TXT
- Conflit entre plusieurs enregistrements SPF (interdit par RFC 7208)
Exemple typique :
v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:mailgun.org include:sendgrid.net ~all
Chaque include: peut générer plusieurs requêtes DNS. Sans contrôle, on dépasse rapidement la limite.
L’objectif n’est pas de « faire fonctionner » SPF, mais de le concevoir proprement dans une logique d’architecture.
Explication technique structurée
1. Structure d’un enregistrement SPF
Un enregistrement SPF valide suit ce format :
v=spf1 <mécanismes> <qualificateur final>
Exemple minimal :
v=spf1 ip4:203.0.113.5 -all
2. Mécanismes supportés par l’outil
L’outil SPF Generator prend en charge :
amxinclude:ip4:ip6:all(politique finale)
3. Mécanismes générant des lookups DNS
Selon la RFC 7208 :
Les mécanismes suivants génèrent des requêtes DNS :
includeamxexistsptr(déconseillé)
Limite stricte : 10 lookups maximum, includes imbriqués compris.
Les mécanismes suivants ne génèrent pas de lookup :
ip4ip6all
L’outil affiche un compteur de lookups estimé afin d’éviter un dépassement.
4. Politique finale
Trois modes sont disponibles :
-all→ Fail (recommandé en production)~all→ SoftFail (phase transitoire)?all→ Neutral (déconseillé en production)
En environnement maîtrisé, -all doit être utilisé.
Implémentation concrète
1. Cas simple : serveur SMTP unique sur VPS
Infrastructure :
- VPS unique
- IP publique : 203.0.113.5
- Postfix local
Configuration générée :
v=spf1 ip4:203.0.113.5 -all
Déploiement BIND :
example.com. 3600 IN TXT "v=spf1 ip4:203.0.113.5 -all"
Vérification :
dig TXT example.com +short
2. Cas hybride : Google Workspace + serveur applicatif
Infrastructure :
- Google Workspace
- Application interne envoyant via IP dédiée 198.51.100.10
Configuration générée :
v=spf1 include:_spf.google.com ip4:198.51.100.10 -all
Vérification du nombre de lookups :
dig TXT _spf.google.com
Attention : Google utilise plusieurs sous-includes. Le total doit rester < 10.
3. Cas multi-fournisseurs SaaS
Exemple :
v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:mailgun.org -all
Analyse requise :
dig TXT spf.protection.outlook.com
dig TXT mailgun.org
Dans certains cas, un flattening SPF peut être nécessaire (non automatisé dans cette version de l’outil).
4. Vérification post-déploiement
Test DNS :
dig TXT example.com
Test SPF réel :
spfquery --ip=198.51.100.10 --sender=test@example.com --helo=mail.example.com
Analyse des logs Postfix :
grep spf /var/log/mail.log
Erreurs fréquentes
Plusieurs enregistrements SPF
Interdit :
example.com IN TXT "v=spf1 ip4:203.0.113.5 -all"
example.com IN TXT "v=spf1 include:_spf.google.com -all"
Doit être fusionné en un seul.
Dépassement des 10 lookups
Résultat :
permerror (too many DNS lookups)
Impact :
- Rejet par certains MTA
- Échec DMARC
Utilisation permanente de ~all
~all n’est pas une configuration de production finale.
Utilisation de ptr
Déprécié, lent, fragile, non recommandé.
Record trop long
Limites DNS :
- 255 caractères par chaîne TXT
- 512 bytes UDP
Si nécessaire :
"v=spf1 ip4:203.0.113.5 "
"include:_spf.google.com -all"
Bonnes pratiques professionnelles
- Maintenir un inventaire des expéditeurs autorisés
- Préférer
ip4/ip6auxincludequand possible - Limiter les fournisseurs tiers
- Supprimer les expéditeurs obsolètes
- Activer DMARC avec reporting
- Monitorer les taux SPF pass
- Revue annuelle des mécanismes
- Documenter l’architecture mail dans le dossier d’exploitation
En environnement multi-VPS ou client SaaS, prévoir une politique de gouvernance des ajouts d’expéditeurs.
Conclusion pragmatique
SPF n’est pas un simple champ DNS à remplir. C’est un composant d’architecture mail.
Le SPF Generator d’ITPlatform permet :
- De structurer proprement un record conforme
- D’éviter le dépassement des lookups DNS
- D’imposer une politique claire
- De réduire les erreurs opérationnelles courantes
Il ne remplace pas :
- Un audit complet de délivrabilité
- Une stratégie DMARC
- Une gouvernance des expéditeurs
Mais il constitue une base fiable pour produire un SPF propre et maintenable.
Liens internes suggérés
- Générateur SPF
- Audit technique infrastructure mail
- Déploiement VPS sécurisé
- Accompagnement architecture e-mail
