小さな事業のIT手帖

技術メモ担当者・業者向けの記事です。社長向けの入口は トップの困りごと です。

トラブル対応

ネームサーバーを変えたらメールが届かない。いま見る順番(digで5分)

公開 更新 読了15分

中身の図の縮小版。色が付いているのは: 住所録(DNS・ネームサーバー)、郵便受け(メール)契約の名義とログイン情報ドメインDNSサイトメールアカウントファイルバックアップ電源・機器回線端末ソフトホームページとメール・パソコンの中身の図の、ここの話です住所録(DNS・ネームサーバー)/郵便受け(メール)中身の図で位置を見る →

いまメールが止まっている人向けに、前置きなしで書きます。

サーバ会社や制作会社の案内どおりに「ネームサーバー」(ドメインの設定を預けるDNSの会社)を変えた。その直後からメールが届かなくなったなら、原因はほぼ決まっていて、新しいDNSにMXレコード(このドメインあてのメールをどのサーバへ届けるか、を書いた1行)を写し忘れています。見る順番は4つ。1つ目で原因が分かることがいちばん多く、読み終えるころには直すか戻すかを決められます。

先に良い知らせを1つ。止まっていた間のメールの多くは、まだ失われていません。 手元の検証環境で、わざとMXを写し忘れてネームサーバーを切り替えてみました。メールは相手(送信側)のサーバの待ち行列に「保留」で残り、MXを直したら後から届きました。送り主にすぐエラーが返るのは、MXもAレコードも無いときだけです。だから急ぐのは犯人探しではなく、MXを直すことです。

この記事で出来ること
digでMXの写し忘れを見つけ、直すか戻すかを決められる。届かなかったメールが今どこにあるかが分かる
前提
ドメイン登録先か新しいDNSの管理画面に入れること(入れなければ、記事末の文面で業者に頼む)。digかnslookupが打てるPC
所要時間
確認5分、MXの追加10分。反映待ちは数分〜最長2日
目次(10)
  1. 先に:新側にMXを足す。値が分からなければ戻す
  2. 1. 新しいネームサーバーにMXがあるか
  3. 2. TTLがまだ残っていないか
  4. 3. 旧サーバ側に残した設定
  5. 4. 受信はできるが、送ったメールが届かない・迷惑メールに入る
  6. 5. 確認表
  7. うまくいかなかったときの戻し方
  8. 業者に送る文面
  9. 次に同じことを起こさないために
  10. 出典(取得日: 2026-09-20)

先に:新側にMXを足す。値が分からなければ戻す

新しいDNSの管理画面に入れて、入れるべきMXの値が分かっているなら、新側にMXを足すのがいちばん早い復旧です。 下の1へ進んでください。

値が分からない、レコードが多くて写し切れない、というときは、ドメイン登録先の管理画面でネームサーバーの指定を元に戻します(旧側のDNSにレコードが残っている場合)。止めたまま調べると、1時間ごとに届かないメールが増えるからです。戻しても効くまでに最長2日かかるので、私は戻したうえで、新側にも分かる範囲のMXを入れておきます。どちらに聞かれても届く状態にするのが止血です。手順は記事末の「うまくいかなかったときの戻し方」にあります。

戻せないのは、旧側のDNSをもう消した、旧事業者を解約した、の場合です。そのときは下の1で新側にMXを足します。

管理画面に自分で入れない、コマンドは打てない、という人は、調べる前に記事末の「業者に送る文面」をいま送ってください。 下の確認は、返事を待つ間にやれば足ります。

1. 新しいネームサーバーにMXがあるか

ネームサーバーを変えると、DNSの答えは新しい事業者のDNSに登録した内容だけになります。旧側のレコードは引き継がれません。

よくあるのは、サーバ会社の「ネームサーバーをこちらに変えてください」という案内どおりに進めた形です。Web用のレコードは自動で入りますが、よそのメールサービス向けのMXは入りません。サイトは表示されるので、誰も気づかないまま半日たちます。

dig +short example.com NS
dig @ns1.example.net example.com MX +noall +answer

新しいDNSにMXが入っているかを確かめる2行です。見るだけで、何も変わりません。1行目で、いまのネームサーバーの名前が返ります。2行目の ns1.example.net をその名前に置き換え、新しいネームサーバーに直接聞きます。途中のサーバが覚えている古い答え(キャッシュ)の影響を受けないので、これがいちばん確かです。Windowsなら nslookup -type=MX example.com ns1.example.net です。コマンドを打てないなら、新しいDNSの管理画面のレコード一覧に、種類が「MX」の行があるかを目で見ます。同じことが分かります。

example.com.   3600   IN   MX   10 mail.example.com.

左から、名前、TTL(秒)、クラス、種類、優先度、メールサーバーの名前です(値は例です。example.com 自体を実際に引くと、メールを受け取らないことを示す 0 . が返ります)。優先度は小さいほうが先に使われます(RFC 5321 5.1節)。

旧ネームサーバーに直接聞くと ANSWER: 1 でMXが返り、新ネームサーバーは status: NOERROR のまま ANSWER: 0 になっている dig の出力
旧NSと新NSに dig @サーバ で直接聞いた結果。写し忘れはエラーではなく「NOERROR・ANSWER: 0」で返る(検証環境・撮影 2026-09-20)

検証環境で、旧側と新側のネームサーバーに同じ質問をした結果です。見るのは status と ANSWER の数。写し忘れはエラーにならず、「NOERROR・ANSWER: 0」で返ります。+short や +noall +answer で何も表示されないのは、digの故障ではなくこれです。

結果読み方すること
MXが1行も返らない写し忘れ。これが本命メールサービスが指定するMXを登録する。SPF・DKIM・DMARCのTXTも同じく消えているので一緒に入れる
MXが旧メールサーバーを指している旧側の値を写した。メールも乗り換えたのなら誤り新しいメールサービスの指定値に直す
MXの先の名前のA / AAAAが引けないメールサーバー名の登録漏れdig +short mail.example.com A で確かめ、登録する
正しいMXが返るDNSは正しい2へ

MXが1行も無いとき、送信側はドメイン名そのもののA / AAAAレコードの宛先へ届けようとします(RFC 5321 5.1節)。つまりメールがWebサーバへ向かいます。

Webサーバがメールの受け口(25番ポート)を閉じていれば、相手のメールサーバは配送を保留にして、数日間、再送を続けます。その間、送り主には何も返りません。 「エラーが返ってこないから届いているはず」と取引先が思い込むので、発覚が遅れます。裏を返せば、この間にMXを直せば、保留されていたメールは後から届きます。

検証環境で再現しました。MXが無くAレコードだけが返る状態で、外の送信サーバ(Postfix)から1通送っています。見るのはログの Connection refused と status=deferred(保留)です。

MXが空でAレコードだけが返る dig の出力と、Postfixのログ「connect to example.jp[192.0.2.80]:25: Connection refused」「status=deferred」、mailqに1通残っている様子
MXが無いと、送信サーバはドメイン名のAレコードの先(Webサーバ)の25番へ行く。拒否されるとメールは送信側のキューに残り、送り主にはすぐには何も返らない(Postfixの既定は5日。検証環境・撮影 2026-09-20)
lab$ grep -E "status=|connect to" /var/log/mail.log | tail -4
(中略)
Sep 20 11:08:24 client postfix/smtp[364]: connect to example.jp[192.0.2.80]:25: Connection refused
Sep 20 11:08:24 client postfix/smtp[364]: 194C540AE6: to=<info@example.jp>, relay=none, delay=0.01, delays=0/0/0/0, dsn=4.4.1, status=deferred (connect to example.jp[192.0.2.80]:25: Connection refused)

lab$ postconf maximal_queue_lifetime bounce_queue_lifetime
maximal_queue_lifetime = 5d
bounce_queue_lifetime = 5d

最後の2行が、このサーバが保留を続ける日数です(Postfixの既定値。過ぎると初めて送り主に不達通知が返ります)。Gmail や Microsoft 365 など、相手のサービスごとの日数は私は確かめていません。「数日」と見てください。

送り主へ即座に不達通知が返るのは、MXも、ドメイン名のA / AAAAも無いときだけです。通知の文面はこうなります。取引先から転送してもらったエラーに Host or domain name not found とあれば、原因は相手ではなくこちらのDNSです。

MXもAも空の dig の出力、Postfixのログ status=bounced、送り主に返った不達通知の英文「Host or domain name not found」
MXもAも無い場合は、送り主に不達通知が即座に返る。通知の本文はこの形(検証環境・撮影 2026-09-20)

残る1つは、Webサーバがメールを受けてしまう設定の場合です。エラーにも保留にもならず、誰も見ていない場所に溜まります。新しいサーバの管理画面に、作った覚えのないメールボックスや「キャッチオール」の設定が無いかを見ます。

MXの値にCNAMEの別名を書いてはいけません(RFC 2181 10.3節)。管理画面が受け付けても、AまたはAAAAを持つ名前に直します。

2. TTLがまだ残っていないか

MXは正しいのに一部の相手からだけ届かない、なら、古い答えを覚えているリゾルバ(相手の会社やプロバイダが使っている、DNSの答えを覚えておくサーバ)が残っています。TTLは、その答えを覚えていてよい秒数です(RFC 1035)。

検証環境で、ネームサーバーを切り替えた後のキャッシュDNSに15秒おきに聞きました。2列目の数字がTTLの残り秒です。0になるまで旧い答えが返り、切れた瞬間にNSが新側に変わって、MXの行が消えています。「切り替えた直後は届いていたのに、しばらくして止まった」の正体がこれです。

digを15秒おきに実行した出力。TTLが111秒から4秒まで減る間は旧いネームサーバーとMXが返り、切れた後は新しいネームサーバーだけが返ってMXの行が消える
ネームサーバー切替後、キャッシュDNSに15秒おきに dig した結果。TTLが切れるまでは旧い答えが返り、切れた瞬間にMXが消える(検証環境で再現・撮影 2026-09-20)
lab$ date "+%H:%M:%S"; dig +noall +answer example.jp NS; dig +noall +answer example.jp MX
11:05:36
example.jp.     111 IN  NS  ns1.old-dns.example.
example.jp.     111 IN  MX  10 mail.example.jp.
(中略)
11:07:23
example.jp.     4   IN  NS  ns1.old-dns.example.
example.jp.     4   IN  MX  10 mail.example.jp.

lab$ date "+%H:%M:%S"; dig +noall +answer example.jp NS; dig +noall +answer example.jp MX
11:07:38
example.jp.     120 IN  NS  ns1.new-dns.example.

自分のドメインでは、次の2行を何度か打ちます。

dig +noall +answer example.com NS
dig +noall +answer example.com MX
  • 2列目の数字が、問い合わせたリゾルバが覚えている残り秒数です。繰り返すと減っていきます
  • 公開リゾルバを指定すると、外からの見え方を比べられます。dig @192.0.2.53 example.com MX(192.0.2.53 は例。確かめたい公開DNSのアドレスに置き換えます)。会社の回線とスマホの回線で答えが違えば、まだ切り替わりの途中です
  • NSの指定は上位(.com や .jp)のDNSにも登録されていて、そちらのTTLは自分では変えられません。1〜2日かかることがあります

この間のメールは消えていません。旧サーバのメールボックスに入っています。 旧側のWebメールを開いてください。「届かない」と思っていたメールが、そこに並んでいることがよくあります。だから、旧側のメールボックスは絶対に先に消しません。

ここで待つ以外にできることはありません。私は、メールソフトに新旧両方のアカウントを入れて、どちらに届いても読めるようにして待ちます。

MXを足したのに、digでまだ見えないとき

慌てて設定を書き換えないでください。「無い」という答えも、一定時間キャッシュされます(ネガティブキャッシュ。RFC 2308 5節)。覚えている時間は、SOAレコードの最後の数字(minimum)とSOA自身のTTLの小さいほうです。事業者の設定次第で、数分のことも1時間のこともあります。

検証環境でも、新側にMXを足した直後は、MXの代わりにSOAの行が返りました(2列目の 6 が「無い」を覚えている残り秒)。

新ネームサーバーにはMXがあるのに、キャッシュDNSはSOAだけを返している dig の出力。13秒後にMXが返り、溜まっていたメールが status=sent になったログ
MXを足した直後は、キャッシュDNSが「無い」という答えを覚えている(SOAの行の2列目が残り秒)。切れるとMXが見え、溜まっていたメールが新サーバへ届く(検証環境・撮影 2026-09-20)
lab$ date "+%H:%M:%S"; dig +noall +answer +authority example.jp MX
11:08:32
example.jp.     6   IN  SOA ns1.new-dns.example. hostmaster.lab.example. 2026092101 3600 600 86400 60

lab$ date "+%H:%M:%S"; dig +noall +answer +authority example.jp MX
11:08:45
example.jp.     120 IN  MX  10 mail.example.jp.

1の dig @新NS で新側に直接聞いてMXが入っていれば、設定は済んでいます。あとは待つだけです。検証では観察のために再送を手で促しました(postqueue -f)が、実際の相手のサーバは自分の間隔で再送してきます。急ぎの相手には、電話で再送を頼むのが確実です。

3. 旧サーバ側に残した設定

「ほとんどの相手からは届くのに、自社サイトのフォームの通知だけ届かない」なら、ここです。

場面起きることすること
旧サーバにドメインとメールアドレスの設定が残っている旧サーバ上のフォームやプログラムが自分あてに送ったメールが、外へ出ずに旧メールボックスに入る旧側のメールボックスを確認。並行期間が終わったら旧側のドメイン設定を外す
旧側に転送設定が残っている旧側に届いた分が、意図しないアドレスへ転送され続ける転送先を確認して止める
MXが無い間に送られ、相手のサーバで保留になっている(1節)数日は相手のサーバが再送を続ける。送り主には何も返っていないMXを直せば自動で届く。急ぐ相手には再送を頼む
旧側のメールボックスを先に消した並行期間中に旧側へ届いた分は「宛先不明」で送り主に返っている。再送はされない心当たりの相手に再送を頼む

サーバが自分のドメインあてのメールを外へ出さず、内部で配達してしまう動きは、レンタルサーバーで珍しくありません。どう扱われるかは事業者ごとに違うので、公式ヘルプで確かめます。旧側の設定を外す前には、旧メールボックスの中身を保存します。

→ メールを乗り換えたら過去のメールが消えた、を防ぐ。解約前にやること

4. 受信はできるが、送ったメールが届かない・迷惑メールに入る

こちらはMXではなく、TXTの写し忘れです。

dig +short example.com TXT
dig +short TXT _dmarc.example.com
"v=spf1 include:_spf.example.net ~all"
確認点根拠
v=spf1 で始まる行が1つだけある。2つあると結果は permerrorRFC 7208 4.5節
新しいメールサービスが指定する include が入っている各サービスの公式ヘルプ

DKIMの公開鍵(セレクタ._domainkey)とDMARC(_dmarc)も、ネームサーバーを変えると消えます。DMARCを reject にしていたドメインでSPFとDKIMのTXTだけ写し忘れると、自分が送るメールが全部拒否されます。 旧側で厳しく設定していた人ほど、ここを先に見てください。

→ SPF・DKIM・DMARCの3行の入れ方 / SPFが2行あるときの直し方

最後に、外部のアドレスとの間で送受信のテストをし、受信したメールのヘッダーで SPF / DKIM が pass になっているかを見ます。

5. 確認表

#確認することコマンド・方法済
1新ネームサーバーが正しいMXを返すdig @新NS example.com MX□
2MXの先の名前にA / AAAAがあるdig +short mail.example.com A□
3外から見たNSが新しい側になっているdig +short example.com NS を2つの回線で□
4旧サーバのメールボックスに新着がないか見た旧側のWebメール□
5旧サーバ側に残っているドメイン設定・転送を把握した旧側の管理画面□
6SPFが1行で、新しい送信元を含むdig +short example.com TXT□
7DKIM・DMARCのTXTが引けるdig +short TXT _dmarc.example.com など□
8送受信テストで pass受信メールのヘッダー□

うまくいかなかったときの戻し方

MXを足しても半日たって届かない、どの値を入れるべきか確信が持てない、なら戻します。順番はこうです。

  1. 新側のDNSは消さない。 入れたMXもそのまま残します。すでに新側を覚えたリゾルバが聞きに来るからです
  2. 旧側のDNSにレコードが残っているかを確かめる。dig @旧NS example.com MX(旧NSの名前は旧事業者の管理画面か、契約時の案内にあります)。返らなければ、戻しても直りません。1節に戻って新側を直します
  3. ドメイン登録先の管理画面で、ネームサーバーの指定を旧側の名前に戻す
  4. dig +short example.com NS を会社の回線とスマホの回線で打ち、旧側に戻っていくのを見る

戻しても即座には効きません。 上位(.com や .jp)のDNSが配るNSのTTLが長く(.com は172,800秒=2日)、新側を覚えたリゾルバはそれが切れるまで新側に聞き続けます。だから1が要ります。戻した後の2日間は、新旧どちらに聞かれてもMXが返る状態を保ってください。

戻した直後に「やはり新側で」ともう一度切り替えるのは勧めません。 リゾルバごとに覚えている答えがばらばらになり、どこで何が起きているかを追えなくなります。戻したら、2日は動かしません。

業者に送る文面

DNSの管理画面に自分で入れない(制作会社やサーバ会社が持っている)場合は、次の文面を送ります。責める文は入れません。相手が5分で動けるよう、見た事実と頼むことだけを書きます。【】を置き換えてください。dig の結果を書く2行は、打てなければ消して送って構いません。

件名: 【至急】example.com のメールが届かない件(MXレコードの追加のお願い)

【会社名】【担当者名】様

お世話になっております。【自社名】の【氏名】です。
【日付】のネームサーバー変更の後から、example.com あてのメールが届いていません。
こちらで確認した結果は次のとおりです。

・現在のネームサーバー: 【dig +short example.com NS の結果】
・上記のネームサーバーに直接問い合わせると、MXレコードが返りません
  (dig @【新NS】 example.com MX → ANSWER: 0)
・メールは【利用中のメールサービス名】で受けています

お願いしたいこと
1. 新しいDNSに、次のMXレコードを追加してください
   【メールサービスが指定するMXの値。不明なら「変更前のDNSにあったMXと同じ値」】
2. あわせて、変更前にあったTXTレコード(SPF・DKIM・DMARC)も写してください
3. 変更前のDNSの全レコードの一覧(ゾーンの内容)をお送りください
4. 対応が本日中に難しい場合は、ネームサーバーの指定を変更前に戻してください。
   その際、新しいDNS側のレコードは消さずに残してください

対応の時刻が分かりましたら、ご一報ください。こちらで受信を確認します。

3を頼むのは、MX以外にも写し忘れがあるかを自分の目で確かめるためです。前任者に聞く場合は、1〜2の代わりに「メールはどのサービスで受けていたか」「DNSの管理画面はどこの会社のものか」の2点だけを聞きます。

次に同じことを起こさないために

復旧したら、私なら次の2つを決めます。1つは、次からはネームサーバーごと変えず、いまのDNSのままレコードだけ書き換えること。写し忘れという事故の種類そのものが無くなります。もう1つは、DNSをサーバ会社のおまけではなく、DNSだけを預かるサービスか、ドメイン登録先のDNSに置くこと。サーバを替えるたびにDNSが巻き込まれる構造をやめられます。

切り替え全体の順番(TTLを前日までに下げる、旧サーバを2週間残す)は次の記事にあります。

→ サーバを乗り換えたらメールが止まった、を防ぐ。引っ越しはこの順番で動かす

出典(取得日: 2026-09-20)

この記事は特定の製品の使用レビューではありません。公式仕様と公的情報をもとに整理しています。 ・仕様の取得日

次にやること