Я хочу понять, как работает маршрутизация электронной почты. Допустим, я пытаюсь отправить сообщение кому-то @ gmail.com. Согласно моему нынешнему пониманию, выполняются следующие шаги:

  1. DNS MX запрос на gmail.com.
  2. Выберите сервер обмена почтой с наивысшим приоритетом (наименьшее число).
  3. Отправьте почту на сервер обмена по порту 25 (smtp).

Но когда я сделал сканирование портов (используя nmap) на порту 25, я обнаружил, что порт 25 закрыт для сервера обмена почтой домена gmail.com (gmail-smtp-in.l.google.com). Это касается большинства доменов электронной почты. Пожалуйста, помогите в понимании потока маршрутизации электронной почты.

1 ответ1

4

Что вам не хватает, так это того, что nmap не является средством проверки открытых портов.

С одной стороны, это ужасная идея - выполнить полное сканирование портов, чтобы посмотреть, открыт ли один единственный порт. telnet работает отлично:

shadur@huginn:~$ telnet gmail-smtp-in.l.google.com.  25 
Trying 2a00:1450:4013:c01::1b...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.

Марк дает одно очень хорошее возможное объяснение в комментарии к вашему вопросу; другая возможность состоит в том, что почтовый сервер Google, который почти наверняка подвергается почти постоянным низкопробным атакам со стороны оппортунистов, замечает попытку сканирования портов и быстро блокирует ваш IP-адрес в течение следующих пяти минут, прежде чем вы доберетесь до порта 22, не говоря уже о 25.

Тем не менее, полная схема потока немного больше:

  1. Вы составляете сообщение в своем почтовом клиенте, каким бы оно ни было (называемое почтовым агентом пользователя или MUA).
  2. MUA проверяет свои настройки и поле «Кому:», чтобы увидеть, как это должно быть обработано, а затем вызывает соответствующий сервер исходящей почты (MTA - Mail Transfer Agent), который в своей конфигурации сообщает, что ему поручено это обработать. В системах Unix это обычно localhost ; Системы Windows, как правило, настраивают сервер исходящей почты своего провайдера.
  3. MTA, который получает сообщение от MUA, проверяет его конфигурацию и сопоставляет его с источником, адресатом (и, возможно, телом) сообщения, чтобы решить, что с ним делать. В зависимости от вышеупомянутого это может варьироваться от прямого отклонения до сканирования на наличие вирусов / спама / и т.д. Или отправки его дальше.
  4. Если адаптер MTA определит, что сообщение должно быть принято, но домен получателя отсутствует в списке доменов, которые должны обрабатываться локально, он попытается передать сообщение либо в MX домена получателя, либо в настроенный так называемый "промежуточный узел". ». (Большинство систем Unix, упомянутых в # 3, имеют свой SMTP-сервер localhost, настроенный на использование почтового сервера своего провайдера для исходящей почты). Затем "умный хост" подхватит это на шаге 3.
  5. Как только MTA в ссылке решит отправить его непосредственно получателю, он сначала попытается отправить его на основной MX. Если этот MX не отвечает, он будет пытаться выполнить остальные серверы MX в порядке убывания приоритета до тех пор, пока не получит явный ответ принять или отклонить от одного или пока не закончатся записи MX для попытки, в зависимости от того, что произойдет раньше.
  6. Как только адаптер MTA в записях MX домена получателя получает сообщение, он также сверяется со своей конфигурацией и сопоставляет его с заголовками и содержимым сообщения, чтобы определить, что с ним делать, с тем же набором опций, что и в пункте 3, но с добавлена опция "доставлять конечному пользователю" через настроенный агент доставки почты (MDA).
  7. Когда MDA получает сообщение, он также консультируется со своей конфигурацией, чтобы решить, как следует обрабатывать сообщение и в какой почтовый ящик (если он есть) следует поместить сообщение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .