電子メールの送信にはどのようなプロトコルとサーバーが関係しますか?また、その手順は何ですか?

StackOverflow https://stackoverflow.com/questions/32744

  •  09-06-2019
  •  | 
  •  

質問

ここ数週間、私は電子メールがどのように機能するかを学ぼうと努めてきました。クライアントが POP を使用してサーバーからメールを受信するプロセスはよく理解できました。また、クライアント コンピューターが SMTP を使用して SMTP サーバーにメッセージの送信を要求する方法も理解しました。しかし、まだ何かが足りない...

私の理解では、送信メールは次の 3 回の往復を行う必要があります。

  1. クライアント (Thunderbird を使用する Gmail ユーザー) からサーバー (Gmail) へ
  2. 最初のサーバー (Gmail) から 2 番目のサーバー (Hotmail) へ
  3. 2 番目のサーバー (Hotmail) から 2 番目のクライアント (OS X メールを使用する Hotmail ユーザー)

私の理解では、ステップ 1 ではクライアントが通信するために SMTP を使用します。クライアントは何らかの方法で (USER と PASS を使用して) 自身を認証し、メッセージを Gmail サーバーに送信します。

ただし、Gmail サーバーがメッセージを Hotmail サーバーに転送する方法がわかりません。

ステップ 3 では、hotmail サーバーは POP を使用してメッセージを hotmail クライアントに送信します (ここでも認証を使用します)。

そこで、大きな疑問は次のとおりです。 「送信」をクリックすると、メッセージが Gmail サーバーに送信されます。Gmail サーバーは、友人がメッセージを受信できるように、メッセージをたとえば Hotmail サーバーにどのように転送しますか?

どうもありがとうございます!

~ジェイソン


ありがとう、これまでのところ役に立ちました。

私が理解しているところによると、最初のクライアントは SMTP を使用して最初のサーバーにメッセージを送信します。多くの場合、(通常は) ポート 25 の smtp.mail.SOMESERVER.com などのアドレスにメッセージが送信されます。

次に、SOMESERVER は再度 SMTP を使用して、メッセージをポート 25 の RECEIVESERVER.com (smtp.mail.RECEIVESERVER.com などの特別なものではありません) に送信します。

次に、受信者が POP を使用して RECEIVESERVER にメールを要求すると、メッセージを受け取ります...右?

改めて感謝します (特に dr-jan に)、

ジェイソン

役に立ちましたか?

解決

Gmail の SMTP サーバー (Thunderbird からのメッセージを受け入れた) は、メッセージを最終受信者にルーティングします。

これは、DNS を使用して宛先電子メール アドレス (この例では hotmail.com) のドメイン名部分の MX (メール エクスチェンジャー) レコードを検索することによって行われます。DNS サーバーは、メッセージの送信先となる IP アドレスを返します。宛先 IP アドレスのサーバーは、受信メッセージを受信できるように SMTP (標準ポート 25 上) を実行していると考えられます。

メッセージは、hotmail サーバーによって受信されると、適切なユーザーがログインし、POP (または IMAP) を使用してメッセージを取得するまで保存されます。

ジェイソン - フォローアップにお答えします...

次に、SOMESERVER は再度 SMTP を使用して、メッセージをポート 25 の RECEIVESERVER.com (smtp.mail.RECEIVESERVER.com などの特別なものではありません) に送信します。

そのとおりです。送信先のドメイン名は、受信者の電子メール アドレスの「@」以降のすべてとして解釈されます。多くの場合、RECEIVESERVER.com は、incoming.RECEIVESERVER.com (実際には smtp.mail.RECEIVESERVER.com) など、より具体的なもののエイリアスです。

nslookup を使用してローカル DNS サーバーにクエリを実行できます (これは Linux と Windows の cmd ウィンドウで機能します)。

nslookup
> set type=mx
> stackoverflow.com
Server:         158.155.25.16
Address:        158.155.25.16#53

Non-authoritative answer:
stackoverflow.com       mail exchanger = 10 aspmx.l.google.com.
stackoverflow.com       mail exchanger = 20 alt1.aspmx.l.google.com.
stackoverflow.com       mail exchanger = 30 alt2.aspmx.l.google.com.
stackoverflow.com       mail exchanger = 40 aspmx2.googlemail.com.
stackoverflow.com       mail exchanger = 50 aspmx3.googlemail.com.

Authoritative answers can be found from:
aspmx.l.google.com      internet address = 64.233.183.114
aspmx.l.google.com      internet address = 64.233.183.27
>                  

これは、stackoverflow.com にいる人への電子メールは、上記の Gmail サーバーのいずれかに送信される必要があることを示しています。

言及されているウィキペディアの記事 (http://en.wikipedia.org/wiki/Mx_record) では、上記の優先順位番号 (10、20、...、50) について説明します。

他のヒント

あなたは Mail Transfer Agent を探しています。Wikipedia には次のような記載があります。 素敵な記事 話題になっている。

インターネット メッセージ処理サービス (MHS) 内で、メッセージ転送エージェント、メール転送エージェント (MTA)、またはメール リレーは、クライアント サーバー アプリケーション アーキテクチャを使用して、あるコンピュータから別のコンピュータに電子メール メッセージを転送するソフトウェアです。MTA は、Simple Mail Transfer Protocol のクライアント (送信) 部分とサーバー (受信) 部分の両方を実装します。

メール サーバー、メール エクスチェンジャー、および MX ホストという用語は、MTA 機能を実行するコンピューターを指す場合もあります。ドメイン ネーム システム (DNS) は、MTA サービスを提供するホストのドメイン名を含むメール エクスチェンジャー (MX) リソース レコードを使用して、メール サーバーをドメインに関連付けます。

また、GMail から HotMail へのリンクが、Thunderbird クライアントと同様に SMTP を使用する理由を知りたいかもしれません。言い換えれば、クライアントは SMTP 経由で電子メールを送信でき、DNS を使用して hotmail.com の MX レコードを取得できるのに、なぜ gmail.com を完全にスキップしてそこに直接送信しないのでしょうか?

理由はいくつかあり、歴史的な理由やセキュリティ上の理由もあります。元の質問では、Thunderbird クライアントがユーザー名とパスワードを使用してログインすると想定していました。そうでないこともよくあります。SMTP では、実際にはメールを送信するためにログインする必要はありません。また、SMTP では、実際に誰がメールを送信しているのかを知る方法がありません。こうしてスパムが誕生したのです!

残念ながら、送信者が本人であることを盲目的に信じて、誰でも接続してメールを送信できる SMTP サーバーがまだたくさんあります。これらのサーバーは「オープン リレー」と呼ばれ、スパムを大量に送り出すため、他のメール サーバーの賢明な管理者によって定期的にブラックリストに登録されています。

責任ある SMTP サーバー管理者は、1) メールが「独自の」ネットワークから送信されている、または 2) メールが「独自の」ネットワークに送信されている、または 3) ユーザー彼を信頼できる送信者として識別する資格情報を提示します。ケース #1 は、おそらく職場からメールを送信するときに起こることです。あなたのマシンは信頼されたネットワーク上にあるので、誰にでもメールを送信できます。多くの企業メール サーバーは依然として認証を必要としないため、オフィス内の誰でもなりすますことができます。楽しい!ケース #2 は、誰かがあなたにメールを送ってきた場合です。ケース #3 は、おそらく GMail の例で起こったことです。あなたは信頼できるネットワークから来ているのではなく、スパム発信者と一緒にインターネットに出ているだけです。ただし、パスワードを使用すると、自分が本人であることを GMail に対して証明できます。

歴史的な側面としては、昔は gmail と hotmail の間のリンクは断続的であった可能性が高いということです。ローカル サーバーでメールをキューに入れることで、リンクが確立されるとローカル サーバーがメッセージをリモート サーバーに転送し、受信者のエージェントがメッセージを受け取るまでメッセージを保持することができるため、メールを洗うことができます。 。

最初のサーバーは、Hotmail サーバーの MX レコードの DNS を調べます。MX は、特定のドメインのメール サーバーを定義する特別なレコードです。Hotmail サーバーの IP アドレスを認識すると、GMail サーバーは SMTP プロトコルを使用してメッセージを送信し、応答を待ちます。Hotmail サーバーがダウンした場合、GMail サーバーはメッセージの再送信を試みます (サーバー ソフトウェアの構成によって異なります)。プロセスが正常に終了した場合は正常に終了しますが、そうでない場合は、GMail サーバーはメッセージを配信できなかったことを通知します。

電子メールがどのように機能するかを本当に知りたい場合は、次の記事を読んでください。 SMTP RFC または POP3 RFC.

すべての電子メールは SMTP (または ESMTP) を使用して転送されます。
理解しておくべき重要なことは、someguy@hotmail.com にメッセージを送信するとき、このメッセージの宛先は彼の PC ではないということです。宛先は、hotmail.com サーバーにある誰かの受信トレイ フォルダーです。
メッセージが宛先に到着した後。ユーザーは、自分のアカウントに新しいメッセージがあるかどうかを hotmail サーバーで確認し、POP3 を使用して取得できます。

また、SMTP を使用して PC から hotmail にメッセージを直接送信することで、Gmail サーバーを使用せずにメッセージを送信することもできます。

ステップ 2 ~ 3 (つまり、Gmail から Hotmail への変換は通常、SMTP (または ESMTP - 拡張 SMTP) を通じて行われます。

Hotmail は、POP3 経由でクライアントに何も送信しません。ここでのニュアンスのいくつかを理解することが重要です。クライアントは POP3 経由で Hotmail に接続し、そのメールを要求します。(すなわち、クライアントがディスカッションを開始します)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top