Разрешение почтового сервера gmail.com - PullRequest
6 голосов
/ 27 декабря 2011

Я пытаюсь найти почтовый сервер gmail.com, используя команду dig, и проверяю результаты, полученные командой dig, используя telnet.

$ dig gmail.com MX

; <<>> DiG 9.7.3 <<>> gmail.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54145
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;gmail.com.         IN  MX

;; ANSWER SECTION:
gmail.com.      800 IN  MX  10 alt1.gmail-smtp-in.l.google.com.
gmail.com.      800 IN  MX  20 alt2.gmail-smtp-in.l.google.com.
gmail.com.      800 IN  MX  30 alt3.gmail-smtp-in.l.google.com.
gmail.com.      800 IN  MX  40 alt4.gmail-smtp-in.l.google.com.
gmail.com.      800 IN  MX  5 gmail-smtp-in.l.google.com.

;; Query time: 14 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Tue Dec 27 02:09:50 2011
;; MSG SIZE  rcvd: 150

Команда Dig говорит, что "alt1.gmail-smtp-in.l.google.com" является одним из почтовых серверов. Порты smtp 25 или 587 не открыты (проверено с помощью telnet) по ссылке «alt1.gmail-smtp-in.1.google.com». Однако ссылка http://support.google.com/mail/bin/answer.py?hl=en&answer=13287 говорит о том, что smtp.gmail.com является почтовым сервером для gmail.com, и для него открывается порт 587. Почему dig дает неправильные почтовые серверы или где мое понимание чтения вывода dig идет неправильно.

1 Ответ

15 голосов
/ 27 декабря 2011

Общая теория

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

Хотя эти две функции по-прежнему используют один и тот же протокол SMTP, становится все менее и менее верным, что они выполняются на одном и том же порте (поскольку системные администраторы предотвращают рассылку спама своими клиентами, блокируя исходящий трафик порта 25). В наши дни для отправки SMTP используется шифрование SSL, тогда как передача почты между двумя различными сетями все еще выполняется в виде простого текста. Учитывая сложность сети Google, меня не удивит, если эти две функции будут выполняться на разных машинах. (Отказ от ответственности: я работаю на Google, но у меня нет внутренних знаний о работе GMail.)

  1. Отправка исходящей почты. Когда вы отправляете электронную почту из GMail, особенно когда вы настраиваете почтовый клиент, такой как Evolution, для отправки из вашей учетной записи Gmail, вы должны настроить SMTP-сервер для отправки вашей почты. Ваш почтовый клиент соединяется напрямую с этим SMTP-сервером, и этот SMTP-сервер берет на себя ответственность за отправку сообщения в нужное место в Интернете. Это часто настраивается с использованием специального порта и требует ввода регистрационной информации, чтобы только авторизованные пользователи могли отправлять электронную почту. Это функция, с которой имеет дело ссылка поддержки выше. Вы настраиваете свой почтовый клиент для использования доменного имени smtp.gmail.com на порту 587, и я думаю, что ваш почтовый клиент находит этот сервер, используя запись DNS A для обычного поиска доменного имени.

  2. Получение электронной почты из других сетей. SMTP-сервер, который ретранслирует ваше сообщение в другую сеть, ищет запись MX для gmail.com (в вашем случае обнаруживает, что местом для отправки сообщения является alt1.gmail-smtp-in.l.google.com) и отправляет сообщение в порт 25 на этом хосте. , Это то, что вы посмотрели в DIG и протестировали с помощью telnet.

    Теперь, почему вы не увидели порт alt1.gmail-smtp-in.l.google.com 25, когда пытались подключиться к Интернету через интернет? Ответ заключается в том, что для предотвращения исходящего спама ваш интернет-провайдер блокирует исходящий трафик через порт 25. Поэтому вы не можете отправлять что-либо на gmail.com порт 25, не пройдя через SMTP-сервер вашего провайдера или какой-либо другой SMTP-сервер, который требует вход в систему и принимает заявки. через порт 587.

Что вы пытались сделать.

Итак, вы пытаетесь выполнить функцию № 2. Вы сами выполнили поиск MX для gmail.com и обнаружили, что он соответствует серверу alt1.gmail-smtp-in.l.google.com. Затем вы попытались подключиться к порту 587 через alt1.gmail-smtp-in.l.google.com. Это не сработало, потому что alt1.gmail-smtp-in.l.google.com не прослушивает этот порт (ему нужно только прослушать порт 25 для выполнения функции # 2). Затем вы попытались подключиться к порту 25 на alt1.gmail-smtp-in.l.google.com. Это не сработало, потому что ваш интернет-провайдер блокирует исходящие соединения через порт 25.

Чтобы отправить письмо на gmail.com, вам нужно найти сервер, который выполняет функцию # 1, и отправить туда свою электронную почту. В качестве альтернативы найдите провайдера, который не против быть спам-убежищем и не блокирует исходящий трафик через порт 25. (На самом деле, пожалуйста, не надо.)

...