
## この記事でわかること

- DMARCの`sp`タグ（Subdomain Policy）が果たす役割と、`p`タグとの違い
- `sp`を省略した場合に発生するサブドメイン経由のなりすましリスク
- 親ドメインの状況別に見る`sp`の推奨設定パターン
- DMARCbisドラフトで追加される`np`タグ（存在しないサブドメイン用ポリシー）の動向

## sp タグは「サブドメイン専用のポリシー」

DMARC（ディーマーク）レコードは親ドメインに1本書くだけで、その配下のサブドメインにも自動で適用されます。ところが、親ドメインとサブドメインで送信元・運用形態が異なる場合は、同じポリシーで縛ると配信事故につながります。この問題を解決するのが`sp`タグです。

`sp`は **Subdomain Policy** の略で、親ドメインの`p`タグとは別に、サブドメインだけに適用するポリシーを指定できます。値は`p`と同じく`none` / `quarantine` / `reject`の3択です。

DMARCタグ全体の役割は[タグ完全リファレンス](/blog/dmarc-record-tags-reference)を参照。本記事では`sp`に絞って深掘りします。

```
v=DMARC1; p=reject; sp=quarantine; rua=mailto:dmarc@example.co.jp
```

上記の例では、親ドメイン宛のなりすましは`reject`（拒否）、サブドメイン宛のなりすましは`quarantine`（隔離）として扱われます。

## sp を省略するとどうなるか

`sp`を書かなかった場合、RFC 7489の仕様では **親ドメインの`p`の値がそのままサブドメインにも適用される** と決まっています。一見便利ですが、ここに落とし穴があります。

たとえば次のレコードを設定したとします。

```
v=DMARC1; p=reject; rua=mailto:dmarc@example.co.jp
```

このとき、`mail.example.co.jp`や`info.example.co.jp`などのサブドメイン経由で送信されているメールがあると、すべて`reject`の対象になります。マーケティング配信SaaS、予約システム、社内ツールが`*.example.co.jp`を差出人にしている場合、それらが一斉に拒否されてしまいます。

逆に、サブドメインを使った攻撃シナリオもあります。`p=none`しか書かれていない親ドメインで、攻撃者が`accounting.example.co.jp`という存在しないサブドメインを名乗ってフィッシングメールを送ると、DMARC側で歯止めが効きません。`sp`を明示しておかないと、こうした「サブドメイン経由のなりすまし」に隙ができます。

![sp タグなし vs sp タグありの差分](/blog/dmarc-sp-subdomain-policy/sp-omitted-vs-explicit.svg)

## 親ドメインの状況別に見る推奨パターン

実運用では、親ドメインのポリシーとサブドメインの送信実態を組み合わせて`sp`を決めます。代表的な4パターンを整理します。

### パターン1: 親ドメインから直接送信、サブドメインからは送らない

経理・営業など自社サーバーから`@example.co.jp`で送るだけで、サブドメインを差出人に使う運用がない場合です。この場合は親ドメインを`p=reject`まで上げたうえで、`sp=reject`も明示しておくのが安全です。明示することで、設定意図が運用ドキュメントとしても残ります。

```
v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc@example.co.jp
```

### パターン2: サブドメインから配信SaaSで送信している

`mail.example.co.jp`から配信ツールで一斉送信、`notify.example.co.jp`からシステム通知、といった構成です。この場合は親ドメインを`reject`にしつつ、サブドメインだけ段階的に強化します。最初は`sp=none`で観察し、レポートで送信元を把握できたら`sp=quarantine`、最終的に`sp=reject`へ進めます。

レポートの読み方は[DMARCレポートの見方](/blog/dmarc-report-reading)で詳しく扱っています。

### パターン3: 親ドメインを移行中で p=none

`p=none`の段階では、サブドメイン宛にも保護がかかっていない状態です。攻撃者にとっては「親ドメインを名乗るより、見覚えのないサブドメインを名乗ったほうが疑われにくい」ため、`sp=quarantine`を先に明示する選択肢があります。親ドメインの観察を続けつつ、サブドメインだけ先回りでガードする運用です。

### パターン4: 多数のサブドメインを業務で運用している

部門ごと・拠点ごとにサブドメインを切っている企業では、サブドメインの送信実態を把握しきれないことが多いです。この場合は無理に`sp`を厳しくせず、`sp=none`にしてレポートを集めるところから始めます。

![親 p=reject に対する sp の挙動 4 パターン](/blog/dmarc-sp-subdomain-policy/sp-patterns.svg)

### 設定ミスで起きる典型的なトラブル

`sp`の値を誤ると、次のような実害が発生します。

- **配信SaaSのメールが全停止**: 親ドメインを`p=reject`にしたら、`sp`未指定のためサブドメイン送信も同時に拒否対象になり、予約確認メールが届かなくなった
- **なりすまし対策の穴**: 親ドメインだけ`p=reject`、`sp=none`のままにしていたら、攻撃者が`billing.example.co.jp`を名乗る請求書詐欺メールを送ってきた
- **委任先と意図がずれる**: 子会社や代理店にサブドメインを貸している場合、`sp=reject`を明示せずにいると相手側のSPF/DKIM整備が追いつかずメールが落ちる

[サブドメインの基礎](/blog/subdomain-basics-mail)も参考になります。設定変更前に、社内で`*.example.co.jp`を差出人に使うシステムを棚卸しするのが事故防止の近道です。

## DMARCbis で追加される np タグ

現行のRFC 7489（2015年）では`sp`しか定義されていませんが、IETFで策定中のDMARCbisドラフトでは新たに`np`タグ（**Non-existent Subdomain Policy**）が追加される予定です。

`np`は「DNSに存在しないサブドメイン」を名乗ったメールに対するポリシーを指定します。攻撃者は意図的に存在しないサブドメインを使うことが多いため、`np=reject`を明示すれば、その経路を一気に塞げます。

```
v=DMARC1; p=reject; sp=quarantine; np=reject; rua=mailto:dmarc@example.co.jp
```

DMARCbisの正式公開はこれからですが、Gmail・Microsoft 365 など大手プロバイダはすでに`np`タグを認識する方向で実装を進めています。運用ドメインを棚卸ししたうえで`sp`と`np`をセットで設計しておくと、将来の仕様変更にも対応しやすくなります。ポリシー強化の全体像は[DMARCポリシー強化の進め方](/blog/dmarc-policy-tightening)で扱っています。

## 自社の状況を確認してみませんか

設定状況がわからない方は、無料の[ドメイン診断](/diagnose)で現状をチェックできます。
DMARC・SPF・DKIM・SSL の状態が数十秒でレポートされます。
判断に迷う場合は[お問い合わせ](/contact)からご相談ください。専門家がわかりやすくサポートいたします。
