Как правильно настроить DNS-записи для мультидоменного почтового сервера

  • Автор:

multidomain-email-dns-000.pngСистемы электронной почты крайне чувствительны к правильной настройке DNS и этот момент часто вызывает затруднения у начинающих администраторов. Еще больше вопросов возникает если почтовая система обслуживает сразу несколько доменов. Чтобы каждый раз не отвечать одно и тоже, а также чтобы окончательно расставить все на свои места мы решили написать эту небольшую статью. Надеемся, что после ее прочтения у вас не возникнет трудности с настройкой DNS-записей для мультидоменной системы электронной почты.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

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

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

Если вы не знаете где размещена зона, то выполните команду:

nslookup -type=ns example.com

где example.com - интересующий домен, в выводе вы получите сервера имен обслуживающие зону и по ним уже сможете определить, где и у кого она расположена.

В нашем примере мы будем рассматривать следующую схему:

multidomain-email-dns-001.pngВ которой присутствую следующие домены:

  • example.com - основной домен
  • example.org - дополнительный домен
  • example.net - дополнительный домен

Все эти домены обслуживает единственный почтовый сервер:

  • mail.example.com - полностью определенное имя домена (FQDN) почтового сервера
  • 198.51.100.25 - IP адрес почтового сервера

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

Настройка DNS-зоны основного домена

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

mail IN A 198.51.100.25

Обратите внимание, что мы указали относительное имя, поэтому оно автоматически будет дополнено суффиксом из названия доменной зоны, т.е. запись будет указывать на:

mail.example.com

Абсолютное DNS-имя всегда оканчивается на точку, в противном случае оно будет считаться относительным. Распространенная ошибка:

mail.example.com IN A 198.51.100.25

Такая запись на самом деле будет указывать на узел:

mail.example.com.example.com

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

Итак, мы добавили A-запись, что нам это дает? Данная запись поможет любому желающему узнать IP-адрес нашего почтового сервера mail.example.com.

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

@ IN MX 10 mail

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

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

@ IN TXT "v=spf1 +a +mx ~all"
mail._domainkey TXT "v=DKIM1; k=rsa; p=<публичный ключ example.com>"
_dmarc TXT "v=DMARC1; p=none; rua=mailto:report@example.com"

Мы не будем подробно разбирать содержание этих записей, если коротко, то:

  • SPF - позволяет указать узлы, которые имеют право отправлять почту от имени нашего домена, в данном случае это A-запись, MX-запись, остальные скорее всего такого права не имеют.
  • DKIM - открытый ключ позволяющий проверить подлинность электронно-цифровой подписи письма
  • DMARC - набор политик, определяющий правила проверки по SPF и DKIM и позволяющий получать отчеты о таких проверках со стороны получателя.

Более подробно все эти записи рассмотрены в нашей статье:

Настраиваем свой почтовый сервер. Что нужно знать. Ликбез

В целом вроде бы все, но есть одна тонкость, связанная с SPF, так как сервер у нас для всех доменов один, то нормальной практикой будет использовать для всех доменов один и тот-же набор SPF записей, через include или redirect, но как быть, если в основном домене появляется собственный отправитель, которого в других доменах быть не должно? Чтобы избежать таких ситуаций добавим еще одну SPF-запись, которая не будет использоваться в текущем домене, но на которую мы сможем ссылаться из доменов дополнительных:

_spf IN TXT "v=spf1 +a +mx ~all"

Теперь, если у нас, допустим появился новый узел, отправляющий почту box.example.com, то просто делаем так:

@ IN TXT "v=spf1 +a +a:box.example.com +mx ~all"
_spf IN TXT "v=spf1 +a +mx ~all"

На этом настройка DNS-зоны основного домена закончена. Если коротко, то вы должны добавить A-запись для узла почтового сервера, MX-запись, указывающую на почтовый сервер и SPF, DKIM и DMARC записи.

Настройка PTR-записи

Дочитав до конца предыдущего раздела, внимательный читатель мог воскликнуть: позвольте, как так закончена, а PTR? Так вот, PTR не имеет никакого отношения к настройке DNS-зоны основного домена. Скажем больше, технически эта запись никак не влияет на процессы отправки и получения почты, т.е. говоря проще - вообще не нужна, все будет прекрасно работать и без нее.

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

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

Обратите внимание, PTR-запись создается не для домена, а для конкретного узла-отправителя, которым в нашем случае является сервер mail.example.com и неважно сколько еще и каких доменов он обслуживает.

В общем виде PTR-запись должна выглядеть примерно так:

25.100.51.198 IN PTR mail.example.com.

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

Настройка DNS-зоны дополнительных доменов

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

@ IN MX 10 mail.example.com.

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

Если вы используете веб-доступ к почте и хотите, чтобы пользователи использовали адрес в собственном домене, например, mail.example.net, то добавьте еще одну запись псевдонима:

mail CNAME mail.example.com.

DKIM и DMARC записи в каждом дополнительном домене будут собственные:

mail._domainkey TXT "v=DKIM1; k=rsa; p=<публичный ключ example.net>"
_dmarc TXT "v=DMARC1; p=none; rua=mailto:report@example.net"

А вот SPF имеет свои особенности, если отправитель в данном домене один, только этот почтовый сервер, то мы можем сослаться на SPF-записи основного домена, это будет наиболее правильно, так как позволит централизованно управлять SPF-записями:

@  IN TXT "v=spf1 redirect=_spf.example.com"

Но как быть, если нужно добавить собственных отправителей? Тогда вместо перенаправления используем включение:

@ IN TXT "v=spf1 +a:shop.example.net  include=_spf.example.com"

В этом случае к собственным записям будут добавлены записи из основной доменной зоны.

Больше никаких дополнительных записей в дополнительных зонах делать не нужно. Краткий итог: вы должны создать MX-запись, которая будет указывать на доменное имя реального почтового сервера, при желании CNAMЕ для используемых сервисов, наподобие веб-почты. DKIM и DMARK указываем собственные, а SPF подключаем от основного домена.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments