DNSの逆引きを設定するとき、
「1つのIPアドレスに複数のPTRレコードを登録してもいいの?」
という疑問が出ることがあります。
例えば、1台のサーバーを複数の用途で使用していて、
203.0.113.10
というIPアドレスに対して、
mail.example.jpsmtp.example.jp
という2つのホスト名を使いたい場合です。
DNSの仕組み上、1つのIPアドレスに複数のPTRレコードを登録することは可能です。
しかし、特にインターネットへメールを送信するサーバーでは、1つのIPアドレスに対して代表となるPTRレコードを1つ設定する構成をおすすめします。
この記事では、複数PTRの問題点と、正引き・逆引き・SMTPのEHLO名の関係、実際の確認方法について説明します。
PTRレコードとは
DNSの正引きでは、ホスト名からIPアドレスを調べます。
例えば、
mail.example.jp → 203.0.113.10
という関係です。
Aレコードでは、次のように設定します。
mail.example.jp. IN A 203.0.113.10
一方、PTRレコードは逆に、IPアドレスからホスト名を調べるために使用します。
203.0.113.10 → mail.example.jp
これが逆引きDNSです。
同じIPアドレスにPTRを2つ登録できる?
DNSの仕組み上、1つのIPアドレスに対して複数のPTRレコードを設定することは可能です。
例えば、
203.0.113.10 → mail.example.jp
203.0.113.10 → smtp.example.jp
という構成です。
逆引きゾーンでは、例えば次のようになります。
10 IN PTR mail.example.jp.
10 IN PTR smtp.example.jp.
※上記は203.0.113.0/24に対応する逆引きゾーン内での設定例です。
複数のPTRレコードはDNSの構文として禁止されているわけではありません。
ただし、DNSとして設定できることと、メールサーバーの運用に適していることは別です。
メールサーバーでは1つのPTRを推奨
インターネットへメールを送信するサーバーでは、基本的に次のような構成が分かりやすくなります。
逆引き(PTR)
203.0.113.10 → mail.example.jp
正引き(A)
mail.example.jp → 203.0.113.10
つまり、
203.0.113.10 → PTR → mail.example.jp → A → 203.0.113.10
という関係です。
このように、逆引きで取得したホスト名を正引きすると元のIPアドレスに戻る関係を、「Forward-confirmed reverse DNS(FCrDNS)」と呼びます。
なお、FCrDNSは必ずしもPTRとAレコードが1対1であることを要求するものではありません。PTRで返されたホスト名を正引きした結果に、元のIPアドレスが含まれていることが重要です。
なぜメールサーバーでは逆引きが重要なのか
メールを受信するサーバーでは、送信元IPアドレスについて逆引きDNSを確認することがあります。
例えば、
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アドレスが含まれていなければ、FCrDNSの確認に失敗します。
受信側メールサーバーは、このようなDNSの整合性を送信元の評価材料として利用する場合があります。
ただし、PTRが正しく設定されていれば必ずメールが届くというわけではありません。
メールの到達性には、SPF・DKIM・DMARC、送信元IPの評価、メール本文なども関係します。
複数PTRだと何が問題なのか
例えば、次のように2つのPTRレコードが登録されていたとします。
203.0.113.10 → mail.example.jp
203.0.113.10 → smtp.example.jp
この場合、DNSの逆引き問い合わせでは複数のホスト名が返されます。
複数のPTRが存在すること自体はDNSの仕様上問題ありません。また、それぞれのホスト名が正引きで元のIPアドレスに戻るなら、FCrDNSの条件を満たす構成も可能です。
しかし、メールサーバーの運用では次の点に注意が必要です。
- 逆引き結果として複数のホスト名が返るため、設定確認が複雑になる
- 受信側システムによって逆引き結果の扱いが異なる可能性がある
- SMTPのEHLO名と、どのPTRレコードを対応させるかが分かりにくくなる
- 障害発生時の原因調査やDNS設定の管理が複雑になる
そのため、メール送信用IPアドレスでは、代表となるホスト名を1つ決めてPTRを設定する方が運用しやすくなります。
複数PTRが存在するだけで、必ずメール配送に失敗するわけではありません。
SMTPのEHLO名との関係
メールサーバーが相手のSMTPサーバーへ接続すると、例えば次のように自身のホスト名を通知します。
EHLO mail.example.jp
Postfixでは、通常、smtp_helo_nameがEHLO名を決める設定です。
明示的に変更していなければ、一般的にmyhostnameの値が使用されます。
例えば、
myhostname = mail.example.jp
という設定です。
送信元IPアドレスが203.0.113.10なら、次のような構成が分かりやすくなります。
| 項目 | 設定例 |
|---|---|
| 送信元IP | 203.0.113.10 |
| PTR | mail.example.jp |
| EHLO名 | mail.example.jp |
| Aレコード | mail.example.jp → 203.0.113.10 |
PTRとEHLO名は必ず同一でなければならないというDNSのルールがあるわけではありません。
しかし、メールサーバーではホスト名の整合性を取ることで、設定の管理や障害調査が容易になります。
1台のサーバーに複数の名前を持たせたい場合は?
例えば、同じサーバーに次の2つの名前を設定したい場合です。
mail.example.jpsmtp.example.jp
この場合、PTRを2つ設定する必要はありません。
正引き側で、次のように複数のAレコードを設定できます。
mail.example.jp. IN A 203.0.113.10
smtp.example.jp. IN A 203.0.113.10
一方、逆引きは代表となる名前を1つ設定します。
203.0.113.10 → mail.example.jp
この構成なら、複数のホスト名を利用しながら、逆引きDNSをシンプルに管理できます。
CNAMEを使う方法もある
用途によっては、別名をCNAMEレコードで設定する方法もあります。
例えば、
mail.example.jp. IN A 203.0.113.10
smtp.example.jp. IN CNAME mail.example.jp.
という構成です。
この場合、
smtp.example.jp → mail.example.jp → 203.0.113.10
という名前解決になります。
ただし、CNAMEにはDNS上の制約があります。
特にMXレコードの参照先にはCNAMEではなく、AレコードやAAAAレコードを持つホスト名を指定する必要があります。
そのため、メール関連のDNS設定では、用途に応じてAレコードとCNAMEを使い分けることが重要です。
実際にPTRを確認する方法
Linuxではdigコマンドで逆引きを確認できます。
dig -x 203.0.113.10
PTRが設定されていれば、例えば次のような結果が返ります。
10.113.0.203.in-addr.arpa. 3600 IN PTR mail.example.jp.
PTRレコードだけを簡潔に確認したい場合は、次のコマンドが便利です。
dig +short -x 203.0.113.10
結果例:
mail.example.jp.
hostコマンドでも確認できます。
host 203.0.113.10
Windowsでは次のコマンドを使用できます。
nslookup 203.0.113.10
※203.0.113.10は説明用のIPアドレスです。実際の確認では対象サーバーのグローバルIPアドレスに置き換えてください。
正引きも必ず確認する
逆引きだけで終わらず、PTRで返されたホスト名をもう一度正引きします。
例えば、
dig +short mail.example.jp A
です。
結果が、
203.0.113.10
であれば、
203.0.113.10 → PTR → mail.example.jp → A → 203.0.113.10
という関係を確認できます。
複数のAレコードが返る場合は、その中に元の送信元IPアドレスが含まれているか確認します。
メールサーバーのDNS設定を調査するときは、PTRだけでなく、PTRで返されたホスト名の正引きまで確認することが重要です。
複数PTRが設定されていないか確認する
次のコマンドでPTRを確認します。
dig +short -x 203.0.113.10
例えば、
mail.example.jp.
smtp.example.jp.
という2行が返った場合は、複数のPTRレコードが登録されています。
メール送信用IPアドレスなら、次の順番で設定を確認します。
- 代表となるホスト名を決める
- PTRを1つに統一する必要があるか検討する
- PTRで返されたホスト名の正引きを確認する
- SMTPのEHLO名を確認する
- 外部メールサーバーへの送信テストを実施する
なお、PTRレコードは、通常、そのIPアドレスの逆引きDNSを管理する事業者側で設定します。
利用している回線やVPS、クラウドサービスによっては、管理画面から変更できる場合もあります。
SPF・DKIM・DMARCがPASSならPTRは不要?
SPF・DKIM・DMARCとPTRは、それぞれ異なる仕組みです。
例えば、
- SPF:PASS
- DKIM:PASS
- DMARC:PASS
となっていても、PTRが不要になるわけではありません。
受信側メールサーバーでは、メール認証の結果だけでなく、送信元IPアドレス、逆引きDNS、IPレピュテーション、送信履歴などを評価する場合があります。
特にGmailなどの大手メールサービスへ送信する場合は、メール認証とDNSの整合性を両方確認することが重要です。
PTRを変更するときの確認項目
メールサーバーのPTRを変更する場合は、最低限、次の項目を確認します。
- 実際の送信元グローバルIPアドレスを確認する
dig -xでPTRを確認する- PTRで返されたホスト名を正引きする
- 正引き結果に元の送信元IPが含まれることを確認する
- SMTPのEHLO名を確認する
- SPFレコードを確認する
- DKIM署名と検証結果を確認する
- DMARCレコードと認証結果を確認する
- 外部へテストメールを送信する
- メールログや受信側の認証結果を確認する
PTRを変更した直後は、DNSキャッシュの影響で古い結果が返る場合があります。
設定変更後はDNSの反映状況を確認し、実際のメール配送結果まで確認することが重要です。
まとめ
1つのIPアドレスに複数のPTRレコードを設定することは、DNSの仕組み上可能です。
しかし、メール送信用サーバーでは、基本的に次のような構成をおすすめします。
203.0.113.10 → PTR → mail.example.jp
mail.example.jp → A → 203.0.113.10
さらに、SMTPのEHLO名もmail.example.jpに統一すると、設定の管理や障害調査が容易になります。
複数PTRが存在するだけで、必ずメール配送障害になるわけではありません。
重要なのは、DNSとして設定できるかどうかと、メールサーバーとして運用しやすい設定かどうかを分けて考えることです。
メールサーバーでは代表となるFQDNを決め、PTR・正引き・EHLO名の整合性を確認することが、トラブルを防ぐための基本となります。

コメント