【徹底解説】MXレコードとは何かを超わかりやすく解説?初心者向け

mail メール-prograshi(プロぐらし)-kv Server
記事内に広告が含まれていることがあります。

サーバーやドメインを操作しているときに「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レコードを見て、配達先のメールサーバを決めます。

MEMO

MXレコードの「MX」とは「Mail eXchanger」の略で、「メール交換器」という意味です。


メール送信の主な流れ

MXレコード参照までの流れ

例えば、あなたがGmailを使って「info@example.com」宛にメールを送るとします。

まず、送信側のメールサーバー(=Gmail)は、まず「example.comのメールはどこに送ればいいの?」とインターネットに尋ねます。

このとき、インターネットが参照するのがMXレコードです。


メールサーバーと優先度を確認する

MXレコードは、以下の2つの情報をセットで持っています。

MXレコードに記載されている主な情報
  1. 優先度(Priority)
    複数の届け先がある場合に、どのサーバーを優先して試すべきかを示します。
    数字が小さいほど優先度が高い(最初に試される)ことを意味します。
  2. ホスト名(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に問い合わせをしません)


メール送信までの具体的な流れ
  1. 送信側サーバが宛先(info@example.com)のドメイン部分を取り出す(example.com)。
  2. DNSに「example.com の MXレコード を教えて」と問い合わせる。
  3. MXレコードの結果から最も優先度が小さい送信先メールサーバーのホスト名(mail.example.com)を選ぶ。※同じ優先度が複数ならランダムに選ぶ(分散)
  4. 選んだホスト名のAレコード、またはAAAAレコード(=IPアドレス)をさらにDNSに問い合わせる。
  5. IPアドレスにSMTPで接続し、メールを送る


レンタルサーバーの場合

一般的には、受信するメールサーバーがXserverなどのレンタルサーバーであることが多いかと思います。

その場合、「IN MX」は多くのDNS設定画面で自動的に入力されるため、手動で記述する必要はありません

例えば、Xserverであれば以下のような記述(入力内容)になります。

ドメイン名(ホスト名) TTL   優先度     メールサーバーホスト名
example.com     3600  10         sv***.xserver.jp
example.com         3600  20         sv***.xserver.jp
IN MAXとは?

「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分)」です。

最適なTTL

通常時: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.com


digで調べる方法

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.jp


注意点

MXレコードの変更前に以下の処理を完了させておく必要があります。

新サーバ側の受信準備

  1. アカウントを作る
    • 旧サーバで user1@example.jp, info@example.jp を使っているなら、新サーバ側にも同じアカウント/転送設定を作成
    • これを忘れると、新MXに切り替えた瞬間「宛先不明」で跳ね返ります。
  2. ドメイン受け入れ設定
    • 新サーバに「example.jp宛のメールを受け入れる」設定を入れる。
    • Postfix/Exchange/クラウドメールなど必ず受け入れドメインを明示します。
  3. TLS証明書の確認
    • 新サーバのホスト名 mail.newserver.jp に対して、SMTP STARTTLSで提示される証明書のCN/SANmail.newserver.jp が含まれているか確認。
    • これが合わないと一部の送信元サーバから拒否されたり、警告メールが返ってきます。
タイトルとURLをコピーしました