dns-zonefile-config

DNS Zonefile Configuration

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "dns-zonefile-config" with this command: npx skills add guia-matthieu/clawfu-skills/guia-matthieu-clawfu-skills-dns-zonefile-config

DNS Zonefile Configuration

Configurez correctement vos zones DNS pour l'email deliverability (SPF, DKIM, DMARC), la sécurité (DNSSEC, CAA), et l'automatisation (OVH API, Cloudflare, Terraform), basé sur les best practices 2024-2025.

When to Use This Skill

  • Configurer l'authentification email - SPF, DKIM, DMARC pour éviter le spam folder

  • Sécuriser un domaine - DNSSEC, CAA records, protection contre le spoofing

  • Automatiser la gestion DNS - OVH API, Cloudflare API, Terraform

  • Débugger des problèmes DNS - dig, nslookup, MXToolbox

  • Migrer ou configurer un nouveau domaine - Setup complet from scratch

Methodology Foundation

Sources:

  • Cisco Email Authentication Best Practices

  • DMARCLY Definitive Guide

  • Cloudflare Terraform Best Practices

  • OVH Python API

Why This Matters: Depuis février 2024, Google et Yahoo exigent SPF, DKIM et DMARC pour les envois bulk. Sans configuration correcte, vos emails finissent en spam. Les expéditeurs authentifiés ont 2.7x plus de chances d'atteindre l'inbox.

What Claude Does vs What You Decide

Claude Does You Decide

Structures sales frameworks Deal strategy

Suggests discovery questions Relationship approach

Creates proposal templates Pricing decisions

Identifies objection patterns Negotiation tactics

Analyzes deal dynamics Final deal terms

What This Skill Does

  • Configure l'authentification email - SPF, DKIM, DMARC avec les bonnes valeurs

  • Sécurise le domaine - DNSSEC, CAA, protection certificats

  • Optimise les TTL - Valeurs recommandées par type de record

  • Automatise via API - OVH, Cloudflare, Terraform

  • Diagnostique les problèmes - Outils et troubleshooting

Instructions

Step 1: Comprendre la Structure de Zone

Anatomie d'un Fichier de Zone

$ORIGIN example.com. ; Le domaine de base $TTL 3600 ; TTL par défaut (1 heure)

; SOA Record (Start of Authority) @ IN SOA ns1.example.com. admin.example.com. ( 2024012801 ; Serial (YYYYMMDDNN) 7200 ; Refresh (2h) 3600 ; Retry (1h) 1209600 ; Expire (2 semaines) 3600 ; Minimum TTL (1h) )

; Nameservers @ IN NS ns1.example.com. @ IN NS ns2.example.com.

; A Records @ IN A 203.0.113.10 www IN A 203.0.113.10 mail IN A 203.0.113.20

; CNAME Records blog IN CNAME www.example.com.

; MX Records (priorité croissante = préférence décroissante) @ IN MX 10 mail.example.com. @ IN MX 20 mail-backup.example.com.

; TXT Records (SPF, DKIM, DMARC, etc.) @ IN TXT "v=spf1 ..."

Step 2: Email Authentication - SPF

SPF (Sender Policy Framework) - Déclare quels serveurs peuvent envoyer des emails pour votre domaine.

SPF Record Syntax

v=spf1 [mechanisms] [qualifier]all

Mechanisms:

  • ip4:203.0.113.0/24 ; Autoriser une plage IP
  • ip6:2001:db8::/32 ; IPv6
  • a ; Autoriser l'IP du record A du domaine
  • mx ; Autoriser les serveurs MX
  • include:_spf.google.com ; Inclure le SPF d'un autre domaine
  • exists:%{i}.spf.example.com ; Macro avancée

Qualifiers:

  • +all ; PASS (dangereux, jamais utiliser)
  • -all ; FAIL (hard fail)
  • ~all ; SOFTFAIL (recommandé)
  • ?all ; NEUTRAL

Best Practices SPF:

SPF - Règles Critiques

  1. UN SEUL record SPF par domaine ❌ Plusieurs records = tous invalides

  2. Utiliser ~all (softfail), pas -all (hardfail) → Permet à DMARC d'évaluer aussi DKIM

  3. Maximum 10 DNS lookups → include:, a, mx, ptr comptent comme lookups → ip4/ip6 ne comptent pas → Utiliser des macros SPF si limite atteinte

  4. Éviter les gros blocs CIDR → Préférer des IPs spécifiques aux /16 ou /8

Exemples SPF courants:

SPF pour Google Workspace

v=spf1 include:_spf.google.com ~all

SPF pour Microsoft 365

v=spf1 include:spf.protection.outlook.com ~all

SPF pour OVH Mail

v=spf1 include:mx.ovh.com ~all

SPF multi-services (Google + Mailchimp + Sendgrid)

v=spf1 include:_spf.google.com include:servers.mcsv.net include:sendgrid.net ~all

SPF avec IP dédiée

v=spf1 ip4:203.0.113.10 include:_spf.google.com ~all

Step 3: Email Authentication - DKIM

DKIM (DomainKeys Identified Mail) - Signature cryptographique des emails.

Structure DKIM

Record Name: [selector]._domainkey.example.com Record Type: TXT Value: v=DKIM1; k=rsa; p=[public_key]

Exemple: google._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."

Best Practices DKIM:

DKIM - Règles Critiques

  1. Un sélecteur différent par service → google._domainkey pour Google Workspace → mailchimp._domainkey pour Mailchimp → sendgrid._domainkey pour Sendgrid

  2. Rotation des clés tous les 6 mois → Réduit le risque de compromission

  3. Clé RSA 2048 bits minimum → 1024 bits est obsolète

  4. Un sélecteur par tiers → Permet de révoquer sans impacter la production

Génération DKIM par service:

Service Où trouver la clé DKIM

Google Workspace Admin Console → Apps → Google Workspace → Gmail → Authenticate email

Microsoft 365 Microsoft 365 Defender → Email → DKIM

Mailchimp Settings → Domain → View Setup Instructions

Sendgrid Settings → Sender Authentication → Domain Authentication

Brevo Settings → Senders & IP → Domains

Step 4: Email Authentication - DMARC

DMARC (Domain-based Message Authentication) - Politique qui dit aux serveurs quoi faire si SPF/DKIM échouent.

Structure DMARC

Record Name: _dmarc.example.com Record Type: TXT Value: v=DMARC1; p=[policy]; [options]

Policies:

  • p=none ; Monitoring only (étape 1)
  • p=quarantine ; Mettre en spam si échec
  • p=reject ; Rejeter si échec (étape finale)

Options courantes:

  • rua=mailto:dmarc@example.com ; Rapports agrégés (XML)
  • ruf=mailto:dmarc@example.com ; Rapports forensics (détaillés)
  • pct=100 ; Pourcentage d'emails concernés
  • sp=reject ; Politique pour sous-domaines
  • adkim=r ; Alignement DKIM (r=relaxed, s=strict)
  • aspf=r ; Alignement SPF (r=relaxed, s=strict)

Progression DMARC recommandée:

Étape 1: Monitoring (2-4 semaines)

v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com

→ Collecter les rapports, identifier tous les expéditeurs légitimes

Étape 2: Quarantine (2-4 semaines)

v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc-reports@example.com

→ Tester sur 10% des emails, augmenter progressivement

Étape 3: Quarantine 100%

v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com

Étape 4: Reject (objectif final)

v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; sp=reject

Services de monitoring DMARC:

  • DMARC Analyzer (freemium)

  • Postmark DMARC (gratuit)

  • EasyDMARC (freemium)

Step 5: Security - DNSSEC & CAA

DNSSEC - Signe cryptographiquement les réponses DNS pour éviter le spoofing.

Activer DNSSEC

Chez OVH:

  1. Manager → Domaine → Zone DNS → DNSSEC
  2. Activer → OVH génère les clés automatiquement

Chez Cloudflare:

  1. DNS → Settings → DNSSEC
  2. Enable DNSSEC → Copier le DS record
  3. Ajouter le DS record chez le registrar

Vérification: $ dig +dnssec example.com → Doit montrer RRSIG records

CAA Records - Limite quelles CA peuvent émettre des certificats SSL.

Structure CAA

Record Type: CAA Flags: 0 Tag: issue | issuewild | iodef Value: "ca-domain" ou "mailto:..."

Exemples:

Autoriser uniquement Let's Encrypt

example.com. CAA 0 issue "letsencrypt.org" example.com. CAA 0 issuewild "letsencrypt.org"

Autoriser Let's Encrypt + Sectigo

example.com. CAA 0 issue "letsencrypt.org" example.com. CAA 0 issue "sectigo.com"

Reporter les violations

example.com. CAA 0 iodef "mailto:security@example.com"

Bloquer tous les wildcards

example.com. CAA 0 issuewild ";"

Best Practice CAA:

  • Toujours combiner avec DNSSEC (sinon vulnérable au spoofing)

  • Lister uniquement les CA que vous utilisez vraiment

  • Ajouter un iodef pour être alerté des tentatives

Step 6: TTL Best Practices

TTL Recommandés par Type de Record

Record TypeUsageTTL RecommandéRationale
A / AAAAServeur web stable3600-86400 (1h-24h)Rarement changé
A (failover)Avec health check60-300 (1-5min)Failover rapide
CNAMEAlias stable3600-86400Suit le TTL de la cible
MXMail servers3600-21600 (1h-6h)Failover via priorité MX
TXT (SPF/DKIM)Email auth3600-86400Rarement changé
TXT (DMARC)Email policy3600Peut nécessiter ajustements
NSNameservers86400-172800 (1-2j)Très stable
CAACert authority3600-86400Rarement changé

Règles Générales

  1. Jamais TTL = 0 (non défini dans le standard)
  2. Minimum recommandé: 300 (5 min)
  3. Avant migration: baisser TTL 24-48h avant
  4. Après migration stable: remonter le TTL

Step 7: Automatisation - OVH API

Installation

pip install ovh

Configuration (ovh.conf)

[default] endpoint=ovh-eu

[ovh-eu] application_key=YOUR_APP_KEY application_secret=YOUR_APP_SECRET consumer_key=YOUR_CONSUMER_KEY

Obtenir les clés

https://eu.api.ovh.com/createToken/

Permissions nécessaires:

GET /domain/zone/*

POST /domain/zone/*

PUT /domain/zone/*

DELETE /domain/zone/*

Script Python - Gestion DNS OVH

import ovh

client = ovh.Client()

Lister tous les domaines

domains = client.get('/domain/zone') print(domains)

Lister les records d'une zone

records = client.get(f'/domain/zone/{domain}/record')

Obtenir un record spécifique

record = client.get(f'/domain/zone/{domain}/record/{record_id}')

Créer un record TXT (ex: SPF)

result = client.post( f'/domain/zone/{domain}/record', fieldType='TXT', subDomain='', # @ = racine target='v=spf1 include:_spf.google.com ~all', ttl=3600 )

Créer un record DMARC

result = client.post( f'/domain/zone/{domain}/record', fieldType='TXT', subDomain='_dmarc', target='v=DMARC1; p=none; rua=mailto:dmarc@example.com', ttl=3600 )

Modifier un record

client.put( f'/domain/zone/{domain}/record/{record_id}', target='nouvelle_valeur', ttl=3600 )

Supprimer un record

client.delete(f'/domain/zone/{domain}/record/{record_id}')

IMPORTANT: Rafraîchir la zone après modifications

client.post(f'/domain/zone/{domain}/refresh')

Step 8: Automatisation - Cloudflare

Terraform - Cloudflare DNS

provider "cloudflare" { api_token = var.cloudflare_api_token # Jamais en dur! }

Zone data

data "cloudflare_zone" "example" { name = "example.com" }

A Record

resource "cloudflare_record" "www" { zone_id = data.cloudflare_zone.example.id name = "www" value = "203.0.113.10" type = "A" ttl = 3600 proxied = true # Cloudflare proxy }

SPF Record

resource "cloudflare_record" "spf" { zone_id = data.cloudflare_zone.example.id name = "@" value = "v=spf1 include:_spf.google.com ~all" type = "TXT" ttl = 3600 }

DMARC Record

resource "cloudflare_record" "dmarc" { zone_id = data.cloudflare_zone.example.id name = "_dmarc" value = "v=DMARC1; p=reject; rua=mailto:dmarc@example.com" type = "TXT" ttl = 3600 }

MX Records

resource "cloudflare_record" "mx_primary" { zone_id = data.cloudflare_zone.example.id name = "@" value = "aspmx.l.google.com" type = "MX" ttl = 3600 priority = 1 }

CAA Record

resource "cloudflare_record" "caa" { zone_id = data.cloudflare_zone.example.id name = "@" type = "CAA" ttl = 3600 data { flags = 0 tag = "issue" value = "letsencrypt.org" } }

Best Practices Terraform/Cloudflare:

  • Ne jamais stocker les credentials en clair

  • Utiliser des variables d'environnement ou un secret manager

  • State remote (S3, GCS) pour la collaboration

  • Un workspace par environnement (staging/prod)

Step 9: Diagnostic & Troubleshooting

Outils CLI

Vérifier un record spécifique

dig example.com TXT +short dig _dmarc.example.com TXT +short dig google._domainkey.example.com TXT +short

Vérifier les MX

dig example.com MX +short

Vérifier DNSSEC

dig example.com +dnssec

Tracer la résolution

dig example.com +trace

Vérifier la propagation (multiple resolvers)

dig @8.8.8.8 example.com TXT # Google dig @1.1.1.1 example.com TXT # Cloudflare dig @9.9.9.9 example.com TXT # Quad9

Outils en ligne:

Outil URL Usage

MXToolbox mxtoolbox.com SPF, DKIM, DMARC, blacklist

DMARC Analyzer dmarcanalyzer.com Validation DMARC

DNSViz dnsviz.net Debug DNSSEC

Mail-Tester mail-tester.com Score email complet

Google Postmaster postmaster.google.com Réputation domaine

Erreurs courantes:

Symptôme Cause probable Solution

SPF permerror Multiple SPF records Fusionner en un seul

SPF permerror

10 DNS lookups Utiliser ip4/ip6, macros SPF

DKIM fail Clé mal copiée Vérifier pas de retour à la ligne

DMARC none Policy p=none Normal en monitoring, escalader après

Emails en spam SPF/DKIM OK mais pas alignés Vérifier alignement DMARC (From: header)

SERVFAIL DNSSEC mal configuré Debugger sur dnsviz.net

Templates Complets

Template: Nouveau Domaine (Google Workspace)

Records à créer

MX (mail)

@ MX 1 aspmx.l.google.com. @ MX 5 alt1.aspmx.l.google.com. @ MX 5 alt2.aspmx.l.google.com. @ MX 10 alt3.aspmx.l.google.com. @ MX 10 alt4.aspmx.l.google.com.

SPF

@ TXT "v=spf1 include:_spf.google.com ~all"

DKIM (obtenir la clé dans Google Admin Console)

google._domainkey TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."

DMARC (commencer en monitoring)

_dmarc TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

CAA (si Let's Encrypt pour SSL)

@ CAA 0 issue "letsencrypt.org" @ CAA 0 iodef "mailto:security@example.com"

Template: Domaine Parké (protection anti-spoofing)

Domaine qui n'envoie JAMAIS d'email

SPF - Rejeter tout

@ TXT "v=spf1 -all"

DMARC - Rejeter tout

_dmarc TXT "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc@example.com"

Pas de MX = pas de réception

(ou MX vers null: @ MX 0 .)

Template: Multi-Services (SaaS stack)

SPF avec plusieurs services

@ TXT "v=spf1 include:_spf.google.com include:servers.mcsv.net include:sendgrid.net ~all"

DKIM - Un par service

google._domainkey TXT "v=DKIM1; k=rsa; p=..." k1._domainkey TXT "v=DKIM1; k=rsa; p=..." # Mailchimp s1._domainkey TXT "v=DKIM1; k=rsa; p=..." # Sendgrid

DMARC

_dmarc TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"

Checklist Configuration DNS

Setup Initial

[ ] A/AAAA records pour web [ ] CNAME pour www et autres alias [ ] MX records configurés (avec priorités) [ ] SPF record (un seul, ~all) [ ] DKIM configuré pour chaque service d'envoi [ ] DMARC en mode monitoring (p=none) [ ] CAA records (limiter les CA autorisées) [ ] DNSSEC activé chez le registrar

Après 2-4 semaines de monitoring

[ ] Analyser les rapports DMARC [ ] Identifier les expéditeurs non authentifiés [ ] Corriger ou ajouter les sources légitimes [ ] Escalader DMARC vers p=quarantine [ ] Puis vers p=reject

Maintenance

[ ] Rotation DKIM tous les 6 mois [ ] Review des rapports DMARC mensuellement [ ] Vérifier le score sur mail-tester.com [ ] Monitorer la réputation sur Google Postmaster

Skill Boundaries

What This Skill Does Well

  • Structuring sales conversations

  • Creating discovery frameworks

  • Analyzing deal dynamics

  • Suggesting negotiation approaches

What This Skill Cannot Do

  • Replace relationship building

  • Guarantee closed deals

  • Know specific buyer psychology

  • Make pricing decisions

References

Email Authentication

  • Cisco Best Practices

  • DMARCLY Guide

  • EasyDMARC Best Practices

  • SalesHive 2025 Guide

DNS Security

  • Let's Encrypt CAA

  • CAA Records Guide 2025

  • DNSSEC Best Practices

TTL

  • Catchpoint TTL Guide

  • Varonis TTL Best Practices

  • AWS Route 53 Best Practices

Automation

  • OVH Python Library

  • Cloudflare Terraform Best Practices

  • cf-terraforming

Tools

  • MXToolbox

  • DNSViz

  • Mail-Tester

  • Google Postmaster Tools

Related Skills

  • nurture-sequences/

  • Email deliverability impacte le nurturing

  • distribution-engine/

  • Infrastructure pour le marketing automation

Skill version: 1.0 Last updated: 2026-01-28 Category: devops

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

whisper-transcription

No summary provided by upstream source.

Repository SourceNeeds Review
General

design-trends-2026

No summary provided by upstream source.

Repository SourceNeeds Review
General

social-listening

No summary provided by upstream source.

Repository SourceNeeds Review