dns-zonefile-config

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

DNS Zonefile Configuration

DNS区域文件配置

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.
基于2024-2025年最佳实践,正确配置DNS区域以优化邮件送达率(SPF、DKIM、DMARC)、提升域名安全性(DNSSEC、CAA),并实现DNS管理自动化(OVH API、Cloudflare、Terraform)。

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
  • 配置邮件认证 - 通过SPF、DKIM、DMARC避免邮件进入垃圾邮件文件夹
  • 保护域名安全 - 配置DNSSEC、CAA记录,防范域名欺骗
  • 自动化DNS管理 - 基于OVH API、Cloudflare API、Terraform实现自动化
  • 调试DNS问题 - 使用dig、nslookup、MXToolbox等工具排查
  • 迁移或配置新域名 - 从零开始完成完整配置

Methodology Foundation

方法论基础

Sources:
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.
参考来源
重要性说明:自2024年2月起,Google和Yahoo要求批量邮件必须配置SPF、DKIM和DMARC。如果配置不正确,你的邮件会直接进入垃圾邮件文件夹。经过认证的发件人将有2.7倍的概率将邮件成功送达收件箱。

What Claude Does vs What You Decide

Claude负责的工作 vs 由你决定的内容

Claude DoesYou Decide
Structures sales frameworksDeal strategy
Suggests discovery questionsRelationship approach
Creates proposal templatesPricing decisions
Identifies objection patternsNegotiation tactics
Analyzes deal dynamicsFinal deal terms
Claude负责的工作由你决定的内容
构建销售框架交易策略
建议挖掘需求的问题客户关系维护方式
创建提案模板定价决策
识别异议模式谈判策略
分析交易动态最终交易条款

What This Skill Does

本技能的功能

  1. Configure l'authentification email - SPF, DKIM, DMARC avec les bonnes valeurs
  2. Sécurise le domaine - DNSSEC, CAA, protection certificats
  3. Optimise les TTL - Valeurs recommandées par type de record
  4. Automatise via API - OVH, Cloudflare, Terraform
  5. Diagnostique les problèmes - Outils et troubleshooting
  1. 配置邮件认证 - 为SPF、DKIM、DMARC设置正确的值
  2. 保护域名安全 - 配置DNSSEC、CAA,保障证书安全
  3. 优化TTL值 - 为不同类型的记录设置推荐的TTL值
  4. 通过API实现自动化 - 基于OVH、Cloudflare、Terraform实现自动化管理
  5. 诊断问题 - 提供工具和故障排查方法

Instructions

操作步骤

Step 1: Comprendre la Structure de Zone

步骤1:理解区域文件结构

undefined
undefined

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 ..."

---
$ORIGIN example.com. ; 基础域名 $TTL 3600 ; 默认TTL(1小时)
; SOA记录(起始授权机构) @ IN SOA ns1.example.com. admin.example.com. ( 2024012801 ; 序列号(YYYYMMDDNN) 7200 ; 刷新间隔(2小时) 3600 ; 重试间隔(1小时) 1209600 ; 过期时间(2周) 3600 ; 最小TTL(1小时) )
; 域名服务器 @ IN NS ns1.example.com. @ IN NS ns2.example.com.
; A记录 @ IN A 203.0.113.10 www IN A 203.0.113.10 mail IN A 203.0.113.20
; CNAME记录 blog IN CNAME www.example.com.
; MX记录(优先级数值越小,优先级越高) @ IN MX 10 mail.example.com. @ IN MX 20 mail-backup.example.com.
; TXT记录(SPF、DKIM、DMARC等) @ IN TXT "v=spf1 ..."

---

Step 2: Email Authentication - SPF

步骤2:邮件认证 - SPF

SPF (Sender Policy Framework) - Déclare quels serveurs peuvent envoyer des emails pour votre domaine.
undefined
SPF(发件人策略框架) - 声明哪些服务器可以代表你的域名发送邮件。
undefined

SPF Record Syntax

SPF记录语法

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:**
v=spf1 [机制] [限定符]all
机制:
  • ip4:203.0.113.0/24 ; 授权一个IP段
  • ip6:2001:db8::/32 ; IPv6地址段
  • a ; 授权域名A记录对应的IP
  • mx ; 授权MX记录对应的服务器
  • include:_spf.google.com ; 包含其他域名的SPF记录
  • exists:%{i}.spf.example.com ; 高级宏
限定符:
  • +all ; 允许(危险,切勿使用)
  • -all ; 拒绝(严格拒绝)
  • ~all ; 软拒绝(推荐使用)
  • ?all ; 中性

**SPF最佳实践:**

SPF - Règles Critiques

SPF - 关键规则

  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:**
  1. 每个域名只能有一条SPF记录 ❌ 多条记录会导致全部失效
  2. 使用~all(软拒绝),而非-all(严格拒绝) → 允许DMARC同时评估DKIM的有效性
  3. 最多允许10次DNS查询 → include:、a、mx、ptr会被计入查询次数 → ip4/ip6不计入查询次数 → 如果达到限制,使用SPF宏
  4. 避免使用大段CIDR地址 → 优先使用具体IP,而非/16或/8段

**常见SPF示例:**

SPF pour Google Workspace

Google Workspace的SPF记录

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

SPF pour Microsoft 365

Microsoft 365的SPF记录

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

SPF pour OVH Mail

OVH邮件的SPF记录

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

SPF multi-services (Google + Mailchimp + Sendgrid)

多服务SPF记录(Google + Mailchimp + Sendgrid)

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

SPF avec IP dédiée

带专用IP的SPF记录

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

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

---

Step 3: Email Authentication - DKIM

步骤3:邮件认证 - DKIM

DKIM (DomainKeys Identified Mail) - Signature cryptographique des emails.
undefined
DKIM(域名密钥识别邮件) - 对邮件进行数字签名。
undefined

Structure DKIM

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:**
记录名称: [选择器]._domainkey.example.com 记录类型: TXT 值: v=DKIM1; k=rsa; p=[公钥]
示例: google._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."

**DKIM最佳实践:**

DKIM - Règles Critiques

DKIM - 关键规则

  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 |

---
  1. 每个服务使用不同的选择器 → google._domainkey用于Google Workspace → mailchimp._domainkey用于Mailchimp → sendgrid._domainkey用于Sendgrid
  2. 每6个月轮换一次密钥 → 降低密钥泄露风险
  3. RSA密钥长度至少为2048位 → 1024位已过时
  4. 每个第三方服务使用独立选择器 → 允许在不影响生产环境的情况下撤销某个服务的权限

**各服务的DKIM密钥获取方式:**

| 服务 | DKIM密钥获取位置 |
|---------|------------------------|
| Google Workspace | 管理控制台 → 应用 → Google Workspace → Gmail → 认证邮件 |
| Microsoft 365 | Microsoft 365 Defender → 邮件 → DKIM |
| Mailchimp | 设置 → 域名 → 查看设置说明 |
| Sendgrid | 设置 → 发件人认证 → 域名认证 |
| Brevo | 设置 → 发件人与IP → 域名 |

---

Step 4: Email Authentication - DMARC

步骤4:邮件认证 - DMARC

DMARC (Domain-based Message Authentication) - Politique qui dit aux serveurs quoi faire si SPF/DKIM échouent.
undefined
DMARC(基于域名的邮件认证) - 定义当SPF/DKIM验证失败时,邮件服务器应采取的策略。
undefined

Structure DMARC

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:**
记录名称: _dmarc.example.com 记录类型: TXT 值: v=DMARC1; p=[策略]; [选项]
策略:
  • p=none ; 仅监控(第一步)
  • p=quarantine ; 验证失败时放入垃圾邮件
  • p=reject ; 验证失败时直接拒绝(最终目标)
常用选项:
  • rua=mailto:dmarc@example.com ; 聚合报告(XML格式)
  • ruf=mailto:dmarc@example.com ; forensic报告(详细内容)
  • pct=100 ; 受影响邮件的百分比
  • sp=reject ; 子域名的策略
  • adkim=r ; DKIM对齐方式(r=宽松,s=严格)
  • aspf=r ; SPF对齐方式(r=宽松,s=严格)

**推荐的DMARC部署流程:**

Étape 1: Monitoring (2-4 semaines)

步骤1:监控(2-4周)

v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com
→ Collecter les rapports, identifier tous les expéditeurs légitimes
v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com
→ 收集报告,识别所有合法发件人

Étape 2: Quarantine (2-4 semaines)

步骤2:隔离(2-4周)

v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc-reports@example.com
→ Tester sur 10% des emails, augmenter progressivement
v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc-reports@example.com
→ 在10%的邮件上测试,逐步提高比例

Étape 3: Quarantine 100%

步骤3:100%隔离

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

Étape 4: Reject (objectif final)

步骤4:拒绝(最终目标)

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

**Services de monitoring DMARC:**
- [DMARC Analyzer](https://www.dmarcanalyzer.com) (freemium)
- [Postmark DMARC](https://dmarc.postmarkapp.com) (gratuit)
- [EasyDMARC](https://easydmarc.com) (freemium)

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

**DMARC监控服务:**
- [DMARC Analyzer](https://www.dmarcanalyzer.com)(免费增值版)
- [Postmark DMARC](https://dmarc.postmarkapp.com)(免费)
- [EasyDMARC](https://easydmarc.com)(免费增值版)

---

Step 5: Security - DNSSEC & CAA

步骤5:安全配置 - DNSSEC & CAA

DNSSEC - Signe cryptographiquement les réponses DNS pour éviter le spoofing.
undefined
DNSSEC - 对DNS响应进行数字签名,防止域名欺骗。
undefined

Activer DNSSEC

启用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.
在OVH平台:
  1. 管理面板 → 域名 → DNS区域 → DNSSEC
  2. 启用 → OVH会自动生成密钥
在Cloudflare平台:
  1. DNS → 设置 → DNSSEC
  2. 启用DNSSEC → 复制DS记录
  3. 在域名注册商处添加该DS记录
验证方式: $ dig +dnssec example.com → 应显示RRSIG记录

**CAA记录** - 限制哪些证书颁发机构(CA)可以为你的域名颁发SSL证书。

Structure CAA

CAA记录结构

Record Type: CAA Flags: 0 Tag: issue | issuewild | iodef Value: "ca-domain" ou "mailto:..."
Exemples:
记录类型: CAA 标志: 0 标签: issue | issuewild | iodef 值: "ca域名" 或 "mailto:..."
示例:

Autoriser uniquement Let's Encrypt

仅允许Let's Encrypt颁发证书

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

Autoriser Let's Encrypt + Sectigo

允许Let's Encrypt和Sectigo颁发证书

example.com. CAA 0 issue "letsencrypt.org" example.com. CAA 0 issue "sectigo.com"
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"
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

---
example.com. CAA 0 issuewild ";"

**CAA最佳实践:**
- 始终与DNSSEC配合使用(否则容易遭受欺骗攻击)
- 仅列出你实际使用的证书颁发机构
- 添加iodef选项以接收违规通知

---

Step 6: TTL Best Practices

步骤6:TTL最佳实践

undefined
undefined

TTL Recommandés par Type de Record

不同记录类型的推荐TTL值

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é
记录类型用途推荐TTL值理由
A / AAAA稳定的Web服务器3600-86400(1小时-24小时)很少变更
A(故障转移)配合健康检查60-300(1-5分钟)快速故障转移
CNAME稳定的别名3600-86400遵循目标记录的TTL
MX邮件服务器3600-21600(1小时-6小时)通过MX优先级实现故障转移
TXT(SPF/DKIM)邮件认证3600-86400很少变更
TXT(DMARC)邮件策略3600可能需要频繁调整
NS域名服务器86400-172800(1-2天)非常稳定
CAA证书颁发机构3600-86400很少变更

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

---
  1. 切勿设置TTL=0(不符合标准)
  2. 推荐最小值:300(5分钟)
  3. 迁移前:在24-48小时前降低TTL值
  4. 迁移稳定后:恢复TTL值

---

Step 7: Automatisation - OVH API

步骤7:自动化 - OVH API

python
undefined
python
undefined

Installation

安装

pip install ovh

pip install ovh

Configuration (ovh.conf)

配置(ovh.conf)

[default] endpoint=ovh-eu
[ovh-eu] application_key=YOUR_APP_KEY application_secret=YOUR_APP_SECRET consumer_key=YOUR_CONSUMER_KEY
[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

获取密钥

Permissions nécessaires:

所需权限:

GET /domain/zone/*

GET /domain/zone/*

POST /domain/zone/*

POST /domain/zone/*

PUT /domain/zone/*

PUT /domain/zone/*

DELETE /domain/zone/*

DELETE /domain/zone/*


```python

```python

Script Python - Gestion DNS OVH

Python脚本 - OVH DNS管理

import ovh
client = ovh.Client()
import ovh
client = ovh.Client()

Lister tous les domaines

列出所有域名

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

Lister les records d'une zone

列出某个区域的所有记录

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

Obtenir un record spécifique

获取特定记录

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

Créer un record TXT (ex: SPF)

创建TXT记录(例如:SPF)

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

Créer un record DMARC

创建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 )
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 )
client.put( f'/domain/zone/{domain}/record/{record_id}', target='新值', ttl=3600 )

Supprimer un record

删除记录

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

IMPORTANT: Rafraîchir la zone après modifications

重要提示:修改后刷新区域

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

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

---

Step 8: Automatisation - Cloudflare

步骤8:自动化 - Cloudflare

hcl
undefined
hcl
undefined

Terraform - Cloudflare DNS

Terraform - Cloudflare DNS配置

provider "cloudflare" { api_token = var.cloudflare_api_token # Jamais en dur! }
provider "cloudflare" { api_token = var.cloudflare_api_token # 切勿硬编码! }

Zone data

区域数据

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

A Record

A记录

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 }
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代理 }

SPF Record

SPF记录

resource "cloudflare_record" "spf" { zone_id = data.cloudflare_zone.example.id name = "@" value = "v=spf1 include:_spf.google.com ~all" type = "TXT" ttl = 3600 }
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

DMARC记录

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 }
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

MX记录

resource "cloudflare_record" "mx_primary" { zone_id = data.cloudflare_zone.example.id name = "@" value = "aspmx.l.google.com" type = "MX" ttl = 3600 priority = 1 }
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

CAA记录

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)

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

**Terraform/Cloudflare最佳实践:**
- 切勿明文存储凭证
- 使用环境变量或密钥管理器
- 使用远程状态存储(S3、GCS)以支持协作
- 每个环境( staging/prod)使用独立的工作区

---

Step 9: Diagnostic & Troubleshooting

步骤9:诊断与故障排查

bash
undefined
bash
undefined

Outils CLI

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
dig example.com TXT +short dig _dmarc.example.com TXT +short dig google._domainkey.example.com TXT +short

Vérifier les MX

检查MX记录

dig example.com MX +short
dig example.com MX +short

Vérifier DNSSEC

检查DNSSEC

dig example.com +dnssec
dig example.com +dnssec

Tracer la résolution

跟踪解析过程

dig example.com +trace
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](https://mxtoolbox.com) | SPF, DKIM, DMARC, blacklist |
| DMARC Analyzer | [dmarcanalyzer.com](https://dmarcanalyzer.com/dmarc/dmarc-record-check/) | Validation DMARC |
| DNSViz | [dnsviz.net](https://dnsviz.net) | Debug DNSSEC |
| Mail-Tester | [mail-tester.com](https://www.mail-tester.com) | Score email complet |
| Google Postmaster | [postmaster.google.com](https://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 |

---
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解析器

**在线工具:**

| 工具 | 网址 | 用途 |
|-------|-----|-------|
| MXToolbox | [mxtoolbox.com](https://mxtoolbox.com) | SPF、DKIM、DMARC检查,黑名单查询 |
| DMARC Analyzer | [dmarcanalyzer.com](https://dmarcanalyzer.com/dmarc/dmarc-record-check/) | DMARC记录验证 |
| DNSViz | [dnsviz.net](https://dnsviz.net) | DNSSEC调试 |
| Mail-Tester | [mail-tester.com](https://www.mail-tester.com) | 完整邮件评分 |
| Google Postmaster | [postmaster.google.com](https://postmaster.google.com) | 域名信誉查询 |

**常见错误:**

| 症状 | 可能原因 | 解决方案 |
|----------|----------------|----------|
| SPF验证错误 | 存在多条SPF记录 | 合并为单条记录 |
| SPF验证错误 | DNS查询次数超过10次 | 使用ip4/ip6或SPF宏 |
| DKIM验证失败 | 密钥复制错误 | 检查密钥是否存在换行符 |
| DMARC策略为none | 当前处于监控模式 | 正常,监控完成后升级策略 |
| 邮件进入垃圾邮件 | SPF/DKIM验证通过但未对齐 | 检查DMARC的对齐设置(From:头部) |
| SERVFAIL错误 | DNSSEC配置错误 | 使用dnsviz.net进行调试 |

---

Templates Complets

完整配置模板

Template: Nouveau Domaine (Google Workspace)

模板:新域名(Google Workspace)

undefined
undefined

Records à créer

需要创建的记录

MX (mail)

MX(邮件)

@ 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.
@ 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

SPF

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

DKIM (obtenir la clé dans Google Admin Console)

DKIM(在Google管理控制台获取密钥)

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

DMARC (commencer en monitoring)

DMARC(开始时使用监控模式)

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

CAA (si Let's Encrypt pour SSL)

CAA(如果使用Let's Encrypt颁发SSL证书)

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

Template: Domaine Parké (protection anti-spoofing)

模板:闲置域名(防欺骗保护)

undefined
undefined

Domaine qui n'envoie JAMAIS d'email

从不发送邮件的域名

SPF - Rejeter tout

SPF - 拒绝所有发件人

@ TXT "v=spf1 -all"
@ TXT "v=spf1 -all"

DMARC - Rejeter tout

DMARC - 拒绝所有邮件

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

Pas de MX = pas de réception

不设置MX记录 = 不接收邮件

(ou MX vers null: @ MX 0 .)

(或者设置MX指向空地址:@ MX 0 .)

undefined
undefined

Template: Multi-Services (SaaS stack)

模板:多服务场景(SaaS栈)

undefined
undefined

SPF avec plusieurs services

多服务SPF记录

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

DKIM - Un par service

DKIM - 每个服务对应一条记录

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
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

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

Checklist Configuration DNS

DNS配置检查清单

undefined
undefined

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
[ ] 配置Web服务的A/AAAA记录 [ ] 配置www及其他别名的CNAME记录 [ ] 配置MX记录(设置优先级) [ ] 配置SPF记录(单条,使用~all) [ ] 为每个发件服务配置DKIM [ ] 配置DMARC为监控模式(p=none) [ ] 配置CAA记录(限制授权的CA) [ ] 在域名注册商处启用DNSSEC

Après 2-4 semaines de monitoring

监控2-4周后

[ ] 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
[ ] 分析DMARC报告 [ ] 识别所有未认证的发件人 [ ] 修正或添加合法发件源 [ ] 将DMARC策略升级为隔离(p=quarantine) [ ] 最终升级为拒绝(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
undefined
[ ] 每6个月轮换DKIM密钥 [ ] 每月审核DMARC报告 [ ] 在mail-tester.com上检查邮件评分 [ ] 在Google Postmaster上监控域名信誉
undefined

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

邮件认证

DNS Security

DNS安全

TTL

TTL

Automation

自动化

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
  • nurture-sequences/
    - 邮件送达率会影响客户培育效果
  • distribution-engine/
    - 营销自动化的基础设施

技能版本:1.0 最后更新:2026-01-28 分类:devops