ドメイン検証とDNS設定
アカウントに生成されたTXTレコードで送信ドメインの所有権を検証します。
1. 追加前に確認
追加には有効なパッケージと利用可能なノードが必要です。max_domainsは上限で、技術的な無制限ではありません。複数ドメインは現在の枠を共有します。ASCII FQDNを使い、競合・上限・ノードの問題を解決してから再試行してください。
curl -X POST "${SMTPDOG_API_ORIGIN}/domains" \
-H "Authorization: Bearer ${SMTPDOG_SESSION_TOKEN}" \
-H "Content-Type: application/json" \
--data '{"domain_name":"example.com"}'2. 実際のTXTレコードを使う
作成レスポンスまたはGET /domains/{id}でtype、name、valueを取得します。DKIM selector・公開鍵・SPF includeは実際の値を使ってください。公開用の仮TXTはありません。DNS事業者の相対ホスト名仕様を確認し、既存SPFは上書きや複数登録せず統合を確認します。
| フィールド / 設定 | 型 / 状態 | 説明 |
|---|---|---|
| type | string | 現在はTXT |
| name | string | 完全な返却名を使い、相対Host仕様を確認 |
| value | string | 返却DKIM鍵・SPFを使用、仮データ不可 |
type: TXT
name: <use the actual dns_records[].name>
value: <use the actual dns_records[].value>3. DNS プロバイダーでレコードを追加する
送信ドメインごとに、専用の DKIM セレクター、公開鍵、SPF レコードがアカウントに発行されます。これらを DNS プロバイダーで TXT レコードとして追加し、コンソールで検証を実行してください。
- STEP 01 · レコードを取得コンソールでドメインを追加
コンソールでドメイン(またはサブドメイン)を追加すると、type、name、value を含む専用の dns_records が返されます。
- STEP 02 · TXT レコードを追加DNS プロバイダーで作成
DNS プロバイダーにサインインし、各レコードを TXT として追加します。ホスト欄が相対名を求めるかどうかに注意してください。
- STEP 03 · 検証all_passed を確認
反映を待ってからコンソールで「検証」を実行します。SPF と DKIM のチェックがすべて通れば(all_passed が true)、送信できます。
DNS プロバイダー別の設定手順
ホスト欄にルートドメインが自動で付くかどうかは、プロバイダーによって異なります。お使いのものを選んでください。
1. 設定画面への行き方
Cloudflare ダッシュボード → ドメインを選択 → DNS → Records → Add record。
2. ホスト名(Host / Name)の入力
Name には、SPF のようなルートドメインのレコードなら @、サブドメインなら mail のようなプレフィックスを入力します。DKIM は相対部分の <selector>._domainkey を入力します。完全な名前を入力しても Cloudflare が正規化します。
3. レコードタイプと値
Type は TXT を選び、コンソールに表示された値をそのまま Content に貼り付けます。前後に余分な空白を入れないでください。
4. TTL と反映時間
TTL は Auto のままで構いません。TXT レコードはプロキシされません。通常はすぐ反映されますが、数分見てください。
1. 設定画面への行き方
Alibaba Cloud コンソール → Alibaba Cloud DNS → Public Zone → ドメイン → Settings → Add Record。
2. ホスト名(Host / Name)の入力
重要:Host には相対名だけを入力します。ドメインは自動で補われます。example.com なら @、mail.example.com なら mail、DKIM は <selector>._domainkey のみを入力してください。
3. レコードタイプと値
Record Type は TXT を選び、SPF または DKIM の文字列全体を Record Value に貼り付けます。
4. TTL と反映時間
回線は Default のままにし、TTL は 10 分(600 秒)程度が目安です。追加後は数分待ってから検証してください。
1. 設定画面への行き方
DNSPod コンソール → My Domains → ドメインを開く → Add Record。
2. ホスト名(Host / Name)の入力
Alibaba Cloud と同じ規則です。相対名だけを入力します(ルートは @、サブドメインや DKIM は該当のプレフィックス)。ドメインをもう一度入力すると example.com.example.com になり、検証に失敗します。
3. レコードタイプと値
TXT を選び、コンソールに表示された値をそのまま貼り付けます。引用符を自分で付けないでください。
4. TTL と反映時間
Line は Default、TTL は既定の 600 秒のままにして、保存後にコンソールで検証してください。
1. 設定画面への行き方
Route 53 コンソール → Hosted zones → ドメインを選択 → Create record。
2. ホスト名(Host / Name)の入力
Record name の入力欄が、すでにドメインで終わっているかを確認します。そうであれば相対部分だけを入力します(ルートドメインは空欄)。SPF と DKIM は別々の TXT レコードとして作成します。
3. レコードタイプと値
Record type は TXT を選び、値を貼り付けます。ホストにすでに SPF がある場合は、その単一の v=spf1 レコードに include を統合してください。1 つの文字列は 255 文字までのため、長い DKIM の値が拒否された場合は、同じレコード内で 255 文字以下の引用符付き文字列に分割します。
4. TTL と反映時間
TTL はまず 300 秒(5 分)が目安です。反映後にコンソールで検証してください。
各プロバイダーのコンソールは画面構成が変わることがあります。表記が異なる場合も、相対ホスト、タイプは TXT、値はそのまま、という規則に従ってください。
ホスト名の変換早見表
プロバイダーがルートドメインを自動で付ける場合、コンソールが返す完全な名前を相対ホストに変換します。
| ケース | コンソールが返す name | 入力するホスト | 備考 |
|---|---|---|---|
| ルートドメインの SPF | example.com | @ | @ はルートドメインを表します。SPF がすでにある場合は、2 つ目を作らず統合します。 |
| サブドメインの SPF | mail.example.com | 末尾の .example.com を除き、サブドメインのプレフィックスだけを入力します。 | |
| ルートドメインの DKIM | <selector>._domainkey.example.com | <selector>._domainkey | コンソールが返した selector を使い、ルートドメイン部分を除きます。 |
| サブドメインの DKIM | <selector>._domainkey.mail.example.com | <selector>._domainkey.mail | サブドメイン部分(.mail)は残し、末尾の .example.com だけを除きます。 |
よくある落とし穴
1. ホストごとに SPF は 1 つ:同じホストに v=spf1 の TXT レコードを複数置くことはできません。他のメールサービスの SPF がすでにある場合は、コンソールの include をそこへ統合してください。
2. 長い DKIM の値:DKIM の公開鍵は 255 文字を超えます。多くのプロバイダーは自動で分割しますが、そうでない場合は 1 つの TXT レコード内で、255 文字以下の引用符付き文字列に分割してください。
3. 検証 API が HTTP 200 を返しても、チェックが実行されただけです。all_passed が true か確認し、失敗時は checks[] の expected_value と found_values を比較してください。
4. 検証結果の確認
POST /domains/{id}/verifyには本文不要です。HTTP 200でもall_passedがfalseの場合があります。passed、expected_value、found_values、lookup_errorを確認し、全項目通過を確認します。DNS検証はノード設定完了や継続監視の保証ではありません。
| フィールド / 設定 | 型 / 状態 | 説明 |
|---|---|---|
| all_passed / status | bool / string | 全体の合格と現在状態 |
| checks[].name | string | dkim / spf |
| record_name / expected_value / passed | string / bool | 各レコードの期待値と結果 |
| found_values / lookup_error | string[] / string | 任意、DNS問題の調査用 |
curl -X GET "${SMTPDOG_API_ORIGIN}/domains/${SMTPDOG_DOMAIN_ID}" \
-H "Authorization: Bearer ${SMTPDOG_SESSION_TOKEN}"
curl -X POST "${SMTPDOG_API_ORIGIN}/domains/${SMTPDOG_DOMAIN_ID}/verify" \
-H "Authorization: Bearer ${SMTPDOG_SESSION_TOKEN}"5. 問題解決と解除
TXT不一致は完全なname/value、反映、事業者のHost形式を確認します。DMARC検証APIはありません。DELETE /domains/{id}は履歴を残してdisabledにします。即時の再登録・他アカウント移動は保証されません。部分的な追加失敗は無限再試行せずサポートへ相談してください。