Назад | Перейти на главную страницу

Почему записи MX не могут указывать на IP-адрес?

я понимаю вас не должна указывает запись MX на IP-адрес напрямую, но должен вместо этого укажите на A запись, которая, в свою очередь, указывает на IP-адрес вашего почтового сервера.

Но, в принципе, Зачем это требуется?

Вся идея записи MX состоит в том, чтобы указать хозяин или хозяева который может принимать почту для домена. Как указано в RFC 1035, запись MX содержит доменное имя. Следовательно, он должен указывать на хост, который сам может быть разрешен в DNS. IP-адрес нельзя использовать, так как он будет интерпретирован как неквалифицированное доменное имя, которое не может быть разрешено.

Причины этого в 1980-х годах, когда изначально были написаны спецификации, почти те же, что и причины этого сегодня: хост может быть подключен к нескольким сетям и использовать несколько протоколов.

Еще в 80-х годах нередко были почтовые шлюзы, которые подключались как к (относительно новому) Интернету, который использовал TCP / IP, так и к другим устаревшим сетям, которые часто использовали другие протоколы. Указание MX таким образом позволяет использовать записи DNS, которые могут определять, как достичь такого хоста в сети, отличной от Интернета, например Хаоснет. Однако на практике этого почти никогда не происходило; практически все модернизировали свои сети, чтобы вместо этого они стали частью Интернета.

Сегодня ситуация такова, что к хосту можно получить доступ по нескольким протоколам (IPv4 и IPv6) и по нескольким IP-адресам в каждом протоколе. В одной записи MX не может быть перечислено более одного адреса, поэтому единственный вариант - указать на хост, где затем можно будет найти все адреса этого хоста. (В целях оптимизации производительности DNS-сервер будет отправлять адресные записи для хоста в дополнительном разделе ответа, если у него есть авторитетные записи для них, что экономит время приема-передачи.)

Также может возникнуть ситуация, когда ваши почтовые обменники предоставляются третьей стороной (например, Google Apps или Office 365). Вы указываете свои записи MX на их имена хостов, но может случиться так, что провайдеру услуг потребуется изменить IP-адреса почтовых серверов. Поскольку вы указали хост, поставщик услуг может сделать это прозрачно, и вам не нужно вносить какие-либо изменения в свои записи.

DNS как протокол имеет несколько разных типов значений, они не взаимозаменяемы.

Важно отметить, что DNS - это двоичный протокол со строгим соответствием между типом записи и типом данных, которые она содержит.

Например:
An A запись содержит IPv4-адрес (4 байта данных, фиксированная длина).
An AAAAзапись содержит IPv6-адрес (16 байт данных фиксированной длины).

An MX запись, с другой стороны, содержит название (последовательность меток на формате <int number of bytes> <label> <int number of bytes> <label> <int 0>, переменной длины).

Это не возможно для MX запись, чтобы иметь в качестве данных IP-адрес.

Я выброшу это как предположение. Конечно, я дома с гриппом, так что, может быть, я в шоке.

RFC 974 гласит:

Первым шагом почтовой программы на ЛОКАЛЬНОМ является отправка запроса MX RR для REMOTE. Настоятельно рекомендуется выполнять этот шаг каждый раз, когда почтовая программа пытается отправить сообщение. Есть надежда, что изменения в базе данных домена будут быстро использоваться почтовыми программами, и, таким образом, администраторы домена смогут перенаправлять транзитные сообщения для неисправных хостов, просто изменив свои базы данных домена.

Требуя имя вместо IP, он настоятельно поощряет эту практику. Имена могут оставаться такими же, и в случае балансировки нагрузки или аварийного восстановления вам не придется беспокоиться об изменении самой записи MX и ожидании распространения DNS.

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

Изменить: Чтобы уточнить, в DNS каждая запись имеет строгие требования к типу данных, которые может содержать каждая запись. В случае записей MX это имя хоста только.

В RFC 1025 записи MX указывают только на RR (запись ресурса) записи A или CNAME.

Таким образом, почтовый сервер, отправляющий почту, запрашивает RR записи MX, запись mx перечисляет записи серверов A, почтовый сервер выполняет прямой поиск, чтобы получить запись A, а затем пересылает почту через smtp на хост службы, указанный как почтовый сервер, «желающий» получать почту для этого домена.

Ваш вопрос - почему нельзя отправить почту на IP-адрес

Ответ - из-за доверия

Многие действующие правила, касающиеся почты, были усовершенствованы, чтобы поддерживать доверие между доменами, что сообщения, отправляемые туда и обратно, действительно действительны. Все это сделано для того, чтобы в конечном итоге уменьшить СПАМ.

  • Обратный поиск IP
  • Прямой поиск имени в этом отношении

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

Ссылка - RFC 1035 и 974

https://www.ietf.org/rfc/rfc1035.txt35

https://www.ietf.org/rfc/rfc974.txt

Цель MXзаписи, что применение (почтовый перевод) может узнать об используемом хосте. На уровне приложения хост имена правильнее использовать (не IP-адреса).

Кроме того, добавление концепции записи вариантного типа в DNS вводит уровень сложности и, следовательно, точку входа для проблем, ошибок реализации и проблем безопасности. Например, 1.2.3.4.example.com. является допустимым именем хоста (да, даже в свете RFC1034, 3.5). Указание этого хоста как MX в файле конфигурации привязки для example.com может выглядеть так

.  MX 10  1.2.3.4

и, по-видимому, это в точности то же самое, что должна выглядеть запись MX с IP. И даже для передачи информации в дейтаграмме DNS требуются некоторые причудливые надстройки; самый простой способ - ввести новый тип записи ресурса, MXA скажем, для устранения неоднозначности. Но опять же, зачем вводить бремя такой новый тип записи, когда

. MXA 10 5.6.7.8

всегда можно заменить на

. MX 10 dummy
dummy A 5.6.7.8

(и будет поддерживаться также клиентами DNS, не знающими о MXA записи)?