アプリ版:「スタンプのみでお礼する」機能のリリースについて

メールヘッダのreceivedのヘッダフィールドについて
分からないことがあります。
端末1が、端末2の電子メールアドレス(XXX@CCC.jpとします)
を宛先アドレスとして電子メールを送信したとします。

端末1   SMTPサーバ1 SMTPサーバ2 SMTPサーバ3
YYY@AAA.jp mail.AAA.jp mail.BBB.jp mail.CCC.jp
↓         ↑↓     ↑↓      ↑ 
ルータa→→→ルータb→→ルータc→  ルータd
                          ↓↑(POP)
                        端末2XXX@CCC.jp

SMTPのプロトコルだと、
このメールは端末1と同じドメイン(AAA.jp)のSMTPサーバ1から
宛先と同じドメイン(CCC.jp)のSMTPサーバ3まで転送され、
その間に、経由点上のSMTPサーバのトレース情報を示すreveiveのヘッダフィールドが追記されて行くということが分かりました。
ここで、質問なのですが、
端末1(または、SMTPサーバ1?)が、CCCのドメインネームサーバに
SMTPサーバ3のIPアドレスを問い合わせて取得し、
そのIPアドレスを(メールを記述したTCPパケットの)TCPヘッダに付加してルータaに渡してしまえば、
あとはルータa~dが勝手にSMTPサーバ3まで転送してくれるような気がするのですが、
SMTPサーバ1やSMTPサーバ3以外の他の経由点(上の例でいうとSMTPサーバ2 )のトレース情報も追記されることもあり得るのでしょうか。
だとすれば、その理由が分かりません。
SMTPサーバ2と繋がっているルータcは、宛先IPアドレスと
自分のルーティングテーブルさえ照合すれば、
TCPよりも上位層のSMTPの処理をするまでもなく(SMTPサーバ2に
ペイロードを渡す必要なく)、
そのままルータdに転送すればいいとすぐに分かるような気が致します。
TCPのペイロード部に含まれているデータが電子メールの場合、
ルーティング経路上のルータは、SMTPサーバに一度渡し、
その結果を受け取ってまた流す、というような
規約になっているのでしょうか。
とすれば、宛先に到達するまでに
ものすごい数のreveiveのヘッダフィールドが追加されてしまうような
気がいたします。この理解で合っておりますでしょうか。
つたない説明ですいませんが、どなたか教えてください。

      

A 回答 (3件)

> そのIPアドレスを(メールを記述したTCPパケットの)TCPヘッダに付加してルータaに渡してしまえば、


> あとはルータa~dが勝手にSMTPサーバ3まで転送してくれるような気がするのですが、

IPアドレスを格納するのはIPデータグラムですが、質問者さんの直感は実際のSMTP転送の仕組みをほぼ正確に言い当てています。

各SMTPサーバがインターネットに直接接続している、一般的な設定がされているメールサーバとして、SMTPサーバ1は、"xxx@ccc.jp"宛てのメールを端末1から受け取ると、DNSで "@ccc.jp" を担当するメールサーバを探します。見つかると、SMTPサーバ1はSMTPサーバ3に直接メールを送信しますので、このとき recievedヘッダにSMTPサーバ2が付加される余地はありません。

では、どういうケースでrecieved行が付加されるかというと、いくつかのパターンが考えられます
よく目にするのは以下の3通りでしょうか。

(a) 送信側または受信側のネットワークで、SMTPサーバが多段構成になっている場合
(b) メールがメーリングリストサーバを経由して配信されている場合
(c) ゲートウェイ型のウィルスチェックツールを経由している場合

(a) が分かりにくいかもしれませんが、たとえば会社の各部門でメールサーバを使用しているが、インターネット経由で別会社/別組織に送信するためには全社サーバを通さなければいけない、あるいはインターネットからメールを受信するサーバが制限されていて、受信したメールを更に配下のメールサーバに転送する必要がある、などという場合が該当します。
実のところ、大抵の組織のメール環境はSMTPサーバが多段構成になっています
    • good
    • 0

追記:


aaa.jp, bbb.jp, ccc.jp ともに実在するドメイン名です。
例として表示する場合は、
"example.com" "example.jp" "example.net" などを使用しましょう。

# 先の回答では混乱するといけないので直しませんでした
    • good
    • 0

DNSには、ホスト名(FQDN)とIPアドレスの対応表(Aレコード、IPv6だとAAAAレコードと呼びます)以外に、このドメインのメールをどこに配送するかという情報が書かれたMXレコードというものが存在します


あまり大きくない会社だと、メールサーバからメールサーバでダイレクトに配送できる場合もあり、最短では、
端末1→SMTPサーバ1→SMTPサーバ2→端末2
のようなパターンも存在します
ただ、No.1の方が書かれているような理由や、SPAMフィルタを実装したSMTPサーバが途中に入っていたりすると、多段でSMTPサーバを経由してメールが届くことになったりします
実際、うちのメールサーバは、Firewallの奥深く、ウィルススキャン/SPAMフィルタ等を経由してくるので、社内だけで7つのSMTPサーバを経由します
ほかの某会社では10段経由というのを見たこともあります
困ったことに、sendmailのデフォルトの設定では、25段を超えるとメールのループが発生していると判断して、エラーメールを返します
うちの会社が7段、とある会社が10段、メーリングリストを経由するとさらに段数が増えて、メーリングリスト経由では25段を超えてしまいメールが全然届かない、ということも経験したことがあります
sendmailの設定を変えてもらうという解法もあったのですが、メーリングリスト(fml)側でreceivedヘッダを削除する、という方法でこの問題を回避したこともあります
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!