久々の備忘録。
DNSのMXレコードは複数行書く事が出来る。
その時、メールサーバーの優先順に"優先度(preference)"の値を0〜65535の範囲で設定する。
優先度は優先順位が高い方が数値が小さく、優先順位が低くなるほど数値が大きくなる。
上記のように多くのWebサイトで優先度を10,20,30…って例をあげてるけど、別に"10から初めて10飛びにしろ"というルールなんて無いので0,1,2…でも、3,6,9…でも、何でも良い。
とにかく、0〜65535の範囲内で、高優先のメールサーバーを小さな数値、低優先のメールサーバーを上位より大きな数値、というルールで記述しておけばいい。
この辺はググればすぐ出てくる。
で、ここからが今回の備忘録のキモ。
複数行書いたときの挙動なんだけど、これから書く事を解説してくれてるWebサイトが殆ど無くて(自分は見つけられなかった)、贔屓にしてるベンダーのSEに教えてもらって初めて知った。
まぁ、プロは知ってて当然なんだろうけど。
最初(優先度最高)のメールサーバーで(アカウント不明とか)何らかの理由で配信不能通知が送信側に戻って来たら、次の優先度のメールサーバーへ再送信される…ような動作はしない。
最初(優先度最高)のメールサーバーでエラーとなった時点で、メール送信は終了。
次の優先度のメールサーバーへ再送信されるのは、上位のメールサーバーが障害とかで「返事が無い。ただの屍のようだ」状態だった時だけ。
つまり、MXレコードの優先順位で受け取るメールサーバーの使い分けを制御しようとするのは間違い。
(例1)のようにMXレコードを設定していて、(例2)のようにメールアドレスが作られているとき、"hanako@hogehoge.com"宛にメールを送ったら、mx1.hogehoge.comが先に受け取って、mx1内にhanakoが居ないと通知を受けた送信側は、MXレコードで次の優先度となっているmx2.hogehoge.comに再送する。
mx2にはhanakoが居るので、mx2.hogehoge.comが無事受信する…という挙動はしない。
実際は、"hanako@hogehoge.com"宛にメールを送ったら、mx1.hogehoge.comが先に受け取って、"そんな奴は知らん。"と送信側に通知。メール送信者はエラーメールを受け取って終了。
メールサーバーを並行運用したいときは、高優先度のメールサーバーで一度受信して、別のメールサーバーへ転送する。
…という事をするそうだ。
自分はこれを勘違いしていた。
DNSに詳しい知り合いも居ないから誰にも相談できず、ネット調べまくってもこれを解説してくれてる人も居ない。
何度もMXレコードを書き換えてテストメールを送ってはエラーメールをもらう。
を繰り返して数週間悩んでた。
○○社の××さん、契約の業務外なのに教えてくれて、ありがとう!!

