dns-zonefile-config
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDNS 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:
- 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.
参考来源:
重要性说明:自2024年2月起,Google和Yahoo要求批量邮件必须配置SPF、DKIM和DMARC。如果配置不正确,你的邮件会直接进入垃圾邮件文件夹。经过认证的发件人将有2.7倍的概率将邮件成功送达收件箱。
What Claude Does vs What You Decide
Claude负责的工作 vs 由你决定的内容
| 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 |
| Claude负责的工作 | 由你决定的内容 |
|---|---|
| 构建销售框架 | 交易策略 |
| 建议挖掘需求的问题 | 客户关系维护方式 |
| 创建提案模板 | 定价决策 |
| 识别异议模式 | 谈判策略 |
| 分析交易动态 | 最终交易条款 |
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
- 配置邮件认证 - 为SPF、DKIM、DMARC设置正确的值
- 保护域名安全 - 配置DNSSEC、CAA,保障证书安全
- 优化TTL值 - 为不同类型的记录设置推荐的TTL值
- 通过API实现自动化 - 基于OVH、Cloudflare、Terraform实现自动化管理
- 诊断问题 - 提供工具和故障排查方法
Instructions
操作步骤
Step 1: Comprendre la Structure de Zone
步骤1:理解区域文件结构
undefinedundefinedAnatomie 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.
undefinedSPF(发件人策略框架) - 声明哪些服务器可以代表你的域名发送邮件。
undefinedSPF 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 - 关键规则
-
UN SEUL record SPF par domaine ❌ Plusieurs records = tous invalides
-
Utiliser ~all (softfail), pas -all (hardfail) → Permet à DMARC d'évaluer aussi DKIM
-
Maximum 10 DNS lookups → include:, a, mx, ptr comptent comme lookups → ip4/ip6 ne comptent pas → Utiliser des macros SPF si limite atteinte
-
Éviter les gros blocs CIDR → Préférer des IPs spécifiques aux /16 ou /8
**Exemples SPF courants:**
-
每个域名只能有一条SPF记录 ❌ 多条记录会导致全部失效
-
使用~all(软拒绝),而非-all(严格拒绝) → 允许DMARC同时评估DKIM的有效性
-
最多允许10次DNS查询 → include:、a、mx、ptr会被计入查询次数 → ip4/ip6不计入查询次数 → 如果达到限制,使用SPF宏
-
避免使用大段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.
undefinedDKIM(域名密钥识别邮件) - 对邮件进行数字签名。
undefinedStructure 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 - 关键规则
-
Un sélecteur différent par service → google._domainkey pour Google Workspace → mailchimp._domainkey pour Mailchimp → sendgrid._domainkey pour Sendgrid
-
Rotation des clés tous les 6 mois → Réduit le risque de compromission
-
Clé RSA 2048 bits minimum → 1024 bits est obsolète
-
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 |
----
每个服务使用不同的选择器 → google._domainkey用于Google Workspace → mailchimp._domainkey用于Mailchimp → sendgrid._domainkey用于Sendgrid
-
每6个月轮换一次密钥 → 降低密钥泄露风险
-
RSA密钥长度至少为2048位 → 1024位已过时
-
每个第三方服务使用独立选择器 → 允许在不影响生产环境的情况下撤销某个服务的权限
**各服务的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.
undefinedDMARC(基于域名的邮件认证) - 定义当SPF/DKIM验证失败时,邮件服务器应采取的策略。
undefinedStructure 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.
undefinedDNSSEC - 对DNS响应进行数字签名,防止域名欺骗。
undefinedActiver DNSSEC
启用DNSSEC
Chez OVH:
- Manager → Domaine → Zone DNS → DNSSEC
- Activer → OVH génère les clés automatiquement
Chez Cloudflare:
- DNS → Settings → DNSSEC
- Enable DNSSEC → Copier le DS record
- 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平台:
- 管理面板 → 域名 → DNS区域 → DNSSEC
- 启用 → OVH会自动生成密钥
在Cloudflare平台:
- DNS → 设置 → DNSSEC
- 启用DNSSEC → 复制DS记录
- 在域名注册商处添加该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最佳实践
undefinedundefinedTTL Recommandés par Type de Record
不同记录类型的推荐TTL值
| Record Type | Usage | TTL Recommandé | Rationale |
|---|---|---|---|
| A / AAAA | Serveur web stable | 3600-86400 (1h-24h) | Rarement changé |
| A (failover) | Avec health check | 60-300 (1-5min) | Failover rapide |
| CNAME | Alias stable | 3600-86400 | Suit le TTL de la cible |
| MX | Mail servers | 3600-21600 (1h-6h) | Failover via priorité MX |
| TXT (SPF/DKIM) | Email auth | 3600-86400 | Rarement changé |
| TXT (DMARC) | Email policy | 3600 | Peut nécessiter ajustements |
| NS | Nameservers | 86400-172800 (1-2j) | Très stable |
| CAA | Cert authority | 3600-86400 | Rarement 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
通用规则
- Jamais TTL = 0 (non défini dans le standard)
- Minimum recommandé: 300 (5 min)
- Avant migration: baisser TTL 24-48h avant
- Après migration stable: remonter le TTL
---- 切勿设置TTL=0(不符合标准)
- 推荐最小值:300(5分钟)
- 迁移前:在24-48小时前降低TTL值
- 迁移稳定后:恢复TTL值
---Step 7: Automatisation - OVH API
步骤7:自动化 - OVH API
python
undefinedpython
undefinedInstallation
安装
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
```pythonScript 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
undefinedhcl
undefinedTerraform - 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
undefinedbash
undefinedOutils 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)
undefinedundefinedRecords à 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"
undefinedTemplate: Domaine Parké (protection anti-spoofing)
模板:闲置域名(防欺骗保护)
undefinedundefinedDomaine 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 .)
undefinedundefinedTemplate: Multi-Services (SaaS stack)
模板:多服务场景(SaaS栈)
undefinedundefinedSPF 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"
undefinedChecklist Configuration DNS
DNS配置检查清单
undefinedundefinedSetup 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上监控域名信誉
undefinedSkill 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
相关技能
- - Email deliverability impacte le nurturing
nurture-sequences/ - - Infrastructure pour le marketing automation
distribution-engine/
Skill version: 1.0
Last updated: 2026-01-28
Category: devops
- - 邮件送达率会影响客户培育效果
nurture-sequences/ - - 营销自动化的基础设施
distribution-engine/
技能版本:1.0
最后更新:2026-01-28
分类:devops