Какие протоколы и серверы участвуют в отправке электронной почты и каковы действия? - PullRequest
15 голосов
/ 28 августа 2008

В течение последних нескольких недель я пытался узнать, как работает электронная почта. Я довольно хорошо понимаю, как клиент получает почту с сервера, используя POP. Я также понимаю, как клиентский компьютер может использовать SMTP, чтобы попросить сервер SMTP отправить сообщение. Тем не менее, я все еще что-то упускаю ...

Как я понимаю, исходящая почта должна совершить три поездки:

  1. Клиент (пользователь gmail, использующий Thunderbird) к серверу (Gmail)
  2. Первый сервер (Gmail), второй сервер (Hotmail)
  3. Второй сервер (Hotmail) для второго клиента (пользователь Hotmail, использующий OS X Mail)

Насколько я понимаю, на первом этапе клиент использует для связи SMTP. Клиент как-то аутентифицируется (скажем, с помощью USER и PASS), а затем отправляет сообщение на сервер gmail.

Однако я не понимаю, как сервер Gmail передает сообщение на сервер Hotmail.

Я уверен, что для третьего шага сервер горячей почты использует POP для отправки сообщения клиенту горячей почты (опять же с использованием аутентификации).

Итак, главный вопрос: когда я нажимаю кнопку отправить, Mail отправляет мое сообщение на мой сервер Gmail, как мой сервер Gmail пересылает сообщение, скажем, на сервер Hotmail, чтобы мой друг мог его получить? *

Большое вам спасибо!

~ Jason


Спасибо, это помогло.

Насколько я понимаю, первый клиент отправляет сообщение на первый сервер с использованием SMTP, часто по адресу, например smtp.mail.SOMESERVER.com на порт 25 (обычно).

Затем SOMESERVER снова использует SMTP для отправки сообщения на RECEIVESERVER.com через порт 25 (не smtp.mail.RECEIVESERVER.com или что-либо другое).

Затем, когда получатель спрашивает RECEIVESERVER о своей почте, используя POP, он / она получает сообщение ... верно?

Еще раз спасибо (особенно Др-Джану),

Jason

Ответы [ 7 ]

18 голосов
/ 28 августа 2008

SMTP-сервер в Gmail (который принял сообщение от Thunderbird) направит сообщение конечному получателю.

Это делается с помощью DNS для поиска записи MX (почтового обменника) для части имени домена адреса электронной почты назначения (в данном примере hotmail.com). DNS-сервер вернет IP-адрес, на который должно быть отправлено сообщение. Надеемся, что сервер с IP-адресом получателя будет работать по протоколу SMTP (на стандартном порту 25), чтобы он мог принимать входящие сообщения.

После получения сообщения сервером горячей почты оно сохраняется до тех пор, пока соответствующий пользователь не войдет в систему и не получит свои сообщения с использованием POP (или IMAP).

Джейсон - чтобы ответить на ваши вопросы ...

Затем SOMESERVER снова использует SMTP, чтобы отправить сообщение на RECEIVESERVER.com через порт 25 (не smtp.mail.RECEIVESERVER.com или что-либо другое).

Это верно - имя домена для отправки принимается за все после символа @ в адресе электронной почты получателя. Зачастую RECEIVESERVER.com является псевдонимом для чего-то более конкретного, например, для входящего .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).

5 голосов
/ 28 августа 2008

Вы ищете агента пересылки почты, в Википедии есть хорошая статья по теме.

В службах обработки сообщений Интернета (MHS) агент передачи сообщений, агент передачи почты (MTA) или ретранслятор почты - это программное обеспечение, которое передает сообщения электронной почты с одного компьютера на другой с использованием клиент-серверной архитектуры приложений. MTA реализует как клиентскую (отправляющую), так и серверную (принимающую) части протокола Simple Mail Transfer Protocol.

Термины «почтовый сервер», «почтовый обменник» и «узел MX» могут также относиться к компьютеру, выполняющему функцию MTA. Система доменных имен (DNS) связывает почтовый сервер с доменом с записями ресурсов почтового обменника (MX), содержащими доменное имя хоста, предоставляющего услуги MTA.

4 голосов
/ 28 августа 2008

Вам также может быть интересно узнать, почему ссылка GMail на HotMail использует SMTP, как ваш клиент Thunderbird. Другими словами, поскольку ваш клиент может отправлять электронную почту через SMTP и может использовать DNS для получения записи MX для hotmail.com, почему он просто не отправляет ее туда напрямую, полностью пропустив gmail.com?

Есть несколько причин, некоторые исторические, а некоторые по соображениям безопасности. В первоначальном вопросе предполагалось, что ваш клиент Thunderbird входит в систему с именем пользователя и паролем. Это часто не тот случай. SMTP на самом деле не требует логин для отправки почты. И SMTP не может сказать, кто на самом деле отправляет почту. Таким образом, спам родился!

К сожалению, все еще существует много SMTP-серверов, которые позволяют всем и каждому подключаться и отправлять почту, слепо полагая, что отправитель - это тот, кем он себя считает. Эти серверы называются «открытыми ретрансляторами» и обычно попадают в черный список более умных администраторов других почтовых серверов из-за спама, который они генерируют.

Ответственные администраторы SMTP-сервера настраивают свой сервер на прием почты для доставки только в особых случаях 1) почта приходит из «своей» сети, или 2) почта отправляется в «свою» сеть, или 3 ) пользователь представляет учетные данные, которые идентифицируют его как надежного отправителя. Случай № 1, вероятно, происходит, когда вы отправляете почту с работы; Ваша машина находится в доверенной сети, поэтому вы можете отправлять почту кому угодно. Многие корпоративные почтовые серверы по-прежнему не требуют аутентификации, поэтому вы можете выдавать себя за любого в своем офисе. Веселье! Случай № 2 - это когда кто-то отправляет вам почту. И случай № 3, вероятно, то, что происходит с вашим примером GMail. Вы не из надежной сети, вы просто выходите в Интернет со спамерами. Но используя пароль, вы можете доказать GMail, что вы тот, кем себя говорите.

Исторический аспект заключается в том, что в старые времена связь между gmail и hotmail, вероятно, была прерывистой. Поставив вашу почту в очередь на локальном сервере, вы можете вымыть ее, зная, что при установлении связи локальный сервер может передавать ваши сообщения на удаленный сервер, который будет удерживать сообщение до тех пор, пока агент получателя его не подберет. .

2 голосов
/ 28 августа 2008

Если вы действительно хотите узнать, как работает электронная почта, вы можете прочитать SMTP RFC или POP3 RFC .

2 голосов
/ 28 августа 2008

Первый сервер будет искать в DNS запись MX сервера Hotmail. MX - это специальная запись, которая определяет почтовый сервер для определенного домена. Зная IP-адрес сервера Hotmail, сервер GMail отправит сообщение по протоколу SMTP и будет ждать ответа. Если сервер Hotmail выходит из строя, сервер GMail попытается отправить сообщение повторно (это будет зависеть от конфигурации программного обеспечения сервера). Если процесс завершается нормально, тогда хорошо, если нет, сервер GMail уведомит вас, что он не смог доставить сообщение.

1 голос
/ 28 августа 2008

Все электронные письма передаются с использованием SMTP (или ESMTP).
Важно понимать, что когда вы отправляете сообщение на someguy@hotmail.com, адресат этого сообщения не является его ПК. Местом назначения является папка входящих сообщений пользователя someguy на сервере hotmail.com.
После того, как сообщение прибудет в пункт назначения. Пользователь может проверить, есть ли у него какие-либо новые сообщения в его учетной записи на сервере Hotmail и получить их, используя POP3

Также было бы возможно отправить сообщение без использования сервера Gmail, отправив его непосредственно с вашего компьютера на Hotmail с использованием SMTP.

1 голос
/ 28 августа 2008

Шаг 2–3 (т. Е. Gmail в Hotmail) обычно выполняется через SMTP (или ESMTP - расширенный SMTP).

Hotmail ничего не отправляет клиенту через POP3. Здесь важно понимать некоторые нюансы. Клиент связывается с Hotmail через POP3 и запрашивает его почту. (т.е. клиент инициирует обсуждение).

...