Какие протоколы и серверы задействованы при отправке электронного письма и каковы необходимые шаги?

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

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

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

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

~Джейсон


Спасибо, до сих пор это было полезно.

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

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

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

Еще раз спасибо (особенно доктору Яну).,

Джейсон

Это было полезно?

Решение

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

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

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

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

Затем какой-ЛИБО сервер снова использует SMTP для отправки сообщения на RECEIVESERVER.com через порт 25 (не 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).

Другие советы

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

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

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

Возможно, вам также будет интересно узнать, почему ссылка 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, скорее всего, была прерывистой.Поместив вашу почту в очередь на локальном сервере, вы могли бы умыть руки, зная, что после установления связи локальный сервер сможет передавать ваши сообщения на удаленный сервер, который будет хранить сообщение до тех пор, пока его не заберет агент получателя.

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top