DNSの逆引きを設定するとき、
「1つのIPアドレスに複数のPTRレコードを登録してもいいの?」
という疑問が出ることがあります。
例えば、1台のサーバーを複数の用途で使用していて、
203.0.113.10
というIPアドレスに対して、
mail.example.jp
smtp.example.jp
の2つのホスト名を使いたい場合です。
DNS上は複数のPTRレコードを登録できる場合があります。
しかし、特にメールサーバーの逆引きDNSでは、1つのIPアドレスに複数PTRを設定するのはおすすめしません。
この記事では、その理由と、正引き・逆引きの関係について説明します。
PTRレコードとは
通常のDNSでは、ホスト名からIPアドレスを調べます。
例えば、
mail.example.jp
↓
DNS
↓
203.0.113.10
です。
これが正引きです。
Aレコードなら、
mail.example.jp. IN A 203.0.113.10
のように設定します。
一方PTRレコードは逆です。
203.0.113.10
↓
DNS
↓
mail.example.jp
のように、IPアドレスからホスト名を調べます。
これが逆引きです。
同じIPアドレスにPTRを2つ登録できる?
DNSの仕組み上、1つのIPアドレスに対して複数のPTRレコードが返る構成は可能です。
例えば、
203.0.113.10
↓
├─ mail.example.jp
└─ smtp.example.jp
という状態です。
逆引きゾーンではイメージとして、
10 IN PTR mail.example.jp.
10 IN PTR smtp.example.jp.
のようになります。
そのため、
複数PTRはDNSの構文として絶対に禁止されている
というわけではありません。
しかし、
「設定できる」ことと「設定した方がよい」ことは別です。
メールサーバーでは1つのPTRを推奨
特にインターネットへメールを送信するサーバーでは、基本的に、
1つの送信元IP
↓
1つのPTR
という構成にした方が分かりやすく、トラブルも少なくなります。
例えば、
203.0.113.10
↓ PTR
mail.example.jp
です。
そして正引きも、
mail.example.jp
↓ A
203.0.113.10
になるようにします。
つまり、
203.0.113.10
│
│ PTR
▼
mail.example.jp
│
│ A
▼
203.0.113.10
と戻ってくる状態です。
このような関係は、一般に**Forward-confirmed reverse DNS(FCrDNS)**と呼ばれます。
なぜメールサーバーでは逆引きが重要なのか
メールを受信する側では、送信元IPアドレスについて逆引きDNSを確認することがあります。
例えば、
送信元IP
203.0.113.10
↓
PTR
↓
mail.example.jp
↓
A
↓
203.0.113.10
という関係を確認できます。
これは送信元の信頼性を評価する材料の一つになります。
逆に、
203.0.113.10
↓ PTR
mail.example.jp
↓ A
192.0.2.50
のように、元のIPアドレスへ戻らなければ不自然です。
メール配送ではSPF・DKIM・DMARCだけでなく、送信元IPの逆引きDNSやホスト名の整合性なども確認されることがあるため、PTRは適切に設定しておいた方がよいでしょう。
複数PTRだと何が問題なのか
例えば、
203.0.113.10
↓
┌─────┴─────┐
▼ ▼
mail.example.jp
smtp.example.jp
という2つのPTRが設定されていたとします。
問い合わせ側から見ると、逆引き結果として複数の名前が返ります。
DNSとして成立していても、
「このIPアドレスの正式なホスト名は結局どちらなのか?」
が分かりにくくなります。
さらにメールでは、
PTR
SMTP HELO/EHLO
Aレコード
送信ドメイン
など複数の情報が関係します。
例えばSMTPサーバーが、
EHLO mail.example.jp
と名乗っているのであれば、
203.0.113.10
↓ PTR
mail.example.jp
としておく方がシンプルです。
SMTPのEHLO名との関係
メールサーバーが相手サーバーへ接続すると、SMTP通信の最初に、
EHLO mail.example.jp
のように自身の名前を通知します。
例えばPostfixなら、設定によっては、
myhostname = mail.example.jp
などがEHLO名に関係します。
理想的には、
送信元IP
203.0.113.10
│
│ PTR
▼
mail.example.jp
▲
│ EHLO
│
メールサーバー
となり、さらに、
mail.example.jp
↓ A
203.0.113.10
と正引きも一致する状態にします。
つまり、
送信元IP:203.0.113.10
PTR :mail.example.jp
EHLO :mail.example.jp
A :203.0.113.10
という構成です。
これなら非常に分かりやすくなります。
1台のサーバーに複数の名前を持たせたい場合は?
例えば、
mail.example.jp
smtp.example.jp
の両方を同じサーバーで使いたいこともあります。
この場合、PTRまで2つにする必要はありません。
正引き側では、
mail.example.jp. IN A 203.0.113.10
smtp.example.jp. IN A 203.0.113.10
として、
mail.example.jp ──┐
├→ 203.0.113.10
smtp.example.jp ──┘
のように複数の名前を同じIPへ向けることができます。
一方、逆引きは代表となる名前を一つ決めます。
203.0.113.10
↓ PTR
mail.example.jp
です。
つまり、
正引き
mail.example.jp ──┐
├──→ 203.0.113.10
smtp.example.jp ──┘
逆引き
203.0.113.10
│
└──→ mail.example.jp
という構成です。
CNAMEを使う方法もある
用途によっては別名をCNAMEにする方法もあります。
例えば、
mail.example.jp. IN A 203.0.113.10
smtp.example.jp. IN CNAME mail.example.jp.
とします。
すると、
smtp.example.jp
↓ CNAME
mail.example.jp
↓ A
203.0.113.10
となります。
ただしCNAMEにはDNS上の制約もあるため、単純に「同じIPなら全部CNAMEにすればよい」というわけではありません。
メール関連ではMXレコードなどとの関係も考えて設計する必要があります。
実際にPTRを確認する方法
Linuxならdigで確認できます。
dig -x 203.0.113.10
例えば、
10.113.0.203.in-addr.arpa. 3600 IN PTR mail.example.jp.
と返れば、PTRが確認できます。
hostを使える環境なら、
host 203.0.113.10
でも確認できます。
Windowsなら、
nslookup 203.0.113.10
です。
正引きも必ず確認する
逆引きだけで終わらず、PTRで返ってきた名前をもう一度正引きします。
例えば、
dig mail.example.jp A
です。
結果が、
mail.example.jp. 3600 IN A 203.0.113.10
なら、
203.0.113.10
↓ PTR
mail.example.jp
↓ A
203.0.113.10
と往復できます。
メールサーバーのDNS設定を確認するときは、
PTRだけではなく、PTR → Aまで確認する
のがおすすめです。
複数PTRが設定されていないか確認する
dig -xの結果に、
10.113.0.203.in-addr.arpa.
IN PTR mail.example.jp.
10.113.0.203.in-addr.arpa.
IN PTR smtp.example.jp.
のように複数行返ってきた場合は、複数PTRが登録されています。
すぐに障害になるとは限りませんが、メール送信用IPなら、
どのホスト名を正式名にするか
↓
PTRを1つにする
↓
EHLO名を合わせる
↓
Aレコードを確認
という整理を検討した方がよいでしょう。
SPF・DKIM・DMARCがPASSならPTRは不要?
ここも混同しやすいところです。
SPF・DKIM・DMARCとPTRは別の仕組みです。
例えば、
SPF PASS
DKIM PASS
DMARC PASS
だからといって、
PTRなしでも問題ない
とは言い切れません。
メール受信側はメール認証だけでなく、
送信元IP
IPレピュテーション
PTR
EHLO
SPF
DKIM
DMARC
メール本文
送信履歴
など、さまざまな情報を利用してメールを評価する場合があります。
そのため、インターネットへメールを送信するサーバーなら、SPF/DKIM/DMARCだけでなく逆引きDNSも適切に設定しておくことが重要です。
PTRを変更するときの確認項目
メールサーバーのPTRを変更した場合、私は最低でも次を確認します。
① 送信元グローバルIPを確認
↓
② dig -x でPTR確認
↓
③ PTRで返った名前を正引き
↓
④ 元のIPへ戻ることを確認
↓
⑤ SMTP EHLO名を確認
↓
⑥ SPFを確認
↓
⑦ DKIMを確認
↓
⑧ DMARCを確認
↓
⑨ 外部へテストメール送信
特にメール到達性のトラブルを調査している場合は、DNSだけ直して終わらず、実際に外部へ送信して確認することが重要です。
まとめ
1つのIPアドレスに複数のPTRレコードを持たせること自体は可能ですが、特にメール送信用サーバーでは、基本的に、
1 IP
↓
1 PTR
↓
代表ホスト名
というシンプルな構成がおすすめです。
そして、
203.0.113.10
↓ PTR
mail.example.jp
↓ A
203.0.113.10
と正引き・逆引きが対応していることを確認します。
さらにSMTPサーバーなら、
IP
PTR
A
EHLO
の関係も確認しておくとよいでしょう。
重要なのは、
DNSとして設定できるかどうかと、メールサーバーとして望ましい設定かどうかは別
という点です。
複数PTRがすぐにメール配送障害を起こすとは限りませんが、メールサーバーでは不要な曖昧さを作らず、代表となるFQDNを1つ決めてPTR・正引き・EHLOの整合性を取るのが分かりやすい構成です。


コメント