こんにちは!
InfraAcademyというインフラ学習サイトを運営しております、ryuと申します。
今回の記事では、BINDでMXレコードを登録する方法について解説します。
MXレコードは、メールを正しく受信するためのDNS設定で、これを間違えるとメールのやり取りができなくなることもあります。
本記事では、初心者の方でも理解できるように、BINDを使ってLinux環境でMXレコードを設定する方法を詳しく解説します。
MXレコードとは何か、どのように設定し確認するか、わかりやすく解説します!
目次
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レコードの設定をしてみてください!
ここまでお読みいただきありがとうございました。