Чому записи MX не можуть вказувати на IP-адресу?


89

Я розумію, ви не повинні вказувати MX-запис безпосередньо на IP-адресу, а натомість слід вказувати на Aзапис, який, у свою чергу, вказує на IP-адресу вашого поштового сервера.

Але, в принципі, навіщо це потрібно?


Якщо ви можете встановити запис MX, ви також можете встановити запис A. Я не бачу тут проблеми.
Джошудсон

26
@joshudson Це зовсім не проблема, просто я намагаюся зрозуміти, чому, а не просто слідкувати за тим, що всі інші роблять.
dayuloli

Я щойно спробував у CloudFlare. Він не приймає IP-адресу як значення для MX-запису.
LinuxBabe

Я ніколи про це не піклувався, поки не додав запис SPF і не мав занадто багато пошукових запитів. Довелося знайти інший спосіб вирізати деякі.
грянт

Відповіді:


90

Вся ідея запису MX полягає в тому, щоб вказати хост або хости, які можуть приймати пошту для домену. Як зазначено в RFC 1035 , запис MX містить доменне ім'я. Тому він повинен вказувати на хост, який сам може бути вирішений у DNS. IP-адресу не можна використовувати, оскільки вона буде інтерпретуватися як некваліфіковане доменне ім’я, яке неможливо вирішити.

Причини цього у 1980-х роках, коли специфікації були спочатку написані, майже такі ж, як і причини цього сьогодні: Хост може бути підключений до декількох мереж і використовувати декілька протоколів.

Ще в 80-х роках не рідкістю були поштові шлюзи, які підключалися як до (відносно нового) Інтернету, який використовував TCP / IP, так і інших застарілих мереж, які часто використовували інші протоколи. Вказане MX таким чином дозволяє для записів DNS, які могли б визначити, як досягти такого хоста в іншій мережі, ніж Інтернет, наприклад, Chaosnet . На практиці, однак, цього майже не траплялося; практично всі переробили свої мережі, щоб натомість стати частиною Інтернету.

Сьогодні ситуація полягає в тому, що до хоста може бути досягнуто декілька протоколів (IPv4 та IPv6) та декількох IP-адрес у кожному протоколі. Один запис MX, можливо, не може перелічити більше однієї адреси, тому єдиним варіантом є вказівка ​​на хост, де потім можна переглянути всі адреси цього хоста. (В якості оптимізації продуктивності сервер DNS надсилатиме записи адрес для хоста у додатковий розділ відповідей, якщо він має авторитетні записи для них, зберігаючи зворотну поїздку.)

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


2
Це не дуже перешкоджає сумісності з IP-адресами; насправді більшість серверів / клієнтів SMTP прекрасно працюють з IP-адресами в записах MX з невеликих тестувань, які я зробив. Я думаю, що наміром було відмовити галузь від використання IP-адрес масово - що, швидше за все, могло б статися, якби це правило не було зазначено, а не на кожному конкретному випадку. Отже, "повинен", на відміну від "повинен". Хоча +1 за велику інформацію Я ніколи не задумувався над цим.
Зенексер

16
@Zenexer Закон про дорожній рух не існує для незручностей порівняно небагато експертних водіїв, які точно знають, що безпечно, а що ні. Вони існують через набагато більшу підгрупу чертовских ідіотів, які думають, що знають, що роблять, але не роблять.
Шадур

7
@Zenexer Ви можете виявити, що конкретний MTA переносить це сьогодні, а не завтра. Зрештою, це не поведінка, дозволена стандартом. І звичайно, не всі МТА підтримуватимуть це, тож це означає, що ви гарантовано втратите пошту.
Майкл Хемптон

1
@MichaelHampton: Якщо запис MX ПОВИНЕН містити ім'я хоста замість IP - адреси, то АПС повинен приймати IP - адреса. Гіпотетично, якщо запис MX ОБОВ'ЯЗКОВО містить ім'я хоста, то MTA ДОЛЖНЕ приймати IP-адресу. Ось так працює RFC. Контрагент по "ДОЛЖНІЙ" рекомендації щодо впровадження може оптимізувати припущення, що ця порада дотримується, але це майже все, що ви можете зробити з нею.
MSalters

2
@MSalters Я думаю, що ви розгублені. Я ніколи нічого не казав, ПОТРІБНО нічого. Дійсно, я сказав, що запис MX ОБОВ'ЯЗКОВО містить містити ім'я хоста, про що також говорять RFC.
Майкл Хемптон

18

DNS як протокол має деякі різні значення значень, вони не є взаємозамінними.

Важливо зауважити, що DNS - це двійковий протокол із чіткими відображеннями між типом запису та типом даних, який містить такий запис.

Наприклад: записи тримає адресу IPv4 (4 байта даних, фіксованої довжини). Запис займає IPv6 - адреси (16 байтів даних, фіксованої довжини).
A
AAAA

MXЗапис, з іншого боку, має ім'я (послідовність міток на форматі <int number of bytes> <label> <int number of bytes> <label> <int 0>, змінна довжиною).

Це не можливо для MXзапису , щоб мати IP - адреса в якості своїх даних.


Ви можете зробити мітку текстовим зображенням IP-адреси, але це не має сенсу, оскільки це не може бути вирішено як ім'я хоста.
Майкл Хемптон

@MichaelHampton Дійсно, можна назвати ім'я з усіма чисельними мітками, яке в звичайному представленні, сприятливому для людини, на перший погляд схоже на адресу IPv4. Це насправді нічого не змінює, якщо мова йде про запитання, так як це все-таки буде ім'ям і таким чином буде оброблятися як ім’я (ім'я, яке, принаймні, у загальнодоступному Інтернеті, просто буде NXDOMAIN).
Хокан Ліндквіст

Це насправді не відповідає на питання ОП. Ви в основному говорите "тому, що це так" .
dr01

@ dr01 Враховуючи, що питання чітко свідчить про те, що він не знає "таким, яким він є" ("ви не повинні вказувати MX-запис безпосередньо на IP-адресу, а натомість слід вказувати на запис A", коли це насправді не є можливістю мають будь-яке інше значення, ніж ім'я), я не думаю, що це не вірно вказувати на те, як все відбувається, і чому це робить будь-який інший варіант неможливим. У мене виникає відчуття, що ти багато читаєш у питанні, якого насправді немає.
Хокан Ліндквіст

@ dr01 Тобто, не думайте, що це запитання є академічним питанням щодо дизайнерських рішень у перші дні DNS або чогось подібного, а просто питання про те, як MXможна чи потрібно використовувати записи, які існують у світі.
Хокан Ліндквіст

6

Я викину це як здогад. Звичайно, я грипую вдома, так що, можливо, я пестливий.

RFC 974 заявляє:

Перший крок для поштового повідомлення в LOCAL - це запит на MX RR для REMOTE. Настійно закликаємо цей крок робити щоразу, коли поштова розсилка намагається надіслати повідомлення. Сподіваємось, що зміни в базі даних доменів швидко використовуватимуться електронними повідомленнями, і, таким чином, адміністратори домену зможуть перенаправляти повідомлення, що перебувають під час передачі, для несправних хостів, просто змінюючи їхні бази даних домену.

Вимагаючи імені замість IP, воно наполегливо заохочує цю практику. Імена можуть залишатися однаковими, і в разі балансування навантаження або DR вам не доведеться турбуватися про зміну самого запису MX та очікування розповсюдження DNS.


8
Відповідаючи на питання обміну стеками у ваш вихідний день, поки ви хворі на грип ... Я накидаю вам шапку, добрий пане!
Майк Б

3

Деякі сервери електронної пошти (наприклад, exim) спеціально не дозволяють надсилати записи MX, які вказують на чисту IP-адресу, тому вам потрібно використовувати FQDN, а не сумісність. Це тому, що більшість серверів очікують, що запис MX містить ім'я хоста, а не IP (саме для цього потрібні записи A).

Редагування: Щоб уточнити, у DNS кожен запис має суворі вимоги до типу даних, які може містити кожен запис. У разі MX записів, це ім'я хоста тільки .


То чому exim не дозволив записам MX вказувати в першу чергу на IP-адресу? Мені здається дивним! Я розумію, що не повинен через конвенцію, але не розумію, чому це незаконно .
денулолі

1
Я не бачу, як будь-який MTA може підтримувати це як MXзапис, можливо, не може мати IP-адресу як його значення.
Хокан Ліндквіст

@ HåkanLindqvist Ваша відповідь вище пояснила цей момент для мене! Дякую!
денулолі

2

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

Таким чином, поштовий сервер, що надсилає пошту, запитує RR запису MX, запис mx перераховує записи серверів, поштовий сервер здійснює пошук вперед, щоб отримати запис A, а потім пересилає пошту через smtp до хоста сервісу, вказаного як поштовий сервер "готовий" отримувати пошту для цього домену.

Ваше запитання - Чому не можна надіслати пошту на IP-адресу

Відповідь - через довіру

Багато правил, що діють стосовно пошти, склалися для того, щоб підтримувати довіру між доменами, що повідомлення, надіслані назад і назад, дійсно дійсні. Все це - в кінцевому рахунку зменшити СПАМ.

  • Зворотний пошук IP-адреси
  • Шукати ім'я вперед для цього питання

Усі ці найважливіші компоненти для створення поштового сервера мають принаймні якийсь невеликий компонент, створений для створення надійних комунікацій та зменшення ненадійного спілкування.

Довідково - RFC 1035 та 974

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

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


2

Мета 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записи)?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.