Labee Dev Toolbox
技術ノートガイド用語解説
無料で試す
  1. ホーム
  2. / ガイド
  3. / 複数ドメイン管理の運用チェックリスト — 見落としゼロを目指す定期確認フロー
チェックリスト 初級

複数ドメイン管理の運用チェックリスト — 見落としゼロを目指す定期確認フロー

2026年4月24日 更新 所要時間: 10分

5個以上のドメインを管理するには、ドメイン台帳・定期チェックスクリプト・アラート通知の3点が最低限必要です。ドメインの数が増えると、SSL 証明書の期限切れや DNS レコードの設定漏れを見落とすリスクが高くなります。1つのドメインなら手動で確認できても、5個、10個と増えた段階で確認作業が属人化し、担当者の退職や異動で誰もチェックしなくなるケースは珍しくありません。

このチェックリストは、5〜20 個のドメインを管理する組織が月次で実施する定期確認フローです。dig や curl を使った手動確認から、シェルスクリプトによるバッチ処理まで段階的に進めます。example.com の部分は実際のドメイン名に置き換えてください。

flowchart TD
    A[ドメイン台帳を作成] --> B[定期チェックスクリプトを設定]
    B --> C[DNS レコード確認]
    B --> D[SSL 証明書確認]
    B --> E[メール認証確認]
    C --> F[結果を評価]
    D --> F
    E --> F
    F -->|問題あり| G[修正対応]
    G --> H[再チェック]
    H --> F
    F -->|問題なし| I[次回チェックまで待機]
    I --> B
    B --> J[アラート設定]
    J --> K[SSL 期限 30日前通知]
    J --> L[メール認証異常通知]

チェックリスト一括コピー用

以下をコピーして手元のメモやIssueに貼り付ければ、そのまま確認リストとして使えます。

## 複数ドメイン管理チェックリスト

### ドメイン台帳の整備
- [ ] 管理対象のドメインを一覧にまとめている
  - ドメイン名、用途、DNS プロバイダー、レジストラ、担当者、更新期限
- [ ] 台帳の最終更新日が 3ヶ月以内である
- [ ] 新規ドメイン追加・廃止のフローが決まっている

### DNS レコードの定期確認
- [ ] 各ドメインの A / AAAA レコードが意図した IP を指している
  - `dig A example.com +short`
- [ ] NS レコードが正しいプロバイダーを指している
- [ ] 不要なレコード(テスト用サブドメイン等)が残っていない

### SSL 証明書の有効性確認
- [ ] 各ドメインに HTTPS で到達できる
  - `curl -sI https://example.com | head -1`
- [ ] 証明書の有効期限が 30日以上残っている
- [ ] 自動更新の仕組みが動作している(マネージド SSL / ACME クライアント等)

### メール認証の確認
- [ ] 各送信ドメインで SPF レコードが存在する
  - `dig TXT example.com +short`
- [ ] DKIM レコードが設定済みである
- [ ] DMARC レコードが設定済みで、rua= にレポート受信先が指定されている
  - `dig TXT _dmarc.example.com +short`

### バッチ確認スクリプトの実行
- [ ] ドメインリストファイル(domains.txt)が最新の台帳と一致している
- [ ] スクリプトの出力に ERROR がないことを確認した

### 一括確認(API)
- `curl "https://labee.dev/api/dns?domain=example.com&type=A,NS"`
- `curl "https://labee.dev/api/ssl-cert?hostname=example.com"`
- `curl "https://labee.dev/api/mail-auth?domain=example.com"`

Step 1 ドメイン台帳を整備する

複数ドメインの管理で最初に必要なのは、管理対象の一覧表です。スプレッドシートでもテキストファイルでも構いませんが、以下の項目を含めてください。

  • ドメイン名
  • 用途(コーポレートサイト、サービス、メール送信専用など)
  • DNS プロバイダー
  • レジストラと更新期限
  • SSL 証明書の管理方式(マネージド SSL / ACME クライアント自己管理)
  • 担当者

DNS レコードを Terraform や Pulumi などの IaC で管理している場合は、コードリポジトリーの場所も記録しておくと、台帳との整合性を保ちやすくなります。

チェック項目

  • 管理対象のドメインを一覧にまとめている
  • 台帳の最終更新日が 3ヶ月以内 である
  • 新規ドメイン追加・廃止のフローが決まっている

台帳のメンテナンスが止まると、退職した前任者しか知らないドメインが放置され、証明書の期限切れや DNS のハイジャックに気づかないまま数ヶ月が過ぎることがあります。四半期ごとの見直しを推奨します。

バッチ確認用に、台帳からドメイン名だけを抽出したテキストファイルを作成しておきます。

cat domains.txt
example.com
shop.example.com
mail.example.net
corporate.example.co.jp

以降の Step では、このファイルを使って各ドメインを順番に確認します。

Step 2 DNS レコードを定期確認する

DNS レコードは一度設定すれば変わらないと思われがちですが、サーバー移行や CDN の切り替え時に A レコードの更新を忘れたり、テスト用のサブドメインを削除し忘れたりするケースがあります。月次の確認で、各ドメインの A / AAAA レコードと NS レコードが意図した値を指しているかを確認します。

チェック項目

  • 各ドメインの A / AAAA レコードが意図した IP アドレスを指している
  • NS レコードが正しい DNS プロバイダーを指している
  • 不要なレコード(テスト用サブドメイン等)が残っていない

確認コマンド

dig A example.com +short
203.0.113.1

NS レコードも確認します。

dig NS example.com +short
ns1.example-dns.com.
ns2.example-dns.com.

labee.dev の API でも同じ情報を取得できます。

curl "https://labee.dev/api/dns?domain=example.com&type=A,NS"
{
  "success": true,
  "data": {
    "domain": "example.com",
    "records": {
      "A": [
        { "address": "203.0.113.1", "ttl": 300 }
      ],
      "NS": ["ns1.example-dns.com", "ns2.example-dns.com"]
    }
  },
  "error": null,
  "meta": { "responseTime": 85 }
}

data.records.A の address が意図した IP と一致しているか、data.records.NS が正しい DNS プロバイダーのネームサーバーを指しているかを確認してください。

IP アドレスの逆引きも確認しておくと、サーバーの所属を把握しやすくなります。

curl "https://labee.dev/api/ip?ip=203.0.113.1"
{
  "success": true,
  "data": {
    "ip": "203.0.113.1",
    "type": "IPv4",
    "isPrivate": false,
    "ptr": "server1.example-hosting.com"
  },
  "error": null,
  "meta": { "responseTime": 42 }
}

data.ptr が意図したホスティングサービスのホスト名であることを確認してください。

Step 3 SSL 証明書の有効性を確認する

AWS ACM や Vercel などのマネージド SSL を利用しているドメインでは、証明書の更新はプラットフォーム側で自動的に処理されます。一方、ACME クライアントで自己管理しているドメインでは、更新スクリプトの実行権限が変わっていたり、DNS-01 チャレンジ用の API キーが期限切れになっていたりすると、気づかないまま証明書が失効します。複数ドメインを管理している場合、1つだけ更新が止まっていても他のドメインが正常なため発見が遅れます。

チェック項目

  • 各ドメインに HTTPS で到達できる
  • 証明書の有効期限が 30日以上 残っている
  • 自動更新の仕組みが動作している(マネージド SSL / ACME クライアント等)

確認コマンド

openssl コマンドで有効期限を直接確認できます。

openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -dates
notBefore=Mar  1 00:00:00 2026 GMT
notAfter=May 30 23:59:59 2026 GMT

labee.dev の API では、HTTPS の到達性を確認できます。

curl "https://labee.dev/api/ssl-cert?hostname=example.com"
{
  "success": true,
  "data": {
    "hostname": "example.com",
    "port": 443,
    "reachable": true,
    "status": 200
  },
  "error": null,
  "meta": { "responseTime": 156 }
}

data.reachable が true であれば、外部から HTTPS で正常に接続できています。false が返る場合は、証明書の期限切れ、DNS の設定ミス、ファイアウォールの遮断などを確認してください。

用語解説証明書の有効期限切れ(Certificate Expiry)SSL/TLS証明書のNotAfterを過ぎた状態。ブラウザーが警告を表示しHTTPS接続が拒否されます。labee.dev 用語解説SSL/TLS 証明書ウェブサイトの通信を暗号化し、サーバーの身元を証明するデジタル証明書。HTTPS 配信の前提条件。labee.dev

Step 4 メール認証を確認する

メールを送信するドメインでは、SPF・DKIM・DMARC の3つが正しく設定されている必要があります。2024年2月以降、Gmail は1日5,000通以上を送信するドメインに対してこれら3つすべてを必須としています。ドメインが増えると、あるドメインだけ DMARC を設定し忘れていた、という状況が起きやすくなります。

チェック項目

  • 各送信ドメインで SPF レコードが存在する
  • DKIM レコードが設定済みである
  • DMARC レコードが設定済みで、rua= にレポート受信先が指定されている

確認コマンド

SPF と DMARC は dig で確認します。

dig TXT example.com +short
"v=spf1 include:_spf.google.com ~all"
dig TXT _dmarc.example.com +short
"v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com"

labee.dev の API では、SPF・DKIM・DMARC・BIMI を一括で確認できます。

curl "https://labee.dev/api/mail-auth?domain=example.com"
{
  "success": true,
  "data": {
    "spf": {
      "record": "v=spf1 include:_spf.google.com ~all",
      "exists": true
    },
    "dkim": {
      "mode": "auto",
      "record": "v=DKIM1; k=rsa; p=MIIBIjAN...",
      "exists": true,
      "selector": "google",
      "matches": [
        { "selector": "google", "record": "v=DKIM1; k=rsa; p=MIIBIjAN...", "exists": true }
      ],
      "checkedSelectors": ["google", "selector1", "selector2", "s1", "s2", "k1", "k2", "k3", "default", "dkim", "mail", "smtp", "mte1", "mte2", "pdk1", "pdk2", "mesmtp", "zoho"],
      "exhaustive": false
    },
    "dmarc": {
      "record": "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com",
      "exists": true,
      "source": "exact",
      "domain": "example.com"
    },
    "bimi": { "record": null, "exists": false }
  },
  "error": null,
  "meta": { "responseTime": 142 }
}

data.spf.exists、data.dkim.exists、data.dmarc.exists がすべて true であることを確認してください。data.dmarc.record に rua= が含まれていない場合は、DMARC レポートを受信できない状態です。

用語解説DMARC(Domain-based Message Authentication, Reporting and Conformance)SPF と DKIM の認証結果を統合し、なりすましメールの処理方針をドメイン所有者が宣言する仕組み。Google・Yahoo が大量送信者に義務化。labee.dev

Step 5 バッチ確認スクリプトを作成する

Step 2〜4 の確認を手動で繰り返すのは、ドメインが5個を超えた時点で現実的ではありません。シェルスクリプトが書ける場合は、ドメインリストを読み込んで一括チェックするスクリプトを用意します。スクリプトが書けない場合は、Step 2〜4 のコマンドをドメインごとに手動実行し、結果をスプレッドシートに記録する運用でも十分です。

チェック項目

  • ドメインリストファイル(domains.txt)が最新の台帳と一致している
  • スクリプトの出力に ERROR がないことを確認した

スクリプト例

以下のスクリプトは、domains.txt の各行を読み込み、labee.dev の API で DNS・SSL・メール認証を確認します。jq がインストールされている必要があります。

#!/bin/bash

DOMAIN_LIST="domains.txt"
API_BASE="https://labee.dev/api"

echo "=== 複数ドメイン一括チェック ==="
echo "実行日時: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""

while IFS= read -r domain; do
  # 空行とコメント行をスキップ
  [[ -z "$domain" || "$domain" =~ ^# ]] && continue

  echo "--- $domain ---"

  # DNS チェック(A レコード)
  dns_result=$(curl -s "$API_BASE/dns?domain=$domain&type=A")
  a_record=$(echo "$dns_result" | jq -r '.data.records.A[0].address // "NONE"')
  if [ "$a_record" = "NONE" ]; then
    echo "  DNS:  ERROR - A レコードが見つかりません"
  else
    echo "  DNS:  OK - $a_record"
  fi

  # SSL チェック
  ssl_result=$(curl -s "$API_BASE/ssl-cert?hostname=$domain")
  reachable=$(echo "$ssl_result" | jq -r '.data.reachable // false')
  if [ "$reachable" = "true" ]; then
    echo "  SSL:  OK - HTTPS 到達可能"
  else
    echo "  SSL:  ERROR - HTTPS 到達不可"
  fi

  # メール認証チェック
  mail_result=$(curl -s "$API_BASE/mail-auth?domain=$domain")
  spf_exists=$(echo "$mail_result" | jq -r '.data.spf.exists')
  dkim_exists=$(echo "$mail_result" | jq -r '.data.dkim.exists')
  dmarc_exists=$(echo "$mail_result" | jq -r '.data.dmarc.exists')

  if [ "$spf_exists" = "true" ]; then
    echo "  SPF:  OK"
  else
    echo "  SPF:  ERROR - レコードが見つかりません"
  fi

  if [ "$dkim_exists" = "true" ]; then
    echo "  DKIM: OK"
  else
    echo "  DKIM: ERROR - レコードが見つかりません"
  fi

  if [ "$dmarc_exists" = "true" ]; then
    dmarc_record=$(echo "$mail_result" | jq -r '.data.dmarc.record')
    if echo "$dmarc_record" | grep -q "rua="; then
      echo "  DMARC: OK (rua 設定済み)"
    else
      echo "  DMARC: WARN - rua= が未設定です"
    fi
  else
    echo "  DMARC: ERROR - レコードが見つかりません"
  fi

  echo ""
done < "$DOMAIN_LIST"

echo "=== チェック完了 ==="

実行方法

chmod +x check-domains.sh
./check-domains.sh
=== 複数ドメイン一括チェック ===
実行日時: 2026-04-22 10:00:00

--- example.com ---
  DNS:  OK - 203.0.113.1
  SSL:  OK - HTTPS 到達可能
  SPF:  OK
  DKIM: OK
  DMARC: OK (rua 設定済み)

--- shop.example.com ---
  DNS:  OK - 203.0.113.2
  SSL:  ERROR - HTTPS 到達不可
  SPF:  ERROR - レコードが見つかりません
  DKIM: ERROR - レコードが見つかりません
  DMARC: ERROR - レコードが見つかりません

=== チェック完了 ===

出力に ERROR が含まれているドメインは、個別に原因を調査してください。このスクリプトを cron や CI/CD パイプラインに組み込めば、月次チェックを自動化できます。

Step 6 アラート・通知を設定する

定期チェックの仕組みができたら、異常を検知したときに通知が届くようにします。

チェック項目

  • スクリプトの実行結果を Slack やメールに通知する設定を追加した
  • cron ジョブまたは CI/CD のスケジュール実行を設定した

通知の組み込み例

Step 5 のスクリプトに、ERROR を検知した場合だけ通知する仕組みを追加します。

#!/bin/bash

DOMAIN_LIST="domains.txt"
API_BASE="https://labee.dev/api"
ERRORS=""

while IFS= read -r domain; do
  [[ -z "$domain" || "$domain" =~ ^# ]] && continue

  # SSL チェック
  ssl_result=$(curl -s "$API_BASE/ssl-cert?hostname=$domain")
  reachable=$(echo "$ssl_result" | jq -r '.data.reachable // false')
  if [ "$reachable" != "true" ]; then
    ERRORS="${ERRORS}${domain}: SSL 到達不可\n"
  fi

  # メール認証チェック
  mail_result=$(curl -s "$API_BASE/mail-auth?domain=$domain")
  spf_exists=$(echo "$mail_result" | jq -r '.data.spf.exists')
  dmarc_exists=$(echo "$mail_result" | jq -r '.data.dmarc.exists')

  if [ "$spf_exists" != "true" ]; then
    ERRORS="${ERRORS}${domain}: SPF 未設定\n"
  fi
  if [ "$dmarc_exists" != "true" ]; then
    ERRORS="${ERRORS}${domain}: DMARC 未設定\n"
  fi
done < "$DOMAIN_LIST"

# ERROR がある場合のみ通知
if [ -n "$ERRORS" ]; then
  echo -e "=== ドメインチェック異常検知 ===\n$ERRORS"
  # Slack Webhook に通知する例:
  # curl -s -X POST "$SLACK_WEBHOOK_URL" \
  #   -H 'Content-Type: application/json' \
  #   -d "{\"text\": \"ドメインチェック異常検知:\n$ERRORS\"}"
fi

cron で月次実行する場合は以下のように設定します。

# 毎月1日の午前9時に実行
0 9 1 * * /path/to/check-domains.sh

よくある設定ミス

ドメインごとに DNS プロバイダーが異なり把握できていない

組織の成長に伴い、時期ごとに異なるプロバイダーでドメインを取得していると、どのドメインがどのプロバイダーにあるかが分からなくなります。台帳にプロバイダー情報を記録し、NS レコードの確認で実態と台帳が一致しているか定期的に照合してください。

メール送信しないドメインのメール認証を放置している

メールを送信しないドメインでも、SPF に v=spf1 -all を、DMARC に v=DMARC1; p=reject を設定しておくと、そのドメインを騙ったなりすましメールを防止できます。台帳で「メール送信なし」と記録されているドメインにも、拒否ポリシーの設定を推奨します。

SSL 証明書の自動更新が一部のドメインだけ止まっている

ACME クライアントで自己管理している場合、certbot は更新対象の証明書を /etc/letsencrypt/renewal/ 配下の設定ファイルで管理しています。サーバー移行時にこのディレクトリーをコピーし忘れると、移行先では自動更新が動作しません。マネージド SSL を利用しているドメインと自己管理のドメインが混在している場合は、どのドメインがどの方式で管理されているかを台帳に記録してください。Step 5 のバッチスクリプトで全ドメインの SSL 到達性を定期的に確認しておけば、管理方式に関わらず更新停止を早期に検知できます。

DNS レコードの変更後に伝播を確認していない

TTL を短く設定していても、DNS の変更はリゾルバーのキャッシュが消えるまで反映されません。変更直後に dig や API で確認しても古い値が返ることがあります。TTL に設定した秒数が経過してから再確認してください。

用語解説DNS 伝播(DNS Propagation)DNS レコードの変更が世界中のリゾルバーに反映される過程。実態はキャッシュの期限切れであり、TTL の事前短縮で待ち時間を短縮できる。labee.dev 用語解説TTL(Time To Live)DNS レコードがキャッシュされる有効期間を秒数で指定する値。DNS 切り替え時の反映速度を左右する。labee.dev

実際のドメインで確認してみる

登録不要、無料です。

無料で試す

Pro プラン(準備中)

DNS 変更の自動検知・SSL 期限アラート・複数ドメイン管理など、継続して確認し続けるための機能を準備中です。

関連ガイド

チェックリスト 初級

メール認証 完全チェックリスト

SPF・DKIM・DMARC の設定状況を一つずつ確認できるチェックリストです。Gmail / Outlook の送信者認証に対応するための最低限の項目をまとめています。

初級 ・ 10分

チェックリスト 初級

メールが届かない時の確認チェックリスト — 原因の切り分けと対処法

メールが届かない・迷惑メールに振り分けられる時に、どこから確認すればいいかをステップごとにまとめたチェックリストです。SPF・DKIM・DMARC の確認から、逆引き DNS、ブロックリスト、送信者レピュテーションまで順番に切り分けられます。

初級 ・ 10分

ガイド 中級

DMARC ポリシー段階的移行ガイド — p=none から p=reject へ安全に移行する手順

DMARC ポリシーを p=none から p=quarantine、p=reject へ段階的に移行する手順を解説します。pct タグを使った段階適用、集計レポートの読み方、移行判断の基準をステップごとにまとめています。

中級 ・ 15分

コンテンツ 技術ノート ガイド 用語解説
ツール ツール一覧 API Reference
Labee 日本語トップ Labee LLC
© 2026 Labee LLC . All rights reserved.
ホーム ブログ ガイド 用語集