- - PR -
BINDのMXレコード
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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 ] | ||||||||||||
|
投稿日時: 2002-05-13 17:32
mx2もダウンしていなければ、そうだと思います。が、どっちもダウンしていると、後でリトライされますので、どっちになるかはちょっと不明。
えーと、ふつうのメールクライアントは、いちいち自分で宛先のドメインのMXレコードを引いて、メールを出したりしません。だいたい、相手がダウンしていたら、再送処理とかは誰がやってくれるの? という疑問が…。
ふつうはそんなことしないです。メールの宛先がtest.comだけならそれでもいいでしょうけど、(通常は)test.comのメールサーバは、@test.com宛以外は受け付けませんし。まさかメールの宛先の数だけメールクライアントを用意するつもりとか……。 というわけで、ふつうは、ローカルドメインのメールを担当する専用のメールサーバを用意して、そいつが外部とのメールのやりとりを一切受け持ち、クライアントはそのメールサーバとだけやり取りします。 ちなみに、ふつうは、落ちているメールサーバは自分でいちいち「落ちているよ!」なんて言ってくれることは少ないです。たいてい、単に応答がなくなるだけです。だから、落ちてるのか遅いのか、判断が難しいです。 | ||||||||||||
|
投稿日時: 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-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. と「一時的に」設定してしまうのも、なんていうか方法の一つではあります。ただ、色々と弊害が出やすい方法なので、よほど考えて使わないと面倒くさい事になりがちなのですが(でもクレームの多さに耐えかねてやってしまうケースもまた散見)。 このケースにおいても、クライアントが複数の設定をする必要は「原則として」ないです。 というわけで、受信と送信を切り分けてざっくりとかいてみましたが。 なにか質問などありましたらお気軽に。 | ||||||||||||
|
投稿日時: 2002-05-14 08:26
なな。。なんと。。
いつもながら明確なお答えを頂きまして、本当に感謝しております。 「受信したありとあらゆるメールはmx1.test.com.に転送 」 は思いつきませんでした。 ありがとうございます。 | ||||||||||||
|
投稿日時: 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-14 20:31
それは、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-05-15 02:34
どもです。
んと。
との事で。 これであれば、単純に 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の設定はまた別物になるので、調べてみてください。 もしわからなければまたここで、ないし別スレッドででも。 んでわ。 |