mcpField
D
dns-zonefile-config

dns-zonefile-config

github.com/guia-matthieuクラウド・DevOps150203 回インストール4 週間前に更新
リポジトリ

dns-zonefile-config について

dns-zonefile-configは、ドメイン設定やDNSの問題解決を行う管理者向けのガイダンススキルで、メール認証とドメインセキュリティを扱います。SPF、DKIM、DMARC、DNSSEC、CAA、TTLの推奨事項に加え、OVH APIやTerraformによる自動化例を紹介します。

主な機能

  1. 01SPF、DKIM、DMARCの設定
  2. 02DNSSECとCAAレコードの設定
  3. 03レコード別TTLの指針確認
  4. 04OVH APIとTerraformによるDNS自動化
  5. 05コマンドラインツールでのレコード診断

活用シーン

  1. 01ドメインのメール認証設定
  2. 02ドメインのなりすまし対策
  3. 03新規ドメインの設定や移行
  4. 04DNSやメール配信の問題調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/guia-matthieu/clawfu-skills --skill dns-zonefile-config

インストール後、Claude Code で/dns-zonefile-configを入力して読み込まれたか確認します。

詳細

DNS ゾーンファイルの設定

メールの到達率(SPF、DKIM、DMARC)、セキュリティ(DNSSEC、CAA)、自動化(OVH API、Cloudflare、Terraform)のために、2024~2025年のベストプラクティスに基づいてDNSゾーンを正しく設定します。

このスキルを使用する場面

  • メール認証を設定する - 迷惑メールフォルダーに入るのを防ぐためのSPF、DKIM、DMARC
  • ドメインを保護する - DNSSEC、CAAレコード、なりすまし対策
  • DNS管理を自動化する - OVH API、Cloudflare API、Terraform
  • DNSの問題をデバッグする - dig、nslookup、MXToolbox
  • ドメインを移行する、または新しいドメインを設定する - ゼロからの完全なセットアップ

方法論の基盤

出典:

これが重要な理由: 2024年2月以降、GoogleとYahooは一括メール送信にSPF、DKIM、DMARCを必須としています。正しく設定されていないと、メールは迷惑メールフォルダーに入ってしまいます。認証済みの送信者は、受信トレイに届く可能性が2.7倍高くなります。

Claude が行うことと、あなたが決めること

Claude が行うことあなたが決めること
販売フレームワークを構成する商談戦略
ディスカバリーの質問を提案する関係構築の進め方
提案書のテンプレートを作成する価格設定の決定
反論のパターンを特定する交渉戦術
商談の動向を分析する最終的な取引条件

このスキルでできること

  1. メール認証を設定する - 適切な値でSPF、DKIM、DMARCを設定します
  2. ドメインを保護する - DNSSEC、CAA、証明書保護を設定します
  3. TTLを最適化する - レコードの種類ごとに推奨値を設定します
  4. API経由で自動化する - OVH、Cloudflare、Terraformを使用します
  5. 問題を診断する - ツールとトラブルシューティングを活用します

手順

Step 1: ゾーン構造を理解する
## 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: メール認証 - SPF

SPF(Sender Policy Framework) - ドメインのメールを送信できるサーバーを宣言します。

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

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

一般的なSPFの例:

## 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: メール認証 - DKIM

DKIM(DomainKeys Identified Mail) - メールに暗号署名を付与します。

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

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

サービスごとのDKIMキーの取得方法:

サービスDKIMキーの場所
Google WorkspaceAdmin Console → Apps → Google Workspace → Gmail → Authenticate email
Microsoft 365Microsoft 365 Defender → Email → DKIM
MailchimpSettings → Domain → View Setup Instructions
SendgridSettings → Sender Authentication → Domain Authentication
BrevoSettings → Senders & IP → Domains

Step 4: メール認証 - DMARC

DMARC(Domain-based Message Authentication) - SPF/DKIMに失敗した場合の処理をサーバーに指示するポリシーです。

## 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:[email protected]  ; Rapports agrégés (XML)
- ruf=mailto:[email protected]  ; 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)

推奨されるDMARCの段階的な導入:

## Étape 1: Monitoring (2-4 semaines)
v=DMARC1; p=none; rua=mailto:[email protected]

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

## Étape 2: Quarantine (2-4 semaines)
v=DMARC1; p=quarantine; pct=10; rua=mailto:[email protected]

→ Tester sur 10% des emails, augmenter progressivement

## Étape 3: Quarantine 100%
v=DMARC1; p=quarantine; rua=mailto:[email protected]

## Étape 4: Reject (objectif final)
v=DMARC1; p=reject; rua=mailto:[email protected]; sp=reject

DMARC監視サービス:


Step 5: セキュリティ - DNSSECとCAA

DNSSEC - なりすましを防ぐため、DNS応答に暗号署名を付与します。

## 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レコード - SSL証明書を発行できるCAを制限します。

## 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:[email protected]"

# Bloquer tous les wildcards
example.com.  CAA  0 issuewild ";"

CAAのベストプラクティス:

  • 常にDNSSECと併用します(併用しない場合、なりすましに対して脆弱です)
  • 実際に使用するCAのみを記載します
  • 試行を通知するため、iodefを追加します

Step 6: TTLのベストプラクティス
## TTL Recommandés par Type de Record

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

## 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: 自動化 - 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:[email protected]',
    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')

ステップ 8:自動化 - 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:[email protected]"
  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"
  }
}

Terraform/Cloudflare のベストプラクティス:

  • 認証情報を平文で保存しない
  • 環境変数またはシークレットマネージャーを使用する
  • コラボレーションにはリモートステート(S3、GCS)を使用する
  • 環境ごとにワークスペースを用意する(staging/prod)

ステップ 9:診断とトラブルシューティング
## 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

オンラインツール:

ツールURL用途
MXToolboxmxtoolbox.comSPF、DKIM、DMARC、ブラックリスト
DMARC Analyzerdmarcanalyzer.comDMARC の検証
DNSVizdnsviz.netDNSSEC のデバッグ
Mail-Testermail-tester.comメールの総合スコア
Google Postmasterpostmaster.google.comドメインの評判

よくあるエラー:

症状考えられる原因解決策
SPF permerrorSPF レコードが複数ある1 つに統合する
SPF permerrorDNS ルックアップが 10 回を超えているip4/ip6、SPF マクロを使用する
DKIM failキーのコピーに誤りがある改行が入っていないことを確認する
DMARC nonePolicy p=none監視中は通常の状態です。その後、段階的にポリシーを強化します
メールが迷惑メールに振り分けられるSPF/DKIM は OK だが、整合していないDMARC の整合性を確認する(From: ヘッダー)
SERVFAILDNSSEC の設定ミスdnsviz.net でデバッグする

完全なテンプレート

テンプレート:新規ドメイン(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:[email protected]"

# CAA (si Let's Encrypt pour SSL)
@       CAA     0 issue "letsencrypt.org"
@       CAA     0 iodef "mailto:[email protected]"
テンプレート:パークドメイン(なりすまし対策)
## 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:[email protected]"

# Pas de MX = pas de réception
# (ou MX vers null: @  MX  0  .)
テンプレート:複数サービス(SaaS スタック)
## 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:[email protected]"

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

スキルの範囲

このスキルで得意なこと
  • 営業の会話を構成する
  • ディスカバリーフレームワークを作成する
  • 商談の動向を分析する
  • 交渉の進め方を提案する
このスキルでできないこと
  • 関係構築に取って代わること
  • 成約を保証すること
  • 特定の買い手の心理を把握すること
  • 価格を決定すること

参考資料

メール認証
DNS セキュリティ
TTL
自動化
ツール

関連スキル

  • nurture-sequences/ - メールの到達性はナーチャリングに影響します
  • distribution-engine/ - マーケティング自動化のインフラストラクチャ

スキルのバージョン:1.0 最終更新日:2026-01-28 カテゴリー:devops

コメント