Можно ли получить порт из MX lookup? - PullRequest
1 голос
/ 29 апреля 2019

Я нахожусь в процессе понимания того, что является правильным способом отправки электронного письма с кодом Python . Я несколько продвинулся в понимании поиска в MX , хотя: " чем больше остров знаний, тем длиннее береговая линия чуда ".

Благодаря этому ответу мне удалось отправить электронное письмо (хотя бы на одноразовый почтовый ящик ) с этим фрагментом кода:

import smtplib

from email.message import EmailMessage

message = EmailMessage()
message.set_content('Content of the message here.')
message['Subject'] = 'Mail sent from code'
message['From'] = 'whoever@whatever.com'
message['To'] = 'aloun36zmzazyxd3tyop@3mail.rocks'

smtplib.SMTP('mail.3mail.rocks:2525')
smtp_server.send_message(message)
smtp_server.quit()

Вот как я могу найти SMTP-адрес и порт (mail.3mail.rocks:2525):

  1. Выполнен поиск MX для 3mail.rocks домена:

    • host -t mx 3mail.rocks

      3mail.rocks mail is handled by 10 mail.3mail.rocks.
      
  2. Тогда я только начал проверять порты, используемые по умолчанию , с telnet mail.3mail.rocks xxx, это дало мне следующие результаты:

    • telnet mail.3mail.rocks 25

      Trying 89.38.99.80...
      telnet: connect to address 89.38.99.80: Connection refused
      telnet: Unable to connect to remote host
      
    • telnet mail.3mail.rocks 465

      Trying 89.38.99.80...
      telnet: connect to address 89.38.99.80: Operation timed out
      telnet: Unable to connect to remote host
      
    • telnet mail.3mail.rocks 587

      Trying 89.38.99.80...
      telnet: connect to address 89.38.99.80: Operation timed out
      telnet: Unable to connect to remote host
      
    • telnet mail.3mail.rocks 2525

      Trying 89.38.99.80...
      Connected to mail.3mail.rocks.
      Escape character is '^]'.
      220 node1 ESMTP Haraka 2.8.16 ready
      

    Итак, вот как я вычислил необходимый порт (по сути, грубой силой).

Я продолжил тестировать свой фрагмент на другом одноразовом почтовом сервисе ( mailforspam.com ), выполнив те же шаги - поиск MX (host -t mx mailforspam.com) вернул:

mailforspam.com mail is handled by 10 mail2.mailforspam.com.
mailforspam.com mail is handled by 10 mail1.mailforspam.com.

Хотя я не смог подключиться через telnet (я пробовал оба сервера mail2.mailforspam.com и mail1.mailforspam.com) к любому из портов по умолчанию: порт 25 - Connection refused, порты 2525, 587 , 465 - Operation timed out.

Вопросы:

  1. Как определить правильные порты для сервера, принимающего почту от имени определенного домена (тот, который возвращается поиском MX)? Насколько я понимаю, порты « default » - это просто условные обозначения, и на самом деле серверы могут использовать любой свободный порт, который они выберут.
  2. Я предполагаю, что когда электронная почта отправляется одним почтовым провайдером другому, SMTP-сервер, на который она отправляется (принадлежащий пользователю, отправляющему электронную почту), делает что-то похожее (например, поиск MX => подключение к серверу приема почты = > отправив электронное письмо). Как такие серверы " real-world " определяют правильный порт (или они просто перебирают по умолчанию)?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2019

Как определить правильные порты для сервера, принимающего почту от имени определенного домена (тот, который возвращается поиском MX)?

Что вы показали вВаш вопрос более или менее правильный.Вы можете попробовать порты в другом порядке.Кроме того, порт 2525 не является официальным портом любого известного мне стандарта, но, похоже, является соглашением для обхода брандмауэров, которые блокируют порт отправки 587.

. Следует отметить, что "Прием почты "на самом деле не одно.Существуют «почтовые агенты пользователя», которые выполняют «отправку» и «агенты передачи почты», которые выполняют «передачу».«Отправка» и «передача» часто живут в разных портах, что объясняет некоторое разнообразие, которое вы видели.Выясните, выполняете ли вы отправку или передачу и выберите соответствующую группу портов.

Здесь я понимаю, что порты "по умолчанию" - это просто соглашения, и, фактически, серверы могут использовать любые бесплатныепорт, который они выбирают.

Это не совсем так, по крайней мере, если серверы хотят, чтобы кто-нибудь смог их найти, потому что ...

Кактакие "реальные" серверы определяют правильный порт (или они просто переборщили через стандартные)?

Почтовые серверы, которые действительно хотят иметь возможность получать почту, должны работать на стандартномномер порта.Для адаптеров MTA это означает, что порт 25 может иметь запасной вариант до 465 (хотя это также не стандартизировано).Для MUA это означает, что порт 587 может иметь запасной вариант до 2525 (также не стандартизированный, но, по-видимому, широко используемый в качестве обходного пути для блокируемых MUA).

В частности, записи MX не содержат информации о порте,ни один другой тип записи DNS, связанный с SMTP.

1 голос
/ 02 мая 2019

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

Порт 25 между авторизованными серверами не заблокирован, у сервера нет причин или причин для определения другого номера порта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...