DNS

BINDでMXレコードを登録する方法解説!【Linux】

こんにちは!

InfraAcademyというインフラ学習サイトを運営しております、ryuと申します。

今回の記事では、BINDでMXレコードを登録する方法について解説します。

MXレコードは、メールを正しく受信するためのDNS設定で、これを間違えるとメールのやり取りができなくなることもあります。

本記事では、初心者の方でも理解できるように、BINDを使ってLinux環境でMXレコードを設定する方法を詳しく解説します。

MXレコードとは何か、どのように設定し確認するか、わかりやすく解説します!

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

MXレコードとは?

そもそもMXレコードとはなんなのでしょうか?

MXレコード(Mail Exchangeレコード)は、DNSにおけるレコードの一つで、メールがどのサーバーに配送されるかを定義します。

例えば、「example.com」宛のメールがどのメールサーバーに届けられるべきかを指定するために使われます。

次にMXレコードを使ったメールの流れを解説します。

MXレコードを使ったメール送信の流れ

次にMXレコードがどのように使われるのかを解説します。

「example.com」宛のメールがどのメールサーバーに届けられるかを具体的な動作をステップごとに解説します。

メール送信者がメールを送信する

例えば、Aさんが自分のメールアドレス(A@test.net)からBさんのメールアドレス(B@example.com)宛にメールを送信するとします。

Aさんのメールクライアント(Gmail、Outlookなど)は、このメールを送信する際にまず自分のメールサーバーに送信リクエストを行います。

メールサーバーは、そのメールを最終的にBに届けるための処理を開始します。

DNSを使って「example.com」のメールサーバーを探す

Aさんのメールサーバーは、Bさんのメールアドレス(B@example.com)宛のメールをどこに送ればいいかを決める必要があります。

ここでDNSのMXレコードが使われます。

AさんのメールサーバーはDNSに対して、example.comドメインのMXレコードを問い合わせます。DNSサーバーは、example.comに対応するMXレコードを返します。

仮に、次のようなMXレコードが返ってきたとします。

example.com.    IN    MX    10 mail1.example.com.
example.com.    IN    MX    20 mail2.example.com.

優先度に基づいてメール配送先を決定

MXレコードには、優先度が設定されています。

上記の例では、mail1.example.comが優先度10で、mail2.example.comが優先度20です。

優先度が低いほど優先されるため、Aさんのメールサーバーはまずmail1.example.comにメールを送ろうとします。

メールの送信

Aさんのメールサーバーは、SMTPプロトコルを使ってmail1.example.comにメールを送信します。

受信側のメールサーバー(mail1.example.com)は、このメールを受け取り、Bさんのメールボックスに保存します。

このような流れでMXレコードを使用します。

BINDでMXレコードを登録する方法

次にBINDでMXレコードを登録する方法について解説します。

BINDのインストール

まず、BINDのインストールを行います。

apt-get update
apt-get install bind9

上記のコマンドは、Debian系を想定しています。ディストリビューションによってパッケージ管理のコマンドが違うのでご自身の環境に合わせてください。

【関連】【簡単】bindを設定してDNSサーバーを構築する手順解説!

ゾーンファイルの編集

MXレコードを設定するには、BINDのゾーンファイル(Zone File)を編集します。ゾーンファイルは、ドメインに関連するDNSレコードを管理するためのテキストファイルです。

一般的に、ゾーンファイルは/etc/bindまたは/var/namedディレクトリに保存されています。

ゾーンファイルの場所を確認するには、BINDの設定ファイル(通常は/etc/bind/named.conf.localや/etc/bind/named.conf)を確認します。

例えば、以下のようなエントリが設定されているかもしれません。

zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
};

この場合、/etc/bind/zones/db.example.comがゾーンファイルのパスです。

ゾーンファイルの編集

ゾーンファイルを開いて、MXレコードを追加します。編集にはviなどのテキストエディタを使います。

vi /etc/bind/zones/db.example.com

ゾーンファイルに以下のようなMXレコードを追加します。

example.com.    IN    MX    10 mail1.example.com.
example.com.    IN    MX    20 mail2.example.com.

MXレコード以外にもAレコードなどを登録する必要があります。完全なゾーンファイルは以下のようになります。

$TTL 86400
@    IN    SOA    ns1.example.com. admin.example.com. (
            2024010101    ; Serial
            3600          ; Refresh
            1800          ; Retry
            1209600       ; Expire
            86400 )       ; Minimum TTL

@    IN    NS    ns1.example.com.
@    IN    NS    ns2.example.com.

@    IN    A     192.0.2.1
mail1 IN    A     192.0.2.2
mail2 IN    A     192.0.2.3

@    IN    MX    10 mail1.example.com.
@    IN    MX    20 mail2.example.com.

BINDの再起動

ゾーンファイルを編集した後は、BINDを再起動して設定を反映させる必要があります。

service bind9 restart

これで設定は完了です!

MXレコードの確認方法

MXレコードが正しく設定されたかを確認するには、いくつかの方法があります。以下に代表的な確認方法を紹介します。

digコマンドを使用

Linuxではdigコマンドを使ってMXレコードを簡単に確認できます。以下のコマンドを実行して、設定したドメインのMXレコードをチェックします。

dig example.com MX

結果として、設定したMXレコードが表示されるはずです。

;; ANSWER SECTION:
example.com.    3600    IN    MX    10 mail1.example.com.
example.com.    3600    IN    MX    20 mail2.example.com.

nslookupコマンドを使用

nslookupコマンドもMXレコードの確認に使えます。以下のように実行します。

nslookup -query=MX example.com
もしくは
nslookup -type=MX example.com

このようにMXレコードの確認を行います。

まとめ

BINDを使ってLinux環境でMXレコードを設定する方法について、初心者向けに解説しました。

MXレコードはメールの送受信において不可欠な要素であり、正しく設定することでメールが適切に配送されます。

今回の記事を参考にMXレコードの設定をしてみてください!

ここまでお読みいただきありがとうございました。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。
RELATED POST