PTRレコードは同じIPアドレスに2つ登録していい?逆引きDNSで複数PTRを設定する問題点

Windows

DNSの逆引きを設定するとき、

「1つのIPアドレスに複数のPTRレコードを登録してもいいの?」

という疑問が出ることがあります。

例えば、1台のサーバーを複数の用途で使用していて、

203.0.113.10

というIPアドレスに対して、

  • mail.example.jp
  • smtp.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なら、次のような構成が分かりやすくなります。

項目設定例
送信元IP203.0.113.10
PTRmail.example.jp
EHLO名mail.example.jp
Aレコードmail.example.jp → 203.0.113.10

PTRとEHLO名は必ず同一でなければならないというDNSのルールがあるわけではありません。

しかし、メールサーバーではホスト名の整合性を取ることで、設定の管理や障害調査が容易になります。

1台のサーバーに複数の名前を持たせたい場合は?

例えば、同じサーバーに次の2つの名前を設定したい場合です。

  • mail.example.jp
  • smtp.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アドレスなら、次の順番で設定を確認します。

  1. 代表となるホスト名を決める
  2. PTRを1つに統一する必要があるか検討する
  3. PTRで返されたホスト名の正引きを確認する
  4. SMTPのEHLO名を確認する
  5. 外部メールサーバーへの送信テストを実施する

なお、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を変更する場合は、最低限、次の項目を確認します。

  1. 実際の送信元グローバルIPアドレスを確認する
  2. dig -xでPTRを確認する
  3. PTRで返されたホスト名を正引きする
  4. 正引き結果に元の送信元IPが含まれることを確認する
  5. SMTPのEHLO名を確認する
  6. SPFレコードを確認する
  7. DKIM署名と検証結果を確認する
  8. DMARCレコードと認証結果を確認する
  9. 外部へテストメールを送信する
  10. メールログや受信側の認証結果を確認する

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名の整合性を確認することが、トラブルを防ぐための基本となります。

コメント

タイトルとURLをコピーしました