Как создать свой RBL (DNSBL) сервер

Что такое RBL (DNSBL)

Абрревиатура RBL расшифровывается как Realtime Blackhole List (Чёрный список реального времени), DNSBL состоит из известной многим аббревиатуры DNS - Domain Name System (Система доменных имён) + BL т.е. Black List (Чёрный список). Таким образом RBL и DNSBL - это фактически одно и то же, но в настоящий момент более популярным является всё-таки использование термина DNSBL, отражающего собой суть механизма создания чёрного списка

Зачем нужен DNSBL?

Механизм RBL или DNSBL может использовать в почтовых серверах, для блокировки адресов, с которых поступает спам. Таким образом, вам приходит меньше спама и вы экономите свой траффик (потому что проверка проводится до момента приёма самого сообщения на этапе установления соединения), нервы своих пользователей, которым спам уже наверняка сидит поперёк горла, а также процессорные мощности вашего сервера, который не будет анализировать принятое сообщение на спам, запуская разные спам-фильтры.

Зачем нужен свой DNSBL?

Да, в Интернете хватает и публичных DNSBL серверов. Вот некоторые из них:

  • sbl.spamhaus.org
  • bl.spamcop.net
  • list.dsbl.org
  • relays.ordb.org
  • dnsbl.sorbs.net
  • dnsbl.njabl.org

Однако, в случае использования одного из них вы никак не можете управлять данными, которые вам предоставляет такой сервер. Да и сами эти серверы имеют свойство исчезать. Например, на момент написания этой статьи list.dsbl.org прекратил свою работу.

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

Всё это заставляет подумать о создании своего собственного DNSBL, который находится рядом, не создаёт трафик, управляется вами и отвечает максимально быстро.

Как работает DNSBL?

По сути, сервер, реализующий механизм DNSBL является обыкновенным DNS сервером, в котором создана определённая DNS-зона и добавлены определённые записи. Конечно, для реализации DNSBL существуют специализированные DNS-серверы, заточенные под эту задачу, например: rbldns как часть проекта djbdns, или rbldnsd, но никто не мешает вам использовать для этой цели обычный bind (named), который в отличие от тех, специализированных серверов, вы можете использовать также параллельно как DNS-сервер, обслуживающий вашу организацию.

Итак, первое, что нужно сделать, создать зону (домен) в вашем DNS-сервере, с которым будет работать DNSBL и соответственно ваш почтовый сервер. Например dnsbl.ex.ru. (Разумеется ex.ru вам нужно заменить на домен, который обслуживает DNS-сервер вашей организации).

Теперь, создаём эту зону в конфигуационном файле BIND.

zone "dnsbl.ex.ru" in {
        type master;
        file "dnsbl.ex.ru.zone";
};

Если вы планируете использовать DNSBL с удалённых машин, озаботьтесь, чтобы с этих машин были необходимые права на запросы к BIND касательно этой зоны. А теперь собственно сам файл зоны (dnsbl.ex.ru.zone):

$TTL 86400      ; 1 day
@               IN SOA  ns1.ex.ru. dnsmaster.ex.ru. (
                        2004032201 ; serial
                        7200       ; refresh (2 hours)
                        5400       ; retry (1.5 hours)
                        1814400    ; expire (3 weeks)
                        86400      ; minimum (1 day)
                        )
                IN NS   ns1.ex.ru.
                IN A    xxx.xxx.xxx.xxx

55.33.222.10    IN A  10.222.33.55
                IN TXT "your address in black list"
54.33.222.10    IN A  10.222.33.54
                IN TXT "your address in black list"
; диапазоны
*.33.222.10     IN A  10.222.33.1
                IN TXT "IP range in black list, please use your provider SMTP server"
*.223.10        IN A  10.223.0.1
                IN TXT "IP range in black list, please use your provider SMTP server"

Где xxx.xxx.xxx.xxx замените на IP адрес вашего DNS-сервера.

Собственно вот и весь пример. Теперь после перезапуска BIND, чтобы он считал информацию, поясняю как это всё работает.

Если в настройках вашего почтового сервера в блоке настроек RBL (или DNSBL) указать сервер dnsbl.ex.ru, то почтовый сервер будет проверять IP адреса с помощью данного сервера. При этом запрашиваемое у DNSBL сервера имя будет представлять из себя IP адрес, записанный задом наперёд плюс суффикс домена, совпадающий с именем DNSBL сервера. Например, пусть осуществляется проверка адреса 10.222.33.55 через DNSBL сервер dnsbl.ex.ru. Тогда почтовый сервер, запросит у DNSBL сервера IP адрес для имени 55.33.222.10.dnsbl.ex.ru - внимательно посмотрите на файл, приведённый выше и вам должно стать всё понятно. Далее собственно не имеет значения какой IP адрес вернёт DNSBL сервер, главное наличие положительного ответа и тогда почтовый сервер будет считать, что адрес находится в чёрном списке.

Заключение

Разумеется, механизм DNSBL нельзя считать достаточным для фильтрации спама, но также можно с уверенность сказать о его безусловной пользе. Несмотря на то, что при использовании публичных DNSBL серверов в Интернете возможны и ложные срабатывания, но при нынешнем потоке спама, который растёт с каждым днём условия доставки уже меняются. Если раньше было наиболее важным не потерять хорошее письмо, даже если при этом придётся пропустить множество плохих, то сейчас даже сами пользователи прекрасно понимают ситуацию и предпочитают не получить 100 спамерных писем вместе с одним полезным.

Благодарности

Ralf D. Klot за статью http://www.kloth.net/internet/dnsbl-howto.php