サーバーやドメインを操作しているときに「MXレコード」という名前を見かけることがあるかもしれません。
MXレコードはメールの送信に関するもので、指定したドメイン宛てに送られたメールが、どのサーバーに届くべきかをインターネットに伝える役割を担っています。
ここでは、そもそもレコードとは何かや、MXレコードとは何か、メールが送信されるまでの流れを詳しく解説しています。
レコードとは何か?
MXレコードの「レコード」とは、ドメイン名と紐づけるための情報が書かれたデータの集まりです。
WEB上の電話帳(もしくはアドレス帳)のデータのことです。
レコードの役割
レコードの主な役割は、ドメイン名(例:example.com)を、サーバーのIPアドレスやメールの宛先などの、コンピューターが理解できる情報に変換することです。
WEB上でURLを入力したり、メールを送るときに、これらのレコードが参照されます。
もう少し詳しく言うと、DNS(ドメインネームシステム)がリクエストに応じて、正しいサーバーに接続するために参照するのがレコードです。
代表的なレコード
DNSが参照する代表的なレコードには以下のようなものがあります。
- Aレコード
ドメイン名とIPv4アドレスを紐づける最も一般的なレコードです。example.comというドメインが192.0.2.1というIPアドレスのサーバーを指す、といった情報を保持します。 - AAAAレコード
IPv6アドレスを紐づけるAレコードの派生版です。 - MXレコード
ドメイン宛てのメールが送られるメールサーバーの情報を指定します。 - CNAMEレコード
あるドメイン名(例:blog.example.com)を、別のドメイン名(例:example.blogspot.com)に紐づけます。これにより、元のドメインの変更に影響を受けずに、特定のサービスへ接続させることができます。 - TXTレコード
任意のテキスト情報を格納できる汎用的なレコードです。
ドメインの所有者を確認したり、迷惑メール対策のために利用されたりします。
最近では、なりすまし対策として、SPF/DKIM/DMARCの記述を行うことが多いです。
これらのレコード(情報)があるおかげで、ドメインをインターネット上のさまざまなサービスに正しく接続することができます。
MXレコードとは何か?
MXレコードは、メールの届け先を記述したもので、「このドメイン宛てのメールはどのメールサーバに持っていけばいいか」を示したものです。DNSレコードの中に記述しておきます。
GmailやOutlookなどの送信サーバなどの送信側は、送信先のドメインのMXレコードを見て、配達先のメールサーバを決めます。
MXレコードの「MX」とは「Mail eXchanger」の略で、「メール交換器」という意味です。
メール送信の主な流れ
MXレコード参照までの流れ
例えば、あなたがGmailを使って「info@example.com」宛にメールを送るとします。
まず、送信側のメールサーバー(=Gmail)は、まず「example.comのメールはどこに送ればいいの?」とインターネットに尋ねます。
このとき、インターネットが参照するのがMXレコードです。
メールサーバーと優先度を確認する
MXレコードは、以下の2つの情報をセットで持っています。
- 優先度(Priority)
複数の届け先がある場合に、どのサーバーを優先して試すべきかを示します。
数字が小さいほど優先度が高い(最初に試される)ことを意味します。 - ホスト名(Host)
メールサーバーの正確なアドレス(例:mail.example.com)を示します。
たとえば、example.comのMXレコードが以下のように設定されているとします。
ドメイン名(ホスト名) TTL MXレコード 優先度 メールサーバーホスト名
example.com. 3600 IN MX 10 mail.example.com
example.com. 3600 IN MX 20 backup.example.comこの場合、メールを送信するサーバーは、まず優先度10の「mail.example.com」にメールを届けようとします。
もしこのサーバーがダウンしているなどしてメールを届けられなかった場合、次に優先度20の「backup.example.com」に再送を試みます。
なお、TTLが3600秒(=1時間)なので、送信側のサーバーは一度問い合わせた情報を1時間保持します。(その間は再度DNSに問い合わせをしません)
- 送信側サーバが宛先(info@example.com)のドメイン部分を取り出す(example.com)。
- DNSに「example.com の MXレコード を教えて」と問い合わせる。
- MXレコードの結果から最も優先度が小さい送信先メールサーバーのホスト名(mail.example.com)を選ぶ。※同じ優先度が複数ならランダムに選ぶ(分散)
- 選んだホスト名のAレコード、またはAAAAレコード(=IPアドレス)をさらにDNSに問い合わせる。
- IPアドレスにSMTPで接続し、メールを送る。
レンタルサーバーの場合
一般的には、受信するメールサーバーがXserverなどのレンタルサーバーであることが多いかと思います。
その場合、「IN MX」は多くのDNS設定画面で自動的に入力されるため、手動で記述する必要はありません。
例えば、Xserverであれば以下のような記述(入力内容)になります。
ドメイン名(ホスト名) TTL 優先度 メールサーバーホスト名
example.com 3600 10 sv***.xserver.jp
example.com 3600 20 sv***.xserver.jp「IN MX」はDNSのレコードタイプを示す記述です。INはインターネット、MXはメールエクスチェンジャーを意味します。つまり「MXレコード」であることを示しています。
レンタルサーバーでDNSを設定する場合、種別などで「MX」を選択すれば自動的に記述されます。

優先度について
優先度の数字は小さいほど優先されます。例えば、10→20→30…の順で試されます。
優先度の数値に存在しているルールは「小さい数字が優先」のみです。このため、2、5、120、9999のような記述でもでも問題ありません。
後からの修正にも対応できるように、10刻みが慣例となっています。
同じ優先度(例:両方10)にすると、送信側のメールサーバーが送信先のメールサーバーをランダムに選ぶため、負荷分散のように働きます。
ただし、厳密にどちらを選択するかは送信側任せです。
TTLとは何か?
TTLは「キャッシュ時間(秒)」です。
DNSへの問い合わせ時間短縮のために、一度参照したDNSレコードの情報を保持(キャッシュ)しておく一時的な保存時間を秒で指定しています。
TTLが短いのと長いのでそれぞれにメリデメがあります。状況に合わせて使い分けるのが大切です。
TTLが長すぎるとどうなる
TTLが86400秒(=1日)のように長い場合
DNSサーバーへの問い合わせが減り、サーバーの負荷が軽減されます。
ウェブサイトの表示が速くなることがあります。
ドメイン情報(IPアドレスなど)を変更した際の反映が遅くなります。
古い情報が長く残ってしまうリスクが発生します。
TTLが短かすぎるとどうなる
TTLが300(=5分)のように短い場合
ドメイン情報の変更が早く反映されます。
サーバーの移行や障害対応がスムーズになります。
DNSサーバーへの問い合わせが増え、サーバーの負荷が高くなります。
DNSキャッシュが頻繁に更新されるため、通信速度が若干遅くなることがあります。
最適なTTLは?
一般的よく使うTTLは「3600(=1時間)」です。ただし切り替え作業をするときは「300(=5分)」です。
・通常時:3600(1時間)〜14400(4時間)程度
・切替直前:300に下げておく。
サブドメインは全く別物
メールアドレス「info@example.com」と「info@sub.example.com」は全くの別物になります。
このためサブドメでメールアカウントを作成した場合は、サブドメのMXレコードも登録しておく必要があります。
ドメイン名(ホスト名) TTL 優先度 (省略)メールサーバーホスト名
example.com 3600 10 sv***.xserver.jp.
sub.example.com 3600 10 sv***.xserver.jp.
MXレコードがないとメールが届かないので、必ずMXレコードの記述が必要です。(一部の仕様では自動的にAレコードを参照する場合もあります)
MXレコード設定時の注意点!
MXレコードを設定するときは以下の点に注意が必要です。
宛先にCNAMEの指定はNG
CNAMEレコードを使うと、あるドメイン名(例:blog.example.com)を、別のドメイン名(例:example.com)に紐づけることができます。
エイリアス名. インターネット CNAMEレコード 正規名.
blog.example.com. IN CNAME example.com.上記のように設定すると「blog.example.com」へのアクセスは自動的に「example.com」に転送されます。
ですが、MXレコードの送信先のメールサーバーでCNAMEで指定したエイリアス名を指定することはできません(メールが届きません)
ドメイン名(ホスト名) TTL 優先度 メールサーバーホスト名
✕ blog.example.com 3600 10 sv***.xserver.jp.
〇 example.com 3600 10 sv***.xserver.jp.宛先にIPアドレスの指定はNG
メール送信では、DNSにMXレコードを訪ねたのち、AレコードやAAAAレコードでIPアドレスを参照します。
だからといって、最初からMXレコードで送信先のメールサーバーにIPアドレスを指定することはNGです。ドメイン名で記述する必要があります。
MXレコードはメールの「受信」のみ
MXレコードが関係するのは、主にメールの受信です。メール送信機能とは関係ありません。
あるドメイン宛てにメールを送信する際、送信側のメールサーバーがそのドメインのMXレコードを参照し、どのサーバーにメールを届ければよいか(=受信元の特定)を知るために使用されます。
メール送信に関係するレコードは?
メールの送信に関係するのは、主に以下のDNSレコードです。
- Aレコード(またはAAAAレコード)
送信元のメールサーバーのIPアドレスを特定するために使用されます。 - SPFレコード(Sender Policy Framework)
そのドメインからメールを送信することを許可されているサーバーを定義するものです。なりすましメールの防止に役立ちます。 - DKIM(DomainKeys Identified Mail)
メールが送信中に改ざんされていないこと、および送信元が正当であることを証明するデジタル署名です。DNSのTXTレコードに公開鍵が記録されます。 - DMARC(Domain-based Message Authentication, Reporting, and Conformance)
SPFとDKIMの認証結果に基づき、受信者がそのメールをどのように扱うべきかを指示するポリシーを定義します。これもDNSのTXTレコードに記録されます。
まとめると、メールの受信にはMXレコード、メールの送信には主にAレコード、SPF、DKIM、DMARCが関係します。
MXレコードを調べる方法(nslookpとdig)
自分のPCがインターネットにつながっていれば「nslookup」コマンドや「dig」コマンドを使って、MXレコードを簡単に調べることができます。
どちらも、DNS情報を調べるためのコマンドです。
nslookupで調べる方法
nslookupで調べる場合は以下のようにコマンドを実行します。
>nslookup -type=mx ドメイン名例えば、google.comであれば、MXレコードのメール送信先サーバーは「smtp.google.com」です。
>nslookup -type=mx google.com
サーバー: UnKnown
Address: xxxx:1a8:yyyy:b::3
権限のない回答:
google.com MX preference = 10, mail exchanger = smtp.google.comdigで調べる方法
digで調べる場合は以下のようにコマンドを実行します。
>dig mx ドメイン名 +shortメールサーバー移管に際してのポイント
メールサーバーを移管する場合、MXレコードの設定は必須です。
MXレコードの設定はサーバーではなく、ドメインのDNS設定で行います。このため、ドメインには新旧両方のMXレコードを記載します。
例えば、現在使用しているメールサーバーが「mail.oldserver.jp」、移行先のメールサーバーが「mail.newserver.jp」だとします。
ドメイン名(ホスト名) TTL 優先度 メールサーバーホスト名
example.com 300 10 mail.newserver.jp
example.com 300 20 mail.oldserver.jp優先度の高い(数字が小さい)方に、新しいメールサーバーを指定します。こうすることで、新しいメールサーバーへの送信を試みて、ダメであれば旧サーバーに送る処理をします。
TTLは300(=5分)にしておくことで、再編集をした際に変更内容がすぐに反映されやすくなります。
数日間(1〜2日)テストして、NS新しいメールサーバーでメールの受信が継続して確認できたら、古いメールサーバーのMXレコードを削除して、TTLを通常の3600(=1時間)に戻します。
ドメイン名(ホスト名) TTL 優先度 メールサーバーホスト名
example.com 3600 10 mail.newserver.jpMXレコードの変更前に以下の処理を完了させておく必要があります。
新サーバ側の受信準備
- アカウントを作る
- 旧サーバで
user1@example.jp,info@example.jpを使っているなら、新サーバ側にも同じアカウント/転送設定を作成。 - これを忘れると、新MXに切り替えた瞬間「宛先不明」で跳ね返ります。
- 旧サーバで
- ドメイン受け入れ設定
- 新サーバに「
example.jp宛のメールを受け入れる」設定を入れる。 - Postfix/Exchange/クラウドメールなど必ず受け入れドメインを明示します。
- 新サーバに「
- TLS証明書の確認
- 新サーバのホスト名
mail.newserver.jpに対して、SMTP STARTTLSで提示される証明書のCN/SANにmail.newserver.jpが含まれているか確認。 - これが合わないと一部の送信元サーバから拒否されたり、警告メールが返ってきます。
- 新サーバのホスト名


