Aller au contenu principal

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:

  1. 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"
  1. Configurer SPF
user-domain.com IN TXT "v=spf1 include:_spf.mailprovider.com -all"
  1. Configurer DKIM
# Le fournisseur de services fournit la clé publique DKIM
selector._domainkey.user-domain.com IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
  1. 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