Системы электронной почты крайне чувствительны к правильной настройке DNS и этот момент часто вызывает затруднения у начинающих администраторов. Еще больше вопросов возникает если почтовая система обслуживает сразу несколько доменов. Чтобы каждый раз не отвечать одно и тоже, а также чтобы окончательно расставить все на свои места мы решили написать эту небольшую статью. Надеемся, что после ее прочтения у вас не возникнет трудности с настройкой DNS-записей для мультидоменной системы электронной почты.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Что такое мультидоменная система электронной почты? Это почтовый сервер (или группа серверов), которые осуществляют прием и отправку почты сразу для нескольких доменов, которые могут быть как связаны, так и не связаны между собой. Например, вы можете на своем сервере разместить почту соседней организации, домен которой вам не пренадлежит, все что потребуется от ваших соседей - это правильно настроить DNS.
Где нужно делать эти настройки? На сервере имен, обслуживающем DNS-зону, это могут быть сервера регистратора, хостера, публичные или собственные. Будем считать, что вы знаете где это делается и как и не будем заострять на этом внимание.
Если вы не знаете где размещена зона, то выполните команду:
nslookup -type=ns example.com
где example.com - интересующий домен, в выводе вы получите сервера имен обслуживающие зону и по ним уже сможете определить, где и у кого она расположена.
В нашем примере мы будем рассматривать следующую схему:
В которой присутствую следующие домены:
- 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.
Последние комментарии