Appendix A. Extended Examples (Exemples étendus)
Appendix A. Extended Examples (Exemples étendus)
Cet annexe fournit des exemples étendus d'enregistrements SPF, démontrant divers scénarios de configuration et meilleures pratiques.
A.1 Simple Examples (Exemples simples)
A.1.1 Autoriser uniquement une seule adresse IP
example.com. IN TXT "v=spf1 ip4:192.0.2.1 -all"
Explication: Seule l'adresse IP 192.0.2.1 est autorisée à envoyer des e-mails au nom d'example.com. Toutes les autres adresses IP entraîneront un résultat "fail".
A.1.2 Utilisation des enregistrements MX
example.com. IN TXT "v=spf1 mx -all"
Explication: Autorise les serveurs de messagerie répertoriés dans les enregistrements MX d'example.com à envoyer des e-mails. Il s'agit d'une configuration courante car elle s'adapte automatiquement aux modifications des enregistrements MX.
A.1.3 Utilisation des enregistrements A
example.com. IN TXT "v=spf1 a -all"
Explication: Autorise les adresses IP dans l'enregistrement A (ou AAAA pour IPv6) d'example.com à envoyer des e-mails.
A.1.4 Combinaison de plusieurs mécanismes
example.com. IN TXT "v=spf1 mx a:mail.example.com ip4:192.0.2.0/24 -all"
Explication: Autorise les e-mails des sources suivantes:
- Serveurs MX d'example.com
- Enregistrement A de mail.example.com
- N'importe quelle IP dans le réseau 192.0.2.0/24
A.1.5 Politique de soft-fail
example.com. IN TXT "v=spf1 mx a ~all"
Explication: Utilise soft-fail (~all) au lieu de hard-fail (-all). Ceci est utile pendant la phase de test ou de migration. Les destinataires peuvent accepter les e-mails mais les marquer comme suspects.
A.2 Multiple Domain Example (Exemple multi-domaines)
Pour les organisations avec plusieurs domaines utilisant la même infrastructure de messagerie:
example.com. IN TXT "v=spf1 mx -all"
example.org. IN TXT "v=spf1 redirect=_spf.example.com"
example.net. IN TXT "v=spf1 redirect=_spf.example.com"
_spf.example.com. IN TXT "v=spf1 mx:example.com -all"
Explication:
- example.com a son propre enregistrement SPF
- example.org et example.net redirigent vers l'enregistrement SPF partagé
- _spf.example.com contient la politique réelle
Avantages:
- Gestion centralisée de la configuration des serveurs de messagerie
- Une mise à jour unique affecte plusieurs domaines
- Maintenance DNS réduite
A.3 DNS Blacklist (DNSBL) Style Example (Exemple de style liste noire DNS)
Utilisation du mécanisme exists pour implémenter une fonctionnalité de type DNSBL:
example.com. IN TXT "v=spf1 exists:%\{ir}.%\{l1r+-}._spf.%\{d} -all"
Explication:
%\{ir}: Adresse IP inversée (par exemple, 192.0.2.1 devient 1.2.0.192)%\{l1r+-}: Première partie du local-part de l'expéditeur, inversée, "." et "+" remplacés par "-"%\{d}: Nom de domaine
Exemple d'expansion:
Si l'expéditeur est [email protected] envoyant depuis 192.0.2.1:
- La macro s'étend à:
1.2.0.192.user._spf.example.com
Ensuite, ce nom de domaine est interrogé pour les enregistrements A. S'il existe, la vérification SPF réussit.
Cas d'usage:
- Contrôle granulaire par utilisateur
- Intégration avec base de données ou systèmes personnalisés
- Décisions d'autorisation dynamiques
A.4 Multiple Requirements Example (Exemple d'exigences multiples)
Configuration complexe combinant plusieurs mécanismes et modificateurs:
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 ip4:198.51.100.0/24 include:_spf-servers.example.com include:_spf.google.com a:outbound.example.com mx ~all"
Explication:
ip4:192.0.2.0/24: Réseau de serveurs de messagerie internesip4:198.51.100.0/24: Réseau du centre de données de secoursinclude:_spf-servers.example.com: Inclure liste de serveurs supplémentairesinclude:_spf.google.com: Utiliser Google Workspacea:outbound.example.com: Serveur sortant spécifiquemx: Inclure les serveurs des enregistrements MX~all: Soft-fail pour tous les autres cas
Conception hiérarchique:
_spf-servers.example.com. IN TXT "v=spf1 ip4:203.0.113.0/24 ip4:198.51.100.128/25 -all"
Cela permet de diviser les grands enregistrements SPF en parties plus gérables.
A.5 Exemples de configuration de sous-domaines
A.5.1 Sous-domaines avec des politiques différentes
example.com. IN TXT "v=spf1 mx -all"
mail.example.com. IN TXT "v=spf1 a -all"
shop.example.com. IN TXT "v=spf1 include:shopify.com -all"
Explication:
- Le domaine principal utilise les enregistrements MX
- Le sous-domaine mail utilise uniquement son enregistrement A
- Le sous-domaine shop utilise un service tiers (Shopify)
A.5.2 Sous-domaines ne pouvant pas envoyer d'e-mails
noreply.example.com. IN TXT "v=spf1 -all"
static.example.com. IN TXT "v=spf1 -all"
Explication: Déclare explicitement que ces sous-domaines ne peuvent pas envoyer d'e-mails, pour prévenir l'usurpation.
A.6 Exemples d'intégration de services tiers
A.6.1 Utilisation de plusieurs fournisseurs de services de messagerie
example.com. IN TXT "v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:sendgrid.net -all"
Explication:
- Google Workspace pour les e-mails des employés
- Microsoft 365 pour les partenaires
- SendGrid pour les e-mails marketing
A.6.2 Vérification des limites de requêtes DNS
L'exemple ci-dessus utilise 3 include, chacun pouvant déclencher des requêtes supplémentaires. Il faut s'assurer que le nombre total de requêtes ne dépasse pas 10.
Méthode de vérification:
# Vérifier le SPF de Google
dig _spf.google.com TXT
# Vérifier le SPF de Microsoft
dig spf.protection.outlook.com TXT
# Vérifier le SPF de SendGrid
dig sendgrid.net TXT
Calculer le nombre de mécanismes dans chaque include, en s'assurant que le total ≤ 10.
A.7 Exemples de mauvaise configuration (à éviter)
A.7.1 ❌ Plusieurs enregistrements SPF (erreur)
example.com. IN TXT "v=spf1 mx -all"
example.com. IN TXT "v=spf1 a -all"
Problème: Cela entraînera "permerror". Un domaine ne peut avoir qu'un seul enregistrement SPF.
Méthode correcte:
example.com. IN TXT "v=spf1 mx a -all"
A.7.2 ❌ -all manquant (non sécurisé)
example.com. IN TXT "v=spf1 mx"
Problème: Pas de politique par défaut explicite, équivaut à ?all (neutre), aucune IP n'échouera.
Méthode correcte:
example.com. IN TXT "v=spf1 mx -all"
A.7.3 ❌ Dépassement de la limite de requêtes DNS
example.com. IN TXT "v=spf1 include:a include:b include:c include:d include:e include:f include:g include:h include:i include:j include:k -all"
Problème: 11 include dépassent la limite de 10 requêtes, entraînant "permerror".
Solution: Utiliser l'aplatissement SPF ou utiliser directement les mécanismes ip4.
A.8 Exemple de configuration IPv6
example.com. IN TXT "v=spf1 ip6:2001:db8::/32 ip4:192.0.2.0/24 mx -all"
Explication: Prend en charge les réseaux IPv6 et IPv4.
A.9 Exemple de chaîne d'explication
example.com. IN TXT "v=spf1 mx -all exp=explain._spf.%\{d}"
explain._spf.example.com. IN TXT "E-mail de %\{i}, mais cette IP n'est pas autorisée par %\{d}. Veuillez contacter postmaster@%\{d}."
Explication: Lorsque la vérification SPF échoue, le destinataire peut interroger la chaîne d'explication et l'afficher à l'utilisateur.
Après expansion de macro (supposons envoyé depuis 192.0.2.99):
"E-mail de 192.0.2.99, mais cette IP n'est pas autorisée par example.com. Veuillez contacter [email protected]."
A.10 Stratégie de test et de transition
Phase 1: Mode surveillance (2-4 semaines)
example.com. IN TXT "v=spf1 ?all"
Phase 2: Enregistrer les sources d'envoi réelles (2-4 semaines)
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:provider.com ?all"
Phase 3: Soft-fail (4-8 semaines)
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:provider.com ~all"
Phase 4: Mode strict (environnement de production)
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:provider.com -all"
Recommandation: Surveiller les résultats des vérifications SPF à chaque phase pour s'assurer qu'aucun e-mail légitime n'est bloqué.