- PR -

BINDのMXレコード

投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-05-13 11:25
 お世話になります。okumuraです。
DNSのMXレコードが

test.com. IN MX 10 mx1.test.com.
test.com. IN MX 20 mx2.test.com.

のようになっている場合、mx1.test.com がダウンしていた場合は、
mx2.test.com.に配送されるとに間違いはないでしょうか。

 また、そうであった場合、やはりクライアント側のメーラーは2つの設定を保持しなければ
ならないのでしょうか。

 例えばクライアント側のメーラーを2つ用意しておいて、メーラー1にはmx1.test.comに接続する設定を、メーラー2にはmx2.test.comに接続する設定を施しておいて、「mx1.test.com」が落ちてるよ! と聞いた日はメーラー2で接続するようにする。

 これは非常にめんどくさい運用だと思うのですが、皆様はどのようにされておられますでしょうか。。


[ メッセージ編集済み 編集者: okumura 編集日時 2002-05-14 08:13 ]
Uchikoshi
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 197
投稿日時: 2002-05-13 17:32
引用:

okumuraさんの書き込み (2002-05-13 11:25) より:
 お世話になります。okumuraです。
DNSのMXレコードが
test.com. IN MX 10 mx1.test.com.
test.com. IN MX 20 mx2.test.com.
のようになっている場合、mx1.test.com がダウンしていた場合は、
mx2.test.com.に配送されるとに間違いはないでしょうか。


 mx2もダウンしていなければ、そうだと思います。が、どっちもダウンしていると、後でリトライされますので、どっちになるかはちょっと不明。
引用:

 また、そうであった場合、やはりクライアント側のメーラーは2つの設定を保持しなければ
ならないのでしょうか。


えーと、ふつうのメールクライアントは、いちいち自分で宛先のドメインのMXレコードを引いて、メールを出したりしません。だいたい、相手がダウンしていたら、再送処理とかは誰がやってくれるの? という疑問が…。
引用:

 例えばクライアント側のメーラーを2つ用意しておいて、メーラー1にはmx1.test.comに接続する設定を、メーラー2にはmx2.test.comに接続する設定を施しておいて、「mx1.test.com」が落ちてるよ! と聞いた日はメーラー2で接続するようにする。
 これは非常にめんどくさい運用だと思うのですが、皆様はどのようにされておられますでしょうか。。


ふつうはそんなことしないです。メールの宛先がtest.comだけならそれでもいいでしょうけど、(通常は)test.comのメールサーバは、@test.com宛以外は受け付けませんし。まさかメールの宛先の数だけメールクライアントを用意するつもりとか……。

というわけで、ふつうは、ローカルドメインのメールを担当する専用のメールサーバを用意して、そいつが外部とのメールのやりとりを一切受け持ち、クライアントはそのメールサーバとだけやり取りします。

ちなみに、ふつうは、落ちているメールサーバは自分でいちいち「落ちているよ!」なんて言ってくれることは少ないです。たいてい、単に応答がなくなるだけです。だから、落ちてるのか遅いのか、判断が難しいです。
ちとり
大ベテラン
会議室デビュー日: 2002/05/12
投稿数: 113
お住まい・勤務地: 神奈川県
投稿日時: 2002-05-13 18:49
> test.com. IN MX 10 mx1.test.com.
> test.com. IN MX 20 mx2.test.com.
> のようになっている場合、mx1.test.com がダウンしていた場合
MXレコードを引いてメイルを配送する場合、配送方法を決める値が
[MX {10|20}]になります。
これを例にすると、[*@(*.)test.com]宛のメールは、[mx1][mx2]の
順にソートされ、主に[mx1]の方に配送されることになります。
しかし、[mx1]には送信を試みた場合、コネクション成立に当たって、
ある一定の時間が生じた場合は、[mx2]に送信されます。

主に、MXレコードはインターネット上(不特定ドメイン)の宛先に於いて
メイルリレーに使われたりしますが、特定サーバ間のリレーの場合は
スタティック転送も設定可能ですよ。

[Uchiko]さんが仰るとおり、クライアント側からすれば、通常のメイラーは
MXレコード参照機能は無いので、SMTPサーバを一つに定めてSMTP接続させる
のが望ましいかと・・・。(ロードバランサーなどは考慮せず)

SMTPとDNSは、切り離して考えた方が分かり易いかもしれませんね。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2002-05-14 02:50
どもです。

んと。多分二つの話が混ざっているように思われるので、少し整理してみたいと思います。
test.com. IN MX 10 mx1.test.com.
test.com. IN MX 20 mx2.test.com.
このパターンで考えてみます。

foo.comのサーバから、メールが届くことをまず想定してみます。test.comから考えると受信という動作になるかと思います。
foo.comは、DNSのMXレコードを判断、mx1.test.comにメールを投げようとします。mx1.test.comが生きていれば何の問題もなく、ここで終了。
mx1.test.comが死んでいる場合、DNSのMXレコードにしたがってmx2.test.comにメールを投げようとします。mx2.test.comが生きている場合、投げて終了。mx2も死んでいる場合、一旦メールキューにメールを突っ込んでしまいます。

このケースにおいて、わりと多くのところでは、mx2.test.com.のSMTP(sendmailとかqmailとかPostfixとか)の設定を、以下のような設定にしておきます。
・受信したありとあらゆるメールはmx1.test.com.に転送
こうするとどうなるか。

・mx1.test.com.に転送しようとする
:mx1.test.com.が死んでるのでとりあえずメールキューにとっておく
・上記を数回繰り返す
・mx1.test.com.に転送しようとする
:mx1.test.com.が生き返ったので、無事転送。

つまり、この方法をとることで、クライアントの「POPサーバ」の設定を複数持つ必要はなくなります。ただし、mx1.test.com.が生き返るまではメールの受信は出来ませんが。
このパターンの運用で、よほどの事がなければわりとどーにかなります。

次。
test.comのサーバからメールを送ることを想定してみます。送信ですね。
mx1.test.com. が落ちていれば、メールは送れません。基本的にはユーザに「復旧を待て」と一言片付けて終わりです。
無論、急ぎの場合は「んじゃぁSMTPサーバをmx2.test.com. に一時的に変えて送ってくれ」とかいう話になります。
その他に、
mail CNAME mx1.test.com.
という設定が「きっとなされているであろう」事と「内側から使うユーザはみんなプライマリのDNSを見てるよねぇ」という決め付けから、
mail CNAME mx2.test.com.
と「一時的に」設定してしまうのも、なんていうか方法の一つではあります。ただ、色々と弊害が出やすい方法なので、よほど考えて使わないと面倒くさい事になりがちなのですが(でもクレームの多さに耐えかねてやってしまうケースもまた散見)。
このケースにおいても、クライアントが複数の設定をする必要は「原則として」ないです。

というわけで、受信と送信を切り分けてざっくりとかいてみましたが。
なにか質問などありましたらお気軽に。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-05-14 08:26
 なな。。なんと。。
いつもながら明確なお答えを頂きまして、本当に感謝しております。

「受信したありとあらゆるメールはmx1.test.com.に転送 」

は思いつきませんでした。
ありがとうございます。
 
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-05-14 08:57
 引き続きご質問させていただいてよろしいでしょうか。

 メールサーバーが2台あり、それぞれ mx1.test.com. 、mx2.test.com. 
だとします。そこで、xxx@test.com 宛てに送られてきたメールはmx1.test.com.へ、xxx@sub.test.com 宛てに送られてきたメールはmx2.test.com.へ配送させたいのですが、MXレコードに何と記述すればよろしいでしょうか。
 
ちとり
大ベテラン
会議室デビュー日: 2002/05/12
投稿数: 113
お住まい・勤務地: 神奈川県
投稿日時: 2002-05-14 20:31
引用:

okumuraさんの書き込み (2002-05-14 08:57) より:
 引き続きご質問させていただいてよろしいでしょうか。

 メールサーバーが2台あり、それぞれ mx1.test.com. 、mx2.test.com. 
だとします。そこで、xxx@test.com 宛てに送られてきたメールはmx1.test.com.へ、xxx@sub.test.com 宛てに送られてきたメールはmx2.test.com.へ配送させたいのですが、MXレコードに何と記述すればよろしいでしょうか。
 



それは、MTAの設定で解決可能です。
Sendmailの設定に基づいて説明します。

Sendmailのデフォルト設定では、おそらく[xxx@sub.test.com]に送信したとしても
HostUnknownとしてエラーを返されるでしょう。

前提として、[mx1.test.com],[mx2.test.com]には、[*@*.test.com]宛のメールは
受信(リレー)許可、または[*@test.com],[*@sub.test.com]宛のメールは
受信(リレー)許可、の設定が必要です。

[mx1.test.com]には[*@test.com]宛のメールは全てローカルに吸収する設定を、
[mx2.test.com]には[*@test.com]宛のメールは全て[mx1.test.com]にスタティック
転送設定を設ける。

また、[mx1.test.com]には[mx2.test.com]に[*@sub.test.com]宛のメールに
対してスタティック転送設定を、[mx2.test.com]には[*@sub.test.com]宛の
メールは全てローカルに溜め込むする設定を書けてあげれば良いと思います。

方法としては多数存在(バージョンによって左右される)しますが、私の場合
リレーマップデータベースを作成して意図的にローカルに溜め込むように
設定します。
# データベースには場合に応じて、[hash]と[dbm]を使い分けてたりします。
# データベース化することによって、設定の変更毎にMTAを再起動の作業を
# 省略する事が可能なので、可能な限りデータベースを使用するようにしてます。

しかし、スパムメールやエラーメールなども素直に受け取ってしまう可能性も
ありますので、よりシビアに設定を施し、即座に対応できる体制をとって
おくべきでは無いかと思います。


[ メッセージ編集済み 編集者: ちとり 編集日時 2002-05-14 20:33 ]
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2002-05-15 02:34
どもです。
んと。

引用:

xxx@test.com 宛てに送られてきたメールは mx1.test.com.へ、xxx@sub.test.com 宛てに送られてきたメールは mx2.test.com.へ配送


との事で。
これであれば、単純に
test.com. IN MX 10 mx1.test.com.
sub.test.com. IN MX 10 mx2.test.com.
でよいと思われます。

ただ、ここで「mx1.test.com.が倒れたときはmx2.test.com.がフォローする」ところまでを混ぜ込むんであれば、まずは

test.com. IN MX 10 mx1.test.com.
test.com. IN MX 20 mx2.test.com.
sub.test.com. IN MX 10 mx2.test.com.

となります。ちなみに相互に補完しあう関係も作成できます。想像がつくと思われるので、見本は省略しますが。
この上で、mx2.test.com.のMTAには「@test.comで到着したメールはローカルに配信しないでmx1.test.com.に転送する」といった設定を突っ込むのがよろしいか、と。

MTAの設定はまた別物になるので、調べてみてください。
もしわからなければまたここで、ないし別スレッドででも。

んでわ。

スキルアップ/キャリアアップ(JOB@IT)