Не надходить повідомлення від деяких відправників через конфігурацію DNS


9

Я помітив особливу поведінку домену моїх програм Google. Більшість листів надходить так, як ви очікували, але за певний період часу я прийшов до висновку, що повідомлення від певних відправників не проходять. Визначивши одного такого відправника, до якого не надходило повідомлення, я попросив його спробувати надіслати мені електронну пошту та надіслати відповідь "провал доставки" на мій звичайний gmail.

Відповідь на помилку доставки містила такий фрагмент:

----- Стенограма сеансу випливає -----
<myusername@GHS.L.GOOGLE.COM>... Відкладено: Час з'єднання вичерпано з ghs.l.google.com.

Це допомогло мені визначити проблему шляхом швидкого пошуку, який привів мене до цієї сторінки на довідковому форумі Google Apps. Дійсно, я перевірив запис DNS для свого домену та @встановив його на ghs.google.com. (CNAME), яким не повинно бути. Змінивши його на @ 74.125.93.121 (A)*, вирішено проблему.

Я розумію, що у випадках, коли пошта не надходила, моє доменне ім’я було замінено на це канонічне ім'я через пошук CNAME, тому пошту надіслали myusername@ghs.l.google.comзамість myusername@mydomain.com. Але чому це працювало для переважної більшості відправників? Чи використовували відправники, до яких не надходила пошта, якийсь інший протокол пошти, якісь дивні налаштування DNS чи що це може бути?

З того, що я міг бачити, досліджуючи проблему в Google, це, здається, є широко розповсюдженою проблемою (багато людей, які скаржаться на повідомлення електронної пошти з battle.net, не стали, був би одним із популярних прикладів), тільки те, що люди не здаються усвідомлювати, що проблема полягає в їх власних налаштуваннях DNS, а не в стороні відправників.

То як це можна пояснити?

* Я використовував цей IP через те, що я прочитав тут , але я думаю, що будь-який IP зробив би свою справу. Хтось може це підтвердити? Зауважте, що просто видалення @запису не вирішило проблему, її довелося змінити.

Відповіді:


12

З RFC 2821 "Простий протокол передачі пошти", розділ 5 "Роздільна адреса та обробка пошти":

Перший пошук шукає запис MX, пов'язаний з ім'ям. Якщо замість цього буде знайдено запис CNAME, отримане ім'я обробляється так, ніби воно було початковим іменем.

Взагалі, так працюють CNAME. Вони часто неправильно використовуються, неправильно розуміються та неправильно реалізуються. :-)

Якщо ваш домен je example.com, у вас, ймовірно, є записи MX, що вказують на звичайних хостів Google Apps.

example.com. MX 10 ASPMX.L.GOOGLE.COM.
example.com. MX 20 ALT1.ASPMX.L.GOOGLE.COM.
example.com. MX 20 ALT2.ASPMX.L.GOOGLE.COM.
example.com. MX 30 ASPMX2.GOOGLEMAIL.COM.
example.com. MX 30 ASPMX3.GOOGLMAILE.COM.
example.com. MX 30 ASPMX4.GOOGLEMAIL.COM.
example.com. MX 30 ASPMX5.GOOGLEMAIL.COM.

Здається, ви також мали такий запис:

example.com. CNAME ghs.l.google.com.

RFC 1034 "Концепції та засоби домену" зазначено в розділі 3.6.2 "Псевдоніми та канонічні імена" рекомендує проти цієї конфігурації:

Якщо RAME CNAME присутній у вузлі, інших даних не повинно бути; це гарантує, що дані для канонічного імені та його псевдонімів не можуть бути різними.

У випадку помилки, яку ви вставили, поштовий сервер та / або сервер DNS на кінці надсилання намагалися знайти записи MX для вашого домену, example.com, і знайшли CNAME, що вказує на ghs.l.google. ком. Потім він спробував знайти записи MX для ghs.l.google.com. На даний момент у домені немає записів MX, тому поштовий сервер перейшов би на запис A для ghs.l.google.com. Ця IP-адреса не прослуховувалась на порту SMTP, тому результатом є помилка "Час з'єднання вичерпано з ghs.l.google.com."

Видаливши запис CNAME, ви усунули проблеми з поштою. Ви можете зіткнутися з проблемами, якщо в кінці Google буде змінено IP-адресу, яку ви визначили на її місці.

Ви можете замість цього визначити ім'я для www.example.com:

www.example.com. CNAME ghs.l.google.com.

І запустіть невеликий веб-сервер на будь-якому IP, на який ви вказуєте example.com, який просто перенаправляє HTTP на http://www.example.com/

Дещо дивно, що це спрацювало так само добре, як це було. Закон Постеля отримує певний кредит там, я вважаю. :-)

Повернутися до RFC 1034 2.6.2:

CNAME RR викликають спеціальні дії в програмному забезпеченні DNS. Коли сервер імен не в змозі знайти потрібний RR у наборі ресурсів, пов’язаному з доменним іменем, він перевіряє, чи набір ресурсів складається із запису CNAME з відповідним класом. Якщо так, сервер імен включає відповідь запису CNAME у відповідь і перезапускає запит у доменному імені, зазначеному в полі даних запису CNAME. Єдиним винятком із цього правила є те, що запити, які відповідають типу CNAME, не перезапускаються.

Отже, у цьому випадку можна стверджувати, що DNS-сервер не повинен / слідкувати за CNAME під час пошуку MX, якщо не знайдено записів MX.

Під час надсилання пошти Sendmail та qmail (і, ймовірно, інші) намагаються за замовчуванням переписати будь-який CNAME, який використовується у правій частині електронної адреси, до канонічного імені.

Дійсно, деякі сайти покладалися на таку поведінку. djb детально описує, чому він вважає, що люди повинні припинити покладатися на це у своєму документі "Записи CNAME поштою" .


Дякую за цю вичерпну відповідь! :) Отже, підсумовуючи, ви б сказали, що причиною, чому він працював для одних, а не для інших відправників, є те, що вони використовують різні MTA, які слідкують за CNAME, незважаючи на записи MX, які, згідно з RFC 1034 2.6.2, можуть бути вважається неправильною поведінкою?

Я не впевнений, що назвав би поведінку "несправною". Конфігурація CNAME з іншими записами (MX, NS тощо) - це те, що було порушено / не рекомендується, і різні хости інтерпретували його по-різному.
Джефф

Це "взагалі так", але ти не впевнений, що ти назвав би поведінку неправдоподібною, чи я повністю пропустив суть?

Специфіка - це безлад, тому "взагалі так" :-)
jeff

MTA повинен запитувати домен після @адреси електронної пошти для записів MX і нічого іншого. Якщо вона отримана, вона повинна негайно спробувати доставку до одного з найнижчих записів MX. Якщо всі MX-сервери не зможуть підключитися або не знайдені записи MX, слід спробувати підключитися до самого домену. Про MTA, про який йдеться, очевидно, йде занадто далеко у вирішенні інформації або не дотримується правил визначення того, до якого поштового сервера потрібно підключитися. Не має нічого поганого в тому, щоб ваш домен вказував на CNAME - але для роботи електронних листів вам потрібні записи MX.
Елі Пісок

1

@Символ в BIND записи просто скорочений спосіб написання домену. Якщо ви створюєте запис для example.com, тоді @це лише псевдонім для example.com. Скажімо, що @запис повинен бути IP - це твердження, в якому відсутня важлива інформація - ви не сказали нам, що це за запис.

Звіт про доставку здається, що ви, можливо, щось зробили зі своїм DNS, щоб змусити віддалений поштовий сервер переписати ваш домен на ghs.l.google.com - дуже дивно (PS, запис A повинен бути IP, запис CNAME не повинно бути IP або іншим записом CNAME).

Чому цей поштовий сервер осіб переписує вашу адресу, дивно - це не повинно, якщо ця людина не зробила щось, щоб явно сказати, щоб переписати його. Це також не повинно хвилюватись, що таке IP вашого домену, якщо він не зміг знайти MX-записи, оскільки записи MX - це те, як поштові сервери визначають, куди відправляється пошта.

Мені здається, враховуючи дуже мало інформації, що ви не дотримувались інструкцій google про те, як правильно налаштувати свій DNS для електронної пошти. Можливо, у вашому зоновому файлі навіть є деякі помилки - перевірте їх компетентним адміністратором зони.


По-перше, я згадав, що @запис мав тип CNAME. По-друге, я використовую DNS, який надає Google при покупці, отже, я навіть не маю доступу до файлу зони. Я використовував налаштування за замовчуванням, які надає google. І останнє, але не менш важливо, "дуже мало наданої інформації", очевидно, було достатньо для того, щоб хтось компетентний дав корисну, задовільну та (на відміну від вашої власної) сердечну відповідь.

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