DNS MXレコードのpreference違いによるメール動作確認。特にpreference 0設定

DNSのMXレコードのpreference(優先度値)に「0」を設定しても良いのでしょうか?
preferenceの値によるメール動作の確認とともに勉強してみました。

 

結論、preference 0を設定しても良い。最優先値

image

RFC 974 に「メールルーティングとドメインシステム」について定義されている。
この文章を、ざっくり翻訳すると

  • preference(優先度値)は符号なしの16ビット整数

とあります。つまり、preferenceは0を含みます。

参考、RFC 974 - Mail routing and the domain system

さらに、RFC 974 にpreferenceによるメーラーの動作について定義されています。

  • preference(優先度値)は、メーラーがMXホストにどのような順序で配信を試みるかを示すために使用され、番号の小さいMXホストが最初に試行されます。
  • 同じpreference(優先度値)を持つ複数MXホストの設定が出来、同じ優先順位を持ちます。

前提条件・環境

image

以下の環境でテストしました。

Server-A

  • CentOS Linux 7.3.1611
  • bind 9.94-37
  • postfix 2.10.1-6
  • resolver:Server-A
  • IPアドレス:10.127.0.100, 10.127.0.101, 10.127.0.102, 

Server-B

  • CentOS Linux 7.3.1611
  • postfix 2.10.1-6
  • resolver: Server-A

Server-Aのtest.localゾーンのMXレコードをいろいろ変更させてテストしました。

 

MXレコード preference 0 と10で検証

image

メールを10通投げてみました。

image

結果、全部preference 0 のmail01へメールされました。

 

MXレコード preference 10 と10で検証。優先度値を同じ値に設定

image

メールを10通投げてみました。

image

結果、微妙にmail01とmail02で分散されました。

 

特殊なpreference 0 の設定。メールサーバーなし(Null MX)

image

メールサーバーが無いという特殊なDNS MX設定がRFC 7505にあります。
どういう意味なのかメール動作で確認してみます。

参考、RFC 7505 - A "Null MX" No Service Resource Record for Domains That Accept No Mail

 

MXレコードがない場合

image

MXレコードがない場合、メールをするとServer-Bから以下のようなDNSクエリが発生します。

image

  1. test.localのMXレコードを引いて、無いとわかると
  2. test.localのAレコードを引いて、
  3. test.localのAAAAレコードを引きます

今回のテスト環境の場合、10.127.0.100にメールが飛びます。

image

このホスト名Aレコードにもメールを飛ばさせたくない設定は以下のようになります。

Null MXレコードの設定

image

メールをするとServer-Bから以下のようなDNSクエリが発生します。

image

  1. test.localのMXレコードを引いて、無いとわかると終了

Aレコードにメールを飛ばそうとしない動きがわかります。

image

Server-Bのメールログに、

  • dsn=5.4.4 status=bounced (Name service error for name=test.local type=MX: Malformed or unexpected name server replay)

というエラーが記載されました。メールの挙動が明らかに変わりましたね。

 

Null MXレコードの設定はpreference 0でないとダメなのか?

image

おまけの検証です。
Null MXレコードをpreference 10で設定してみました。

結果的に、Null MXの設定はpreference 0である必要はなさそうでした。

image

なるほど。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です