Привет, коллеги! Знакомая история: письма от вашего сервера начали падать в спам, вы вбиваете свой IP в первый попавшийся онлайн-чекер, и он радостно сообщает — «вы в чёрных списках Spamhaus». Сердце ёкает, руки тянутся писать в поддержку хостера.

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

Сегодня разберём, как DNSBL устроены на самом деле, как проверить IP руками так, чтобы не обмануться, что означают коды ответов, и что делать, если вы всё-таки попали в список по-настоящему.

Оглавление


Как устроены чёрные списки DNSBL

DNSBL — это чёрный список, который отдаётся через обычный DNS. Никакого API, никакой авторизации: вы делаете DNS-запрос, и по ответу понимаете, числится адрес в списке или нет.

Механика простая до изящества. Берём IP, переворачиваем октеты задом наперёд и приклеиваем домен списка:

IP:            203.0.113.10
перевёрнутый:  10.113.0.203
запрос:        10.113.0.203.zen.spamhaus.org

Дальше два варианта. Если A-запись существует — адрес в списке, и сам ответ (обычно что-то вида 127.0.0.x) говорит, за что именно. Если DNS отвечает «нет такого имени» — адрес чистый.

Именно поэтому проверка занимает миллисекунды и её можно делать прямо в почтовом сервере на каждое входящее письмо. И именно поэтому её так легко реализовать неправильно — о чём ниже.

Проверка руками через dig и nslookup

Никаких сайтов не нужно, всё делается одной командой. В Linux и macOS:

dig +short 10.113.0.203.zen.spamhaus.org A

В Windows то же самое через nslookup:

nslookup 10.113.0.203.zen.spamhaus.org

Пустой ответ — вас в списке нет. Если ответ есть, полезно сразу спросить TXT-запись: там обычно лежит человекочитаемая причина и ссылка на страницу удаления.

dig +short 10.113.0.203.zen.spamhaus.org TXT

Что означают коды ответа 127.0.0.x

Ответ — это не просто «да, в списке». Последний октет кодирует конкретную причину. У Spamhaus, например:

КодЧто означает
127.0.0.2SBL — адрес замечен в рассылке спама
127.0.0.3CSS — снежная рассылка, подозрительная активность
127.0.0.4127.0.0.7XBL — заражённая машина, открытый прокси, бот
127.0.0.10, 127.0.0.11PBL — динамический адрес, с которого не должна идти почта

Разница принципиальная. PBL — это не наказание: туда просто внесены пулы домашних и динамических адресов, и это нормальное состояние для домашнего интернета. А вот XBL означает, что с вашего адреса реально лезет что-то нехорошее — скорее всего, машина скомпрометирована.

Главная ловушка: 127.255.255.254

А теперь то, ради чего написана эта статья.

Крупные списки — и Spamhaus в первую очередь — отказываются обслуживать запросы, пришедшие через публичные DNS-резолверы. Google DNS, Cloudflare и им подобные шлют такой объём запросов, что бесплатный доступ для них закрыт.

Но отказ приходит не в виде ошибки. Приходит обычная A-запись — просто со специальным адресом из диапазона 127.255.255.0/24. Вот что мы получили, спросив у Spamhaus про заведомо чистый адрес через Cloudflare:

dig +short @1.1.1.1 182.235.202.116.zen.spamhaus.org A
127.255.255.254

dig +short @1.1.1.1 182.235.202.116.zen.spamhaus.org TXT
"Error: open resolver; https://check.spamhaus.org/returnc/pub/..."

Ответ есть — значит наивный чекер, который проверяет только «пришла ли A-запись», гордо покажет «в чёрном списке». Хотя в TXT прямым текстом написано: open resolver, то есть «мы не стали отвечать на твой запрос».

Проверить это легко: спросите у Spamhaus про 127.0.0.1 — адрес, которого в чёрных списках быть не может по определению. Через публичный резолвер вы получите тот же самый 127.255.255.254.

Отсюда правило: ответ, начинающийся с 127.255.255, — это не блокировка, а отказ в обслуживании запроса. Его нужно показывать как «проверить не удалось», а не как «вы в списке».

Мёртвые списки, которые «находят» всех

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

Мы прогнали заведомо чистый адрес по всем спискам, которые были у нас в наборе, и три зоны *.anti-spam.org.cn ответили адресами вида 208.98.43.37. Обратите внимание: это вообще не 127.0.0.0/8. Живой DNSBL всегда отвечает адресом из этой сети — всё остальное означает, что перед вами не чёрный список, а просто чей-то припаркованный домен.

Итог наших замеров на чистом IP: восемь «блокировок», из которых ни одна не была настоящей — четыре зоны Spamhaus и cbl.abuseat.org с кодом open resolver, плюс три мёртвых китайских списка.

Для сравнения, тот же алгоритм на заведомо «грязном» тестовом адресе 127.0.0.2 (его специально держат в списках для проверки) дал 17 честных срабатываний с корректными кодами — Barracuda, SpamCop, UCEPROTECT и другие. То есть отличить настоящую блокировку от мусора вполне реально, надо лишь смотреть на содержимое ответа, а не на сам факт его наличия.

Именно так теперь работает наша проверка IP в чёрных списках: служебные коды и ответы вне 127.0.0.0/8 помечаются отдельным статусом «проверка недоступна» и не засчитываются как блокировка.

Какие списки действительно важны

Списков сотни, но вес у них разный. На практике почтовые серверы ориентируются на несколько:

  • Spamhaus ZEN — сводный список, включающий SBL, XBL и PBL. Самый влиятельный: попадание сюда почти гарантированно ломает доставку почты.
  • SpamCop — работает по жалобам получателей, записи сами истекают через сутки-двое после прекращения активности.
  • Barracuda — используется в корпоративных фильтрах, требует регистрации для массовых запросов.
  • UCEPROTECT — особый случай, о нём стоит сказать отдельно.

UCEPROTECT имеет три уровня. Первый — про конкретный IP. Второй блокирует целую подсеть провайдера, третий — вообще весь ASN. То есть вы можете оказаться в списке второго уровня, не сделав ничего: достаточно, чтобы спамил сосед по дата-центру. Многие почтовые администраторы поэтому второй и третий уровни просто игнорируют, и правильно делают.

За что IP попадает в список

  • Скомпрометированный сервер. Взломанный сайт или подобранный пароль к почте — и с вашего адреса начинает уходить спам.
  • Открытый релей или открытый прокси. Классика: неправильно настроенный Postfix, которым тут же начинают пользоваться посторонние.
  • Рассылка по старой базе. Большой процент несуществующих адресов и жалоб — прямой путь в SpamCop.
  • Наследство. Взяли VPS с адресом, которым до вас пользовался спамер. Обидно, но лечится обращением в список.
  • Динамический пул. Домашний адрес в PBL — это норма, а не проблема, пока вы не пытаетесь слать с него почту напрямую.

Как выйти из чёрного списка

Порядок действий всегда один и тот же, и первый шаг — самый важный.

  • Сначала устраните причину. Если подать заявку на удаление, не разобравшись, вы вернётесь в список через день, а повторное попадание снимается тяжелее.
  • Проверьте, что уходит с сервера. Очередь Postfix (mailq), логи, исходящие соединения на 25-й порт от неожиданных процессов.
  • Закройте релей и обновите пароли. Заодно проверьте веб-формы отправки почты — их любят использовать для рассылок.
  • Настройте SPF, DKIM и DMARC. Это не удалит вас из списка, но резко снижает шанс попасть туда снова.
  • Подайте заявку на удаление. У Spamhaus и большинства крупных списков есть форма самообслуживания, ответ обычно приходит в течение суток.

Отдельно: не тратьте нервы на мелкие и мёртвые списки. Если вас «нашли» в зоне, о которой никто не слышал и которая отвечает адресом вне 127.0.0.0/8, на доставку почты это не влияет никак.

Выводы

Проверка IP в чёрных списках — это один DNS-запрос с перевёрнутым адресом, и сделать её можно одной строкой в терминале. Но читать результат нужно внимательно: смотреть не на факт ответа, а на его содержимое.

Запомнить достаточно три вещи. Настоящая блокировка — это ответ из 127.0.0.0/8, кроме диапазона 127.255.255.x. Ответ 127.255.255.254 означает, что список отказался отвечать вашему резолверу. А ответ вообще не из 127.0.0.0/8 означает, что списка больше не существует.

Если не хочется держать это в голове — наш чекер теперь различает все три случая сам. Чистых вам логов и доставленных писем!

Попробуйте ScaniteX бесплатно!

Автоматизированная платформа для сканирования открытых портов и обнаружения активных сервисов в режиме онлайн.

Начните 24ч пробный период (промокод FREE10), чтобы протестировать все функции сканирования для безопасности вашего бизнеса.

Получить бесплатный триал