Home > 保険システム開発室NEWS > メールサーバとMXレコード

メールサーバとMXレコード

2008-11-27 19:58

一つのドメインにはメールサーバを複数台存在させることが出来ます。 障害対策の為の冗長化や負荷分散など、メールサーバを複数台用意する理由は様々ですが、そのドメインに用意されているメールサーバがいくつなのかはWindowsのコマンドプロンプトで簡単に確認出来ます。

nslookupコマンドでMXレコードの確認

メールサーバはWindowsのコマンドプロンプトでnslookupコマンドを実行すれば確認できます。 nslookupとはDNSサーバから情報を取得するコマンドです。DNSサーバにはいくつかの情報が保持されていますがその中でメールサーバの情報を特にMXレコードと呼びます。(MXとはMail Exchangerの略です。)
具体的に以下の通りnslookupコマンドを実行すれば指定されたドメインのMXレコード情報が取得できます。

nslookup -type=mx ドメイン
※指定するのはドメインです。詳しくはドメインとFQDNという記事の図を御覧ください。

例えば「example.jp」というドメインのMXレコードをコマンドプロンプトで確認する場合は、以下のようにコマンドを実行します。

C:\> nslookup -type=mx example.jp ・・・・左記のように入力してEnterキー。

Server: fsr.example.jp
Address: 192.168.1.1

Non-authoritative answer:
example.jp MX preference = 10, mail exchanger = mail1.example.jp ・・・・①
example.jp MX preference = 20, mail exchanger = mail2.example.jp ・・・・②

example.jp nameserver = ns1.example.jp
example.jp nameserver = ns2.example.jp
mail1.example.jp internet address = 192.168.200.2 ・・・・・・・・・・・・・・・・・・③
mail2.example.jp internet address = 192.168.200.3 ・・・・・・・・・・・・・・・・・・④

※実際にはexample.jpというドメインは存在しませんので、上記のようには表示されません。ご注意ください。

上記の①と②がMXレコードの情報です。
これは「example.jp」というドメインのメールサーバは①と②で表示されている通り2台存在し、そのメールサーバの名前はそれぞれ「mail1.example.jp 」と「mail2.example.jp 」であると表示されています。

また、③と④は正式にはAレコードと呼び、それぞれのメールサーバのIPアドレスが具体的に表示されています。 このように実際に身近に存在するドメインを入力すると、色々な結果が出てくると思います。

これらの情報はそのドメインのDNSサーバ(コンテンツサーバ)に登録されている公開情報であり、 メール送信サーバが宛先のメールサーバに送信する際には、このMXレコードを取得して送るべきメールサーバのIPアドレスを取得しています。

preferenceによる優先順位

①と②の行を確認すると、preferenceという記述の後ろに数値が指定されています。 これはメール送信サーバが、まずはどこの宛先のメールサーバにメールを送信すべきかの優先順位となります。
ちなみにpreferenceが小さいほど優先順位は高くなります。
※preferenceは値自体に意味は無く、相対的な順序を定義するものです。よってドメインによってその値の大きさはまちまちです。

メール送信サーバは優先順位が高い(preferenceが小さい)サーバからメールを送信するルールとなっており、 仮に優先順位の高いメールサーバが故障してしまいメールが送信できなかった場合は、 次のメールサーバに送信するようになっています。

example.jp MX preference = 10, mail exchanger = mail1.example.jp ・・・・①
example.jp MX preference = 20, mail exchanger = mail2.example.jp ・・・・②

負荷分散・冗長化

大規模なメールサーバはMXレコードがいくつも定義されており、 且つそれらMXレコードのpreference値が同じになっている場合があります。 メール送信サーバはpreference値が同じサーバが複数存在した場合は、 基本的にランダムに一つを選んでメールを送信します。つまりここで負荷分散を行っています。 例えば、以下のようなMXレコードのドメインがあれば、まさにそのような狙いがあります。
※以下の例では、preferenceはすべて「10」という同じ値になっています。

example.jp MX preference = 10, mail exchanger = mail1.example.jp
example.jp MX preference = 10, mail exchanger = mail2.example.jp
example.jp MX preference = 10, mail exchanger = mail3.example.jp

example.jp nameserver = ns1.example.jp
example.jp nameserver = ns2.example.jp
mail1.example.jp internet address = 192.168.200.1
mail1.example.jp internet address = 192.168.200.2
mail1.example.jp internet address = 192.168.200.3
mail2.example.jp internet address = 192.168.200.4
mail2.example.jp internet address = 192.168.200.5
mail2.example.jp internet address = 192.168.200.6
mail2.example.jp internet address = 192.168.200.7
mail2.example.jp internet address = 192.168.200.8
mail2.example.jp internet address = 192.168.200.9

preference値が全く同じMXレコードを定義するだけではなく、上記のように更にそこに定義されたサーバの同じ名前に複数のIPアドレスを定義することによって更に負荷分散をさせることができます。
上記の例では、例えば「mail1.example.jp」に対して3つのIPアドレスを定義しています。

一般的に負荷分散を行えば、同時に障害対策にも有効となります。yahooメールやhotmail等の非常に大規模なメールサーバは必ずこのような対応をしています。実際に、「yahoo.co.jp」ドメインで上記のnslookupコマンドを実行すれば一目瞭然でしょう。

DNSのMXレコードとAレコードによる冗長構成

補足

最近はこのpreferenceを利用して既存インフラを殆ど変更することなくスパムフィルターを設置してくれるサービスが存在します。
これに関連して2008年12月3日にMXレコードとスパムメールという記事も書きましたので、是非御覧ください。

Posted by T.S

このページの上部へ