2

私のアプリケーションでは、通知メールを時々送信する必要があります。(SMTP 経由で) メールを送信するには、その特定のドメイン (電子メール アドレスのドメイン部分) の MX サーバーを取得する必要があります。これは Unix アプリケーションではなく、組み込みアプリケーションです。

私がすることは次のようになります::

1 - ドメインを含む DNS クエリ (MX タイプ) を現在の DNS に送信します。

2 - レスポンスに MX answer が含まれている場合、この関数から成功を返します

3 - 最初の NS レコードを読み取り、その IP アドレスを現在の DNS にコピーします。1 に進みます。

これは数回ループする可能性があり、これは予期されていることですが、応答には ns1.blahblah.com のような名前のサーバーの NS レコードが含まれているが、それらの IP アドレスは含まれていないことは予期していません。この場合、この NS の IP を見つけるために別のクエリを送信する必要があります。これは 1 つの電子メール アドレス (1 つのドメイン) についてのみ見られましたが、他のアドレスは問題なく機能していました。

これは正常な動作ですか? 私見、これは DNS レコードの設定ミスです。何かご意見は ?

前もって感謝します...

4

3 に答える 3

3

あなたの質問への短い答え: RFC 1035は言う、

NS レコードは、タイプ A レコードを見つけるための通常の追加セクション処理と、参照で使用される場合に、グルー情報のためにそれらが存在するゾーンの特別な検索の両方を引き起こします。

...追加レコード セクションには、クエリに関連する RR が含まれていますが、質問に対する厳密な回答ではありません。

...応答を作成するとき、追加セクションに挿入されるが、回答セクションまたは権限セクションで RR が重複する RR は、追加セクションから省略される場合があります。

したがって、私の意見の要点は、はい、応答に NS レコードと一致する A レコードが含まれていない場合、どこで何かが誤って構成されている可能性があるということです。しかし、古い言い回しにあるように、「受け入れるものには寛容になりなさい」。クエリを作成する場合は、このような状況を処理する必要があります。DNS は、この種の問題にあふれています。

より長い回答には質問が必要です: MX ルックアップを開始する元の DNS サーバーをどのように取得していますか?

あなたがしているのは非再帰的なクエリです: クエリを実行した最初のサーバーが答えを知らない場合、DNS 階層内で探しているドメインに「近い」別のサーバーを指し示します。後続のクエリを実行して MX レコードを見つけます。ルート サーバーの 1 つでクエリを開始する場合は、自分と同じように NS ポインターを自分で追跡する必要があると思います。

ただし、開始 DNS サーバーがアプリケーションで構成されている場合 (つまり、手動構成項目または DHCP 経由)、Recusion Desired フラグを使用して再帰要求を行うことができるはずです。 DNS サーバー。その場合、最初の応答で MX レコードの値を取得するだけです。一方、再帰クエリはオプションであり、ローカル DNS サーバーがそれらをサポートしていない可能性があります (歴史的に、多くのクライアント ライブラリが再帰ルックアップに依存していたため、これは奇妙なことです)。

いずれにせよ、個人的に MX レコードをご覧いただきありがとうございます。私は、メールを送信したいのに DNS ルックアップを実行できないシステムに対処しなければなりませんでした。彼らが使用した奇妙で不快なハッキングの数と種類は、私に感情的な傷を残しました。

于 2009-11-27T02:38:02.983 に答える
3

メッセージの権限セクションと追加セクションはオプションです。つまり、ネーム サーバーとその IP は、MX クエリへの応答にある必要はありません。サーバーが既にデータを持っている場合でも、その追加情報を送信するかどうかを決定するのは DNS サーバー次第です。

MX をクエリしてから、メール サーバーの IP をクエリする必要があります。

于 2009-11-12T12:23:09.993 に答える
0

ドメインに MX レコードがない可能性があります。未使用/パークされたドメインの MX エントリを完全に削除します。これにより、メール サーバーの負担が大幅に軽減されます (スパム)。

ステップ 2 を過ぎる必要はまったくありません。システム (または ISP) リゾルバが MX エントリを返さなかった場合は、追加のステップをすでに実行して何も検出されていないためです。または、システム ホスト リゾルバーが遅すぎる可能性があります (つまり、ISP から)。

それでも、機能の問題ではなく、明らかにDNSまたはISPの問題であるため、どちらかが発生した場合は救済するのが適切だと思います. ドメインの MX レコードを解決できなかったことをユーザーに伝え、ユーザー側で調査してもらいます。

また、アプリケーション自体でリゾルバーを構成可能にして、ユーザーが不安定な NS を回避できるようにすることは可能ですか?

于 2009-11-12T09:35:36.817 に答える