DNS и электронная почта. Делегирование DNS-домена на серверы Яндекса и подключение к бесплатной услуге Яндекса "Почта для домена"

4 февраля 2016 в 16:05

Самая базовая потребность: как мы реализовали DNS-хостинг в «Mail.Ru для бизнеса»

  • Блог компании Mail.ru Group

В прошлом году мы запустили бесплатный DNS-хостинг на «Mail.Ru для бизнеса», а недавно он вышел из бета-тестирования. Сегодня я хочу рассказать, как мы его делали, какие технические решения принимались, и немного о том, как мы запускались на всю аудиторию.

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

Выбор DNS-сервера

При выборе DNS-сервера мы ориентировались на скорость, потребляемые ресурсы и удобство работы. Очень хотелось, чтобы он умел работать с БД из коробки. Рассматривались BIND, NSD и PowerDNS.

BIND - самый популярный сервер, имеет хорошую документацию, и, наверное, можно найти ответ на любой вопрос по нему. Однако он не умеет работать с БД из коробки. Есть, конечно, DLZ-патч, но последнее обновление датируется 2013 годом. Не отличается высокой производительностью.

NSD - безусловный лидер по скорости и потребляемым ресурсам, но вот ни с чем, кроме файлов, он работать не умеет. На практике это значит, что нужно писать скрипт, который с периодичностью достает все записи из базы, пишет их в файл и делает reload NSD.

PowerDNS имеет хорошую производительность, умеренно использует ресурсы сервера. Имеет много полезных и не очень родных патчей. Умеет работать с PostgreSQL из коробки.

В конечном счете при выборе между высокой производительностью NSD и хорошей производительностью и простотой работы PowerDNS победил PowerDNS.

Работать с PowerDNS - одно удовольствие: вносишь изменения в БД, а он сам их подхватывает. К тому же, так как все данные берутся из базы, не приходится настраивать master-slave на стороне PowerDNS, а можно переложить их репликацию на базу.

История имен

Для подтверждения домена мы выдаем две NS-записи - например, moscow.ens.mail.ru и spb.ens.mail.ru. Откуда взялись города? Чтобы объяснить это, нужно сначала рассказать о задаче, которую мы пытались решить.

Мы стремились сделать регистрацию на «Mail.Ru для бизнеса» простой и удобной. Сейчас она работает следующим образом. Предположим, вы владеете доменом bestcompanyever.ru и хотите зарегистрироваться. Вы добавляете домен bestcompanyever.ru на нашем сайте, мы выдаем вам пару доменов для NS-записей. После того как вы их пропишете, вам станет доступно управление почтой и DNS-записями.

Однако возможна ситуация, когда два человека попытаются зарегистрировать bestcompanyever.ru в одно и то же время. Для таких случаев необходим алгоритм, который позволит выявлять настоящего владельца домена и выдавать ему права на управление почтой и DNS-сервером для этого домена.

Самое простое решение - выдавать имена в стандартном формате: dns1.mail.ru, dns2.mail.ru и т. д., а для идентификации использовать уникальное сочетание записей. Скажем, первому пользователю, добавившему bestcompanyever.ru, предлагается прописать dns7.mail.ru и dns23.mail.ru, а второму - dns3.mail.ru и dns84.mail.ru. Затем мы сверяем, какая пара NS-записей прописана для домена, и на основе этого определяем, кто истинный владелец. Казалось бы, отличная система - но есть нюанс. Часто пользователи, получив, например, dns3 и dns84 в качестве своих записей, прописывают и все остальные в этом диапазоне: dns3, dns4, dns5, dns6 и т. д. Никаких бонусов это не дает: единственное, что получает пользователь в результате таких действий, - это ошибка при верификации домена. Чтобы избежать таких ситуаций, мы выдаем имена, где последовательность неочевидна. Для этого мы задействовали названия городов. Сейчас у нас два списка по 50 городов.

Каждый, кто регистрируется в «Mail.Ru для бизнеса», получает одну запись из каждого списка. Это дает 2500 уникальных комбинаций, что гарантирует однозначную идентификацию владельца домена, даже если несколько человек пытаются зарегистрировать один домен.

После того как регистрация завершена, имена серверов теряют техническое значение. Независимо от того, по какому из адресов придет запрос, мы всегда отдадим запрашиваемые записи.

Перебор

Теоретически злоумышленник мог бы начать процедуры регистрации одного и того же домена под 2500 аккаунтами и получить все возможные вариации пар NS-имен. Когда пришел бы настоящий владелец домена и начал процедуру регистрации, ему досталась бы пара из уже занятых злоумышленником. И тогда после добавления их у регистратора и автоматической проверки мы активировали бы домен, зарегистрированный на злоумышленника.

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

Пользуясь случаем, хочу напомнить, что у Mail.Ru Group есть программа поиска уязвимостей . Если ты, пытливый читатель, найдешь баги в DNS-хостинге (как и в целом на biz.mail.ru), ты можешь заработать плюс в карму и денег, подав заявку.

Система фич

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

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

По окончании закрытого бета-тестирования мы начали открывать доступ к хостингу всем пользователям: сначала 10%, потом 50%, а через неделю - всем нашим клиентам.

Вместо заключения

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

А если вы еще не успели попробовать наш сервис - оставляйте комментарии. Первые 100 хабраюзеров получат промокод на регистрацию бесплатного домена в зоне.ru с подключенным сервисом почты и DNS.

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

Для простоты и сокращения количества букв мы рассмотрим простейшую (и наиболее распространенную) ситуацию:

1 доменное имя (example.com).
1 почтовый домен (*@example.com).
1 почтовый сервер (mail.example.com).
1 IP-адрес (127.127.127.127).

Касательно почты, в DNS нас интересует четыре типа записей.

Второй - желательный, без него почта будет отправлятся на А запись. Без остальных, в принципе, можно обойтись, но шансы, что ваше письмо будет отвергнуто как спам возрастают в разы - тот же mail.ru отбрасывает практически всю почту, чьи IP-адреса не имеют PTR, либо PTR относится к dial-up провайдерам. И это правильно.

A-запись

A (Address) - запись, указывающая IP-адрес нужного нам доменного имени. Для корректной работы почты требуется A-запись сервера почты (mail.example.com). Выглядеть, в нашем случае, она будет так:

mail IN A 127.127.127.127

Где:
mail - домен.
IN A - тип записи.
127.127.127.127 - IP нашего почтового сервера.

MX-записи.

MX (Mail eXchange) - основная DNS-запись для электопочты. Она указывает, какими серверами обрабатывается почта для нашего домена.

У нас есть один почтовый домен - @example.com. И один почтовый сервер - mail.example.com. Соответственно, запись будет выглядеть так:

example.com. IN MX 10 mail.example.com

Где:
example.com - домен, для которого обробатывается почта.
IN MX - тип записи.
10 - приоритет записи (Подробнее - ниже).
mail.example.com - A-имя почтового сервера.

MX-запись должна указывать именно на A-запись почтового сервера. Ставить MX указателем на IP или CNAME - не правильно.

Приоритет MX-записи нужен тогда, когда существует больше одного почтового сервера для одного домена (например у Google Mail их шесть). Он указывает, к какому серверу идет обращение в первую очередь, во вторую и так далее (если первый (второй, десятый) сервер недоступен или перегружен или по другим причинам не может принять письмо). Логика простая - приоритетнее тот, цифра которого меньше. Порядок цифр - не ограничен, хоть 10-20-30, хоть 1000-2000-3000.

Если у домена нет ни одной MX-записи, либо ни один из MX-серверов не доступен, сервер отправителя попытается доставить почту на IP, указанный в A-записи домена. Это назвается А-доставкой, но в принципе не кошерно и не используется многими серверами - нужно указывать MX, даже если он всего один.

PTR-запись.

PTR (PoinTeR) - так называемая «обратная запись». Она позволяет обратное разрешение (reverse resolving) IP-адреса в FQDN-хост.

Наш IP в виде reverse будет выглядеть так: 127.127.127.127.in-addr.arpa. В данном примере видно плохо, но адрес инвертируется в обратной зоне. Т.е. IP 192.168.0.1 будет выглядеть как 1.0.168.192.in-addr.arpa.

Для корректного распознования хоста, запись IP-адреса, с которого отправляется должна соответсовать hostname почтового сервера, отправляемому в HELO\EHLO.

PTR-запись в нашем случае, соответственно:

127.127.127.127.in-addr.arpa IN PTR mail.example.com.

Прописать эту запись может владелец блока IP-адресов (Читайте мою статью про распределение адресного пространства). Если вы таковым не являетесь и получили адреса от провайдера - обращайтесь к вашему провайдеру или дата-центру, чтобы запись установил он.

TXT-запись и SPF.

TXT (TeXT) - текстовая запись DNS. Нам она интересна только тем, что может (и в современном мире - должна) содержать в себе SPF.

SPF (Sender Policy Framework) - запись, позволяющая вам указать, какие сервера имеют право отправлять почту от имени вашего домена (представившись вашим сервером, либо с обратным адресом в вашем домене).

Если этой записи нет, и кто-то пытается отправить письмо (как правило, спам) с обратным адресом в вашем домене - оно будет отклонено большинством серверов. Или не будет, и вы получите большие проблемы со своим дата-центром или провайдером и репутацию спамера 🙂

SPF-запись выглядит так:

v=spf1 ip4:1.1.1.1 +a +mx -all (пример).

v=spf1 - версия протокола.
(+\-)a - разрешение или запрет отправки почты с IP, соответствующего A-записи домена.
(+\-)mx - разрешение или запрет отправки почты с IP, соответствующего MX-записи домена.
ip4:IP - явное указание IP, с которого можно принимать почту от имени домена.
(~\-all) - отвергать или принимать почту от IP, не перечисленных в списке и не указанных явно.

В нашем случае TXT SPF запись будет такой:

example.com. IN TXT «v=spf1 +mx +a -all»

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

Сегодня практически любой виртуальный хостинг в качестве дополнительной услуги предлагает возможность создания почтовых ящиков для вашего домена, однако удобство работы с такими ящиками иногда оставляет желать лучшего. Чтобы поднять качество работы с почтой домена можно воспользоваться бесплатным сервисом от Яндекс Почта для домена . Данный сервис позволяет привязать почту вашего домена к почтовым серверам Яндекс с возможностью создания до 1000 безлимитных почтовых ящиков с использованием всех преимуществ сервиса Яндекс.Почта , таких как автоматическая проверка антивирусом, спам фильтры, доступ через веб-интерфейс, доступ с мобильных устройств и через прямое подключение по протоколам SMTP/POP3/IMAP.

Одним из основных этапов настройки привязки домена к почтовой системе Яндекса является создание специальных записей в DNS-зоне вашего домена. Чтобы максимально упростить и автоматизировать данную процедуру, можно произвести делегирование домена на NS-серверы Яндекса, то есть фактически воспользоваться ещё одним бесплатным сервисом DNS-хостинг Яндекса .

В этой заметке мы поэтапно рассмотрим процедуру подключения почты домена к почтовым серверам Яндекса а также делегирование домена серверам Яндекса на примере нашего домена IT-KB.RU

Регистрируем аккаунт на Яндексе

Для работы с Почтой для домена необходим аккаунт Яндекса, используя который, мы в дальнейшем будем управлять почтой. На данный момент к каждому аккаунту можно подключить до 50 доменов. Зарегистрируемся и получим аккаунт Яндекс, если этого ещё не было сделано ранее.

Подключаем домен к Яндексу

После того, как мы авторизовались на сайте Яндекс используя созданный аккаунт, откроем cтраницу добавления домена , укажем имя нашего домена и нажмём кнопку Подключить домен .

После добавления домена, нам нужно будет подтвердить то, что мы являемся его владельцем. На веб-странице будет отображаться статус Домен не подтверждён и будет предложено три варианта действий, которыми мы сможем подтвердить владение доменом.

Из трёх предложенных вариантов я выбрал первый вариант с размещением файла в корневом каталоге сайта. После того, как указанный файл размещен, жмём кнопку Проверить владение доменом .

После успешной проверки нас перенаправят на страницу настройки MX -записи для нашего домена. Внести указанные изменения в DNS-зоне нашего домена можно как самостоятельно, так и автоматически, если выполнить делегирование домена на Яндекс. Учитывая то, что помимо MX-записи в нашем домене для полноценной поддержки почты Яндекс потребуется внести ещё несколько служебных SRV-записей, проще всего выполнить делегирование домена, в результате которого все нужные записи в DNS-зоне нашего домена будут созданы автоматически.

Пройдём по справочной ссылке делегировать домен на Яндекс и ознакомимся с информацией о том, как делегировать DNS-домен NS-серверам Яндекса. Здесь всё предельно просто. Переходим на DNS-хостинг, на котором в данный момент расположен наш доменом и правим записи NS-серверов. Поменяем текущие NS-серверы на dns1.yandex.net и dns2.yandex.net

Ждём некоторое время (может пройти от нескольких часов до двух суток), чтобы изменения разошлись по нейм-серверам интернета и проверяем результат, например, с помощью утилиты nslookup

Как видим, теперь нейм-серверами нашего домена являются серверы Яндекса, и мы можем вернуться к настройке почты для домена. Вернёмся на консоль управления почтой домена и увидим, что теперь статус домена изменился на Домен подключён и делегирован на Яндекс .

Откроем ссылку Редактор DNS и просмотрим автоматически добавленные и настроенные после делегирования домена записи для поддержки сервисов Яндекса - MX ,CNAME записи для указания почтового сервера, SRV (SPF , DKIM ) записи для поддержки сервисов почты и системы обмена сообщениями по XMPP.

Создадим новый почтовый ящик для нашего домена и ознакомимся с доступными возможностями по управлению ящиками


Бесплатный сервис от яндекса. Поддержка почтовых ящиков от вашего домена и поддержка ДНС вашего домена.

Почта для домена.

Вы можете создать 1000 почтовых аккаунтов от своего домена, которые вы сможете раздать своим друзьям, родственникам, знакомым или пользоваться сами.
Каждый такой почтовый аккаунт имеет свой отдельный доступ к вебинтерфейсу почты яндекса и имеет все те же функции почты яндекса.
Неограниченный объём почтового ящика.
Защиты от спама и вирусов.
Различные цветовые схемы интерфейса.
Доступ к почте по протоколам POP3/IMAP.
Доступ к почте с мобильных устройств.
Я.Онлайн на страницах Почты и т.д.

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

DNS-хостинг Яндекса

Кроме почты для домена Яндекс запустил бесплатную поддержку ДНС серверов для доменов. Это полноценный сервис Primary и Secondary. До этого момента в России не было бесплатных ДНС серверов, бесплатно их предлагали только в дополнение к платным услугам, например на платных хостингах или при поддержке домена в webnames. За пределами России есть бесплатные ДНС, но все они тормозные и глючные.

Комментарии

18.02.2011 mochalygin
Спасибо за ссылку!

07.07.2011 storms89
я абажаю яндекс:-*

06.03.2012 TIMUR
A kakoi domen propisivat .yandex.ru ili
kakoi?

21.05.2012 tengiz
а как сделать форму для регистрации на своем сайте? чтоб можно было почту регить

18.01.2013 Юрий
К сожалению Яндекс не может взять на себя поддержку только почты - Ему подавай Весь домен.

04.02.2013 Админ
18.01.2013 Юрий, что значит весь домен? Не нужен яндексу весь домен. Все работает нормально. У меня у самого почтой двух доменов рулит яндекс, а сайты находятся на других хостингах.

23.02.2013 Дмитрий
Яндекс отдался REG.ru. ~500 рублей домен стоит в зоне Ру.

12.01.2014 Иван
Перерыл весь инет. Не нашёл ни слова про услугу хостинга от яндекса. Конкретно, сколько места выделяется для домена, какое ПО стоит итд Что за развод??