Appendix E. Mail Services (Services de messagerie)
Appendix E. Mail Services (Services de messagerie)
Cette annexe discute des considérations d'implémentation SPF pour différents scénarios de services de messagerie.
E.1 Web-Based Mail Services (Services de messagerie Web)
E.1.1 Perspective du fournisseur de services
Scénario: Fourniture de services de messagerie Web (comme Gmail, Yahoo Mail, Outlook.com)
Considérations SPF:
1. Les utilisateurs envoient des e-mails depuis plusieurs domaines
2. Tous les e-mails sont envoyés via les serveurs du fournisseur de services
3. Enregistrements SPF appropriés requis
Exemple de configuration:
# Domaine principal du fournisseur de services
mailprovider.com IN TXT "v=spf1 ip4:203.0.113.0/24 ip4:198.51.100.0/24 -all"
# Support pour les domaines personnalisés
# Les utilisateurs doivent inclure le fournisseur de services dans leur domaine
user-domain.com IN TXT "v=spf1 include:_spf.mailprovider.com -all"
_spf.mailprovider.com IN TXT "v=spf1 ip4:203.0.113.0/24 ip4:198.51.100.0/24 -all"
E.1.2 Configuration des domaines personnalisés
Exigence de l'utilisateur: Utiliser un domaine personnalisé pour envoyer des e-mails via le service de messagerie Web
Étapes de configuration:
- Vérifier la propriété du domaine
Le fournisseur de services exige l'ajout d'un enregistrement de vérification:
_verification.user-domain.com IN TXT "provider-verification-code"
- Configurer SPF
user-domain.com IN TXT "v=spf1 include:_spf.mailprovider.com -all"
- Configurer DKIM
# Le fournisseur de services fournit la clé publique DKIM
selector._domainkey.user-domain.com IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
- Configurer DMARC
_dmarc.user-domain.com IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]"
E.2 Shared Hosting Services (Services d'hébergement partagé)
E.2.1 Défis
Problème: Plusieurs clients partagent la même adresse IP
hosting-provider.com: 203.0.113.10
customer1.com: Hébergé sur 203.0.113.10
customer2.com: Hébergé sur 203.0.113.10
customer3.com: Hébergé sur 203.0.113.10
Exigence SPF: Chaque domaine client doit autoriser l'IP partagée
E.2.2 Solutions
Solution 1: Inclusion SPF unifiée
# Le fournisseur d'hébergement fournit
_spf.hosting-provider.com IN TXT "v=spf1 ip4:203.0.113.0/24 -all"
# Configuration du client
customer1.com IN TXT "v=spf1 include:_spf.hosting-provider.com -all"
customer2.com IN TXT "v=spf1 include:_spf.hosting-provider.com -all"
customer3.com IN TXT "v=spf1 include:_spf.hosting-provider.com -all"
Solution 2: Autorisation IP directe
# Chaque client configure indépendamment
customer1.com IN TXT "v=spf1 ip4:203.0.113.10 -all"
customer2.com IN TXT "v=spf1 ip4:203.0.113.10 -all"
Avantages: Simple, pas de dépendances Inconvénients: Lors d'un changement d'IP, tous les clients doivent mettre à jour
Solution 3: IP dédiée (recommandée pour les gros clients)
# Attribuer une IP dédiée aux clients importants
important-customer.com IN TXT "v=spf1 ip4:203.0.113.50 -all"
E.2.3 Meilleures pratiques
Les fournisseurs d'hébergement devraient:
1. Fournir une documentation claire sur la configuration SPF
2. Générer automatiquement les enregistrements SPF (via le panneau de contrôle)
3. Informer les clients des changements d'adresse IP
4. Fournir des outils de validation SPF
Les clients devraient:
1. Utiliser la méthode include pour référencer le SPF du fournisseur d'hébergement
2. Valider régulièrement les enregistrements SPF
3. Surveiller la délivrabilité des e-mails
E.3 Enterprise Mail Systems (Systèmes de messagerie d'entreprise)
E.3.1 Environnement complexe
Scénario d'entreprise typique:
- Plusieurs centres de données
- Plusieurs serveurs de messagerie sortants
- Services de messagerie tiers (marketing, notifications, etc.)
- Serveurs de bureaux locaux
- Intégration de services cloud
Défis de configuration SPF:
1. Limite de requêtes DNS (10 fois)
2. Limite de taille d'enregistrement (512 octets)
3. Plusieurs départements/unités commerciales
4. Changements d'infrastructure fréquents
E.3.2 Architecture SPF d'entreprise
Conception hiérarchique:
# Domaine principal
company.com IN TXT "v=spf1 include:_spf-internal.company.com include:_spf-external.company.com -all"
# Serveurs internes
_spf-internal.company.com IN TXT "v=spf1 ip4:10.0.0.0/8 ip4:203.0.113.0/24 -all"
# Services externes
_spf-external.company.com IN TXT "v=spf1 include:_spf.salesforce.com include:sendgrid.net include:mailchimp.com -all"
# Sous-domaines départementaux
marketing.company.com IN TXT "v=spf1 include:_spf-marketing.company.com -all"
_spf-marketing.company.com IN TXT "v=spf1 include:sendgrid.net include:mailchimp.com -all"
Gestion des plages IP:
# Centre de données A
_spf-dc-a.company.com IN TXT "v=spf1 ip4:203.0.113.0/25 -all"
# Centre de données B
_spf-dc-b.company.com IN TXT "v=spf1 ip4:198.51.100.0/25 -all"
# Agrégation
_spf-datacenters.company.com IN TXT "v=spf1 include:_spf-dc-a.company.com include:_spf-dc-b.company.com -all"
E.3.3 Stratégie d'aplatissement SPF
Problème: Dépassement de la limite de 10 requêtes DNS
Solution: Aplatissement régulier
# Script d'automatisation
def flatten_spf_includes():
"""
Interroger régulièrement toutes les IP de domaine inclus
Générer un enregistrement SPF aplati
"""
includes = [
'_spf.salesforce.com',
'sendgrid.net',
'mailchimp.com'
]
ips = []
for domain in includes:
# Analyser l'enregistrement SPF et extraire les IP
ips.extend(resolve_spf_ips(domain))
# Générer un nouvel enregistrement SPF
spf_record = f"v=spf1 {' '.join([f'ip4:{ip}' for ip in ips])} -all"
# Mettre à jour DNS (via API)
update_dns_record('_spf-flattened.company.com', spf_record)
# Exécuter hebdomadairement
Note: Après aplatissement, mettre à jour régulièrement car les IP tierces peuvent changer
E.4 Email Marketing Services (Services de marketing par e-mail)
E.4.1 Configuration du service
Services courants:
- SendGrid
- Mailchimp
- Amazon SES
- Mailgun
Exemples de configuration SPF:
SendGrid:
company.com IN TXT "v=spf1 include:sendgrid.net -all"
Mailchimp:
company.com IN TXT "v=spf1 include:servers.mcsv.net -all"
Amazon SES:
company.com IN TXT "v=spf1 include:amazonses.com -all"
Utilisation combinée:
company.com IN TXT "v=spf1 mx include:sendgrid.net include:servers.mcsv.net -all"
E.4.2 Stratégie de sous-domaine
Meilleure pratique: Utiliser un sous-domaine dédié pour les e-mails marketing
# Domaine principal (pour les e-mails professionnels importants)
company.com IN TXT "v=spf1 mx -all"
# Sous-domaine marketing
marketing.company.com IN TXT "v=spf1 include:sendgrid.net -all"
# Sous-domaine notifications
notifications.company.com IN TXT "v=spf1 include:amazonses.com -all"
Avantages:
1. Séparation de la réputation (les e-mails marketing n'affectent pas le domaine principal)
2. Gestion plus facile des enregistrements SPF
3. Meilleure surveillance et reporting
4. Conforme aux meilleures pratiques DMARC
E.4.3 Configuration DKIM
Combiné avec SPF:
# SPF
marketing.company.com IN TXT "v=spf1 include:sendgrid.net -all"
# DKIM (fourni par SendGrid)
s1._domainkey.marketing.company.com IN CNAME s1.domainkey.u12345.wl.sendgrid.net
s2._domainkey.marketing.company.com IN CNAME s2.domainkey.u12345.wl.sendgrid.net
# DMARC
_dmarc.marketing.company.com IN TXT "v=DMARC1; p=quarantine; pct=100; rua=mailto:[email protected]"
E.5 Transactional Email Services (Services d'e-mail transactionnels)
E.5.1 Scénario
E-mails transactionnels:
- Confirmation d'inscription
- Réinitialisation de mot de passe
- Notifications de commande
- Factures et reçus
Fournisseurs de services:
- Amazon SES
- SendGrid
- Mailgun
- Postmark
E.5.2 Configuration
Utiliser un sous-domaine dédié:
# Sous-domaine d'e-mail transactionnel
transactional.company.com IN TXT "v=spf1 include:_spf.mailgun.org -all"
# DKIM
smtp._domainkey.transactional.company.com IN TXT "v=DKIM1; k=rsa; p=..."
Configuration de l'application:
# Exemple Django
EMAIL_HOST = 'smtp.mailgun.org'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_FROM = '[email protected]'
# Envoyer un e-mail
send_mail(
subject='Password Reset',
message='Click here to reset...',
from_email='[email protected]',
recipient_list=['[email protected]']
)
E.5.3 Surveillance
Métriques clés:
- Taux de livraison des e-mails
- Taux de rebond
- Taux de réussite SPF
- Taux de réussite DKIM
- Taux d'alignement DMARC
- Taux de plaintes
Paramètres d'alerte:
if delivery_rate < 95%:
alert("Delivery rate dropped below 95%")
if spf_pass_rate < 98%:
alert("SPF configuration issue detected")
E.6 Mobile and IoT Devices (Appareils mobiles et IoT)
E.6.1 Défis
Appareils mobiles:
- Adresses IP dynamiques
- Envoi via les réseaux des opérateurs
- Ne peuvent pas être listés dans SPF
Appareils IoT:
- Grand nombre d'appareils
- Distribués sur différents réseaux
- Envoi d'e-mail direct
E.6.2 Solutions
Solution 1: Utiliser un relais SMTP
Appareil → Relais SMTP → Destinataire
Configuration:
- L'appareil se connecte au relais via l'authentification
- Serveur relais autorisé dans l'enregistrement SPF
- Le relais ajoute une signature DKIM
Configuration SPF:
iot-devices.company.com IN TXT "v=spf1 mx include:_spf-relay.company.com -all"
_spf-relay.company.com IN TXT "v=spf1 ip4:203.0.113.50 -all"
Solution 2: Envoi par API
Les appareils envoient des e-mails via l'API HTTP:
- Utiliser un service tiers (comme l'API SendGrid)
- Couvert par l'enregistrement SPF du fournisseur de services
- Aucun envoi SMTP direct depuis l'appareil requis
E.7 Best Practices Summary (Résumé des meilleures pratiques)
E.7.1 Recommandations générales
1. Utiliser des sous-domaines pour séparer différents types d'e-mails
2. Implémenter la triple protection SPF + DKIM + DMARC
3. Vérifier et mettre à jour régulièrement les enregistrements SPF
4. Surveiller les limites de requêtes DNS
5. Utiliser include au lieu de lister directement toutes les IP
6. Utiliser des IP dédiées pour les services critiques
7. Implémenter la surveillance de l'authentification des e-mails
8. Établir un processus de réponse aux incidents
E.7.2 Liste de vérification de configuration
Vérifier avant publication:
□ Syntaxe de l'enregistrement SPF correcte
□ Nombre de requêtes DNS ≤ 10
□ Taille de l'enregistrement < 512 octets
□ Tous les serveurs d'envoi autorisés
□ Utiliser des qualificatifs appropriés (-all ou ~all)
□ DKIM configuré
□ Politique DMARC publiée
□ E-mails de test envoyés et vérifiés
Surveillance continue:
□ Vérifier les rapports DMARC hebdomadairement
□ Surveiller la délivrabilité des e-mails
□ Suivre les erreurs SPF/DKIM
□ Vérifier les nouvelles sources d'envoi
□ Mettre à jour les modifications des services tiers