Привет, коллеги! Знакомая история: письма от вашего сервера начали падать в спам, вы вбиваете свой IP в первый попавшийся онлайн-чекер, и он радостно сообщает — «вы в чёрных списках Spamhaus». Сердце ёкает, руки тянутся писать в поддержку хостера.
А теперь плохая новость про хорошие новости: очень часто это ложная тревога. Причём не потому, что сервис плохой, а из-за особенности, о которой почти никто не пишет. Мы наткнулись на неё, когда чинили собственный инструмент проверки — и обнаружили, что он показывал восемь несуществующих блокировок для заведомо чистого адреса.
Сегодня разберём, как DNSBL устроены на самом деле, как проверить IP руками так, чтобы не обмануться, что означают коды ответов, и что делать, если вы всё-таки попали в список по-настоящему.
Оглавление
- Как устроены чёрные списки DNSBL
- Проверка руками через dig и nslookup
- Что означают коды ответа 127.0.0.x
- Главная ловушка: 127.255.255.254
- Мёртвые списки, которые «находят» всех
- Какие списки действительно важны
- За что 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.2 | SBL — адрес замечен в рассылке спама |
127.0.0.3 | CSS — снежная рассылка, подозрительная активность |
127.0.0.4 — 127.0.0.7 | XBL — заражённая машина, открытый прокси, бот |
127.0.0.10, 127.0.0.11 | PBL — динамический адрес, с которого не должна идти почта |
Разница принципиальная. 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), чтобы протестировать все функции сканирования для безопасности вашего бизнеса.
Получить бесплатный триал
RU
English
Оставить комментарий