Обратный DNS и email: PTR-запись и FCrDNS
Когда ваш сервер подключается к Gmail или Mail.ru, принимающая сторона видит только IP-адрес и спрашивает у DNS, какое имя за ним стоит. Ответ хранится в PTR-записи. Нет ответа или имя не сходится с тем, как сервер представился, и письмо начинает путь с минуса, а у Gmail может и вовсе получить отказ.
Прямой и обратный DNS: в чём разница
Прямой DNS (forward DNS) переводит имя в IP-адрес. Запрашиваете mail.example.com, получаете 198.51.100.25. Это A-запись, с ней сталкивался каждый, кто хоть раз настраивал домен.
Обратный DNS (reverse DNS, rDNS) идёт в другую сторону, от IP-адреса к имени. Вопрос уходит не в зону вашего домена, а в служебную: in-addr.arpa для IPv4 и ip6.arpa для IPv6. Ответ на него и есть PTR-запись.
# Прямой DNS: имя → IP $ dig A mail.example.com +short 198.51.100.25 # Обратный DNS: IP → имя $ dig -x 198.51.100.25 +short mail.example.com.
Прямую зону держит владелец домена. Обратную держит владелец блока IP-адресов, обычно хостинг-провайдер или дата-центр. Поэтому PTR не заводится там же, где MX и SPF, и за ней приходится идти к провайдеру.
Что такое PTR-запись
PTR (pointer record, запись-указатель) описана ещё в RFC 1035: она хранит доменное имя, на которое указывает адрес из обратной зоны. Для IP 198.51.100.25 запись лежит по имени 25.100.51.198.in-addr.arpa, октеты идут задом наперёд.
# PTR-запись в обратной зоне 25.100.51.198.in-addr.arpa. IN PTR mail.example.com.
В IPv6 адрес раскладывают на отдельные шестнадцатеричные цифры, нибблы, переворачивают и дописывают в конце ip6.arpa. Запись выходит длинной, но устроена так же.
Несколько PTR на один адрес DNS не запрещает. Проверка iprev из RFC 8601 в таком случае перебирает имена (не больше заданного числа) и ищет то, что ведёт обратно на исходный IP. Почтовому серверу всё же проще жить с одним именем: его же он называет в EHLO, его же вы потом ищете в заголовках.
Зачем PTR нужна для отправки email
Отправляющий сервер открывает SMTP-соединение и представляется командой EHLO (или HELO), называя своё имя. Принимающий видит IP, с которого пришло соединение, и может запросить для него PTR сразу, ещё до команды MAIL FROM, то есть раньше, чем дело дойдёт до SPF, DKIM и DMARC.
Крупные почтовые сервисы пишут об этом прямо. Google в правилах для отправителей требует от всех, а не только от массовых рассылок, чтобы у отправляющих IP были корректные прямая и обратная записи, и отдельно оговаривает, что имя из PTR должно разрешаться обратно в тот же адрес. Yahoo ставит прямую и обратную DNS-записи в список обязательных требований для всех. Mail.ru просит осмысленную PTR, а не сгенерированную автоматически: правильным у них считается mail.domain.com, неправильным 231.2.53.243.domain.isp.com.
Зачем фильтрам эта проверка? Заражённый домашний компьютер шлёт спам с адреса провайдера, у которого PTR либо нет, либо стоит шаблонное имя вроде pool-12-34-56-78.isp.net. У сервера, который настраивал администратор, имя осмысленное и ведёт на свой домен. Ещё в 1996 году RFC 1912 предупреждал, что многие службы в интернете не станут разговаривать с хостом, который неправильно зарегистрирован в DNS.
FCrDNS: проверка в обе стороны
Одной PTR мало. Получатель обычно проверяет FCrDNS (forward-confirmed reverse DNS) в два шага.
- Обратный запрос: для IP
198.51.100.25PTR возвращаетmail.example.com. - Прямой запрос: A-запись
mail.example.comвозвращает198.51.100.25.
Совпал IP на выходе с исходным, значит проверка пройдена и владелец адреса с владельцем домена говорят об одном и том же сервере. В заголовке Authentication-Results этот тест называется iprev, его результаты (pass, fail, temperror, permerror) определены в RFC 8601.
# Шаг 1: обратный запрос (PTR) $ dig -x 198.51.100.25 +short mail.example.com. # Шаг 2: прямой запрос (A) $ dig A mail.example.com +short 198.51.100.25 # IP совпал → FCrDNS пройдена
Провал выглядит так. Адрес называет себя mail.example.com, а mail.example.com указывает на другой IP. Или PTR нет совсем, и тогда iprev вернёт permerror. В RFC 8601 сказано, что сервер часто просто отклоняет соединение, которое не прошло этот тест; другие записывают результат и учитывают его в оценке письма.
С именем из EHLO история отдельная. RFC 5321 разрешает серверу сверить его с IP клиента, но запрещает отказывать в приёме письма только из-за расхождения. Учитывать его как один из сигналов при этом никто не мешает, так что имя в EHLO лучше держать равным PTR.
Когда PTR и FCrDNS ломаются: типичные сценарии
Сломать обратный DNS проще, чем кажется. Часто хватает одного переезда.
- PTR не настроена. Сервер арендован, почта настроена, а PTR у провайдера никто не запросил. Обратный запрос приходит пустым, и письмо уже не выполняет требований Gmail и Yahoo.
- Имя по умолчанию от хостера. Провайдер сам прописал что-то вроде
vps12345.hosting.provider.net. Формально запись есть, но сmail.yourdomain.com, которым сервер представляется в EHLO, она не совпадает. Yahoo к тому же просит, чтобы обратная запись так или иначе отражала ваш домен. - PTR есть, но A-запись не совпадает. Вы переехали на новый IP, обновили A-запись и забыли попросить хостера поправить PTR. Обратный DNS по-прежнему называет правильное имя, но прямой ведёт уже на новый адрес, и FCrDNS не сходится.
- PTR на одном поддомене, EHLO на другом. PTR возвращает
smtp.example.com, а сервер в EHLO представляется какmail.example.com. Домен второго уровня один, но часть фильтров засчитает это как несоответствие. - Динамический IP. Домашние и офисные подключения получают адреса из пула, и PTR у них шаблонная: цифры IP прямо в имени плюс слова вроде dynamic, dhcp, dsl, pool или client. Mail.ru прямо запрещает соединения со своими MX с динамических адресов и адресов домашних сетей.
Как проверить PTR: dig, host, nslookup
Хватит пары команд. dig и host входят в набор утилит BIND, в Debian и Ubuntu их ставит пакет dnsutils. nslookup есть и в Windows.
dig
# Обратный запрос по IP $ dig -x 198.51.100.25 +short mail.example.com. # Полный вывод с TTL и секцией authority $ dig -x 198.51.100.25 # Через конкретный резолвер $ dig -x 198.51.100.25 @8.8.8.8 +short
Флаг -x включает обратный запрос. Переворачивать октеты и дописывать in-addr.arpa руками не нужно, dig сделает это сам.
host и nslookup
$ host 198.51.100.25 25.100.51.198.in-addr.arpa domain name pointer mail.example.com. # Windows и любая система без dig > nslookup 198.51.100.25
host сам понимает, что ему дали IP, и делает обратный запрос. Вывод в одну строку, в скриптах это удобно.
Полная проверка FCrDNS за три команды
# 1. Узнаём PTR для IP вашего почтового сервера $ dig -x 198.51.100.25 +short mail.yourcompany.com. # 2. Проверяем A-запись для полученного имени $ dig A mail.yourcompany.com +short 198.51.100.25 # 3. IP совпадает с исходным → FCrDNS пройдена # Если IP другой или ответ пустой → проблема
Повторяйте проверку FCrDNS после любых перемен в инфраструктуре: переезд сервера, новый IP, смена хостера. Сама по себе FCrDNS не ломается. Ломается она тогда, когда IP или PTR поменяли, а вторую сторону оставили как была.
Как настроить PTR-запись
В панели DNS вашего домена (Cloudflare, Namecheap, REG.RU) PTR для своего сервера не создать, потому что обратная зона принадлежит владельцу IP-блока. Порядок такой.
- Определите IP почтового сервера. Нужен тот адрес, с которого реально уходят письма. Если шлёте через ESP, PTR на его адресах уже настроил он.
- Найдите настройку у хостинг-провайдера. У многих хостеров в разделе IP-адресов или сети есть поле Reverse DNS (rDNS). Поля нет, пишите в поддержку.
- Впишите имя почтового сервера. Например,
mail.yourcompany.com. Это имя сервер должен называть и в EHLO. - Проверьте, что A-запись ведёт на тот же IP. В DNS домена
mail.yourcompany.comдолжен разрешаться в адрес, для которого заведена PTR, иначе FCrDNS не сойдётся. - Дождитесь обновления. Провайдер обычно применяет запись быстро, но резолверы могут держать старый ответ в кэше, пока не истечёт его TTL. Проверяйте
dig -xчерез внешний резолвер.
Что должно совпадать
EHLO hostname (настройка SMTP-сервера) → mail.yourcompany.com
PTR-запись (обратная зона, хостер) → mail.yourcompany.com
A-запись (прямая зона, ваш DNS) → 198.51.100.25 (тот же IP)
Три значения образуют цепочку: EHLO = PTR, A(PTR) = исходный IP. Это и есть FCrDNS.
PTR при использовании ESP или облачного SMTP
Если вы отправляете через сервис рассылок (Mailgun, Amazon SES, Postmark, Sendsay, Unisender), PTR на его IP-адресах настраивает он. От вас нужны SPF, DKIM и DMARC для своего домена. PTR в этой схеме подтверждает инфраструктуру ESP, а SPF и DKIM подтверждают, что ESP вправе слать почту от вашего имени.
Свой SMTP-сервер (Postfix, Exim, Microsoft Exchange на своём железе или VPS) совсем другое дело. Тут PTR целиком на вас, и без неё письма с сервера выглядят подозрительно ещё до того, как получатель увидит текст.
PTR для IPv6
Принцип тот же, запись длиннее: IPv6-адрес раскладывают по нибблам в обратном порядке и помещают в зону ip6.arpa.
# Обратный запрос для IPv6 $ dig -x 2001:db8::25 +short mail.example.com.
Если сервер шлёт почту по IPv6, PTR нужна и IPv6-адресу. Gmail отвечает на такие письма ошибкой 550-5.7.1: Message does not meet IPv6 sending guidelines regarding PTR records and authentication. Google советует тем, кто шлёт через ESP, уточнить у него, есть ли PTR у IPv6-адресов.
PTR в контексте SPF, DKIM и DMARC
SPF, DKIM и DMARC проверяют отправителя на уровне домена, PTR проверяет IP-адрес на уровне инфраструктуры. Слои разные и друг друга не заменяют.
Пройти SPF и DKIM с пустой PTR можно, и у получателя без жёстких ограничений такое письмо может дойти. Только у Gmail и Yahoo обратная запись входит в обязательные требования, а сервер на Postfix с ограничением reject_unknown_reverse_client_hostname откажет такому клиенту раньше, чем дойдёт до подписи.
Обратный случай тоже не спасает. PTR на месте, FCrDNS проходит, а SPF и DKIM нет. Google и Yahoo требуют от всех отправителей хотя бы SPF или DKIM, а от массовых ещё и DMARC.
Уровни аутентификации почтового сервера
PTR и FCrDNS подтверждают, что IP принадлежит заявленному серверу
SPF подтверждает, что IP вправе отправлять почту за домен
DKIM подписью защищает письмо от подмены
DMARC связывает SPF и DKIM с доменом в From и говорит, что делать при провале
Чек-лист: частые ошибки с PTR
- Шаблонное имя в PTR. Имена вида
12-34-56-78.static.provider.netформально проходят rDNS-проверку, но Yahoo и Mail.ru прямо просят не использовать сгенерированные имена. Берите имя из своего домена. - Несколько PTR для одного IP. DNS это допускает, iprev переберёт имена. Но имя в EHLO одно, и с каким из вариантов его сравнит конкретный фильтр, заранее не скажешь.
- EHLO отдаёт localhost или имя от хостера. Postfix берёт имя для EHLO из параметра
myhostname, а тот по умолчанию равен имени машины. На свежем VPS это нередкоlocalhostили что-то вродеvps12345, и с PTR оно не совпадёт. - Забыли про IPv6. Сервер работает и по IPv4, и по IPv6, а PTR завели только для IPv4. Соединения по IPv6 проверку не проходят, и Gmail их отклоняет.
- Сменили сервер, не обновили PTR. При переезде на новый IP заведите PTR у нового хостера, обновите A-запись, проверьте имя в EHLO и только потом переключайте отправку.
Как увидеть результат проверки PTR в заголовках письма
Откройте доставленное письмо и посмотрите заголовки (в Gmail: три точки → «Показать оригинал»). Нужна строка Received:, которую добавил принимающий сервер.
Received: from mail.yourcompany.com (mail.yourcompany.com. [198.51.100.25])
by mx.google.com with ESMTPS id ...
for <user@gmail.com>;
Tue, 20 May 2026 10:15:32 -0700 (PDT)После from стоит имя, которое ваш сервер назвал в EHLO. В скобках принимающий сервер пишет то, что нашёл сам: имя по PTR и IP. Имена совпали, значит обратная запись на месте. Если в скобках только IP или слово unknown, как пишет Postfix, то PTR нет или она не разрешается.
Строка Authentication-Results: собирает результаты SPF, DKIM и DMARC. Серверы, которые проверяют FCrDNS, добавляют туда и iprev=pass или iprev=fail.
PTR и SMTP-проверка адресов
Валидатор, проверяя адрес, находит MX-записи домена получателя, подключается к его почтовому серверу и спрашивает, есть ли такой ящик. PTR сервера получателя на результат не влияет. Зато PTR того, кто проверяет, влияет напрямую, ведь для принимающего сервера валидатор такой же клиент, как любой отправитель.
В Postfix для этого есть два ограничения. reject_unknown_reverse_client_hostname отказывает клиенту без PTR, а более строгое reject_unknown_client_hostname требует ещё и сходящейся FCrDNS. По умолчанию Postfix отвечает на них кодом 450, и вместо ответа о ящике проверяющий получает временный отказ, а адрес остаётся непроверенным.
Поэтому в uChecker у каждого IP-адреса, с которого идёт SMTP-проверка, своё имя для EHLO, и оно должно совпадать с обратной записью этого адреса. Общее имя на все адреса сломало бы FCrDNS у всех, кроме одного.
Источники
- Google: правила для отправителей писем на Gmail
- Yahoo: требования к отправителям
- Mail.ru: технические требования к рассылкам
- RFC 1035, раздел 3.3.12: PTR-запись
- RFC 1912, раздел 2.1: соответствие прямой и обратной записи
- RFC 5321, раздел 4.1.4: проверка имени в EHLO
- RFC 8601, раздел 3: метод iprev
- Postfix: reject_unknown_reverse_client_hostname
PTR на месте, следующей на очереди база. Загрузите список в uChecker: сервис проверит каждый адрес и разложит их на good, bad и unknown. Первые 100 проверок бесплатно.
Марк Аврилов · Автор материала
Опубликовано Обновлено
