И заключается он в том, чтобы обращаться к DNSBL напрямую. =)
Делается это просто, вот пример:
host -t TXT 4.3.2.1.xbl.spamhaus.org
тут 4.3.2.1 - это IP адрес задом наперед, а xbl.spamhaus.org - один из многочисленных DNSBL =)
В результате получим ответ:
Host 4.3.2.1.xbl.spamhaus.org not found: 3(NXDOMAIN)
что говорит о том, что хост с IP адресом 1.2.3.4 в этой базе не числится.
А если сделаем такой запрос:
host -t TXT 79.35.217.90.xbl.spamhaus.org
то получит ответ:
79.35.217.90.xbl.spamhaus.org descriptive text "http://www.spamhaus.org/query/bl?ip=90.217.35.79"
что явно указывает, что это IP адрес числится в спам базе. Даже ссылку дают, куда надо сходить в гости, чтобы тебя пожалели и удалили твой IP из этой спам базы :)
Человек по "имени" darkk (
http://darkk.net.ru/) поделился со мной замечательной ссылкой
http://www.robtex.com/. Замечательна она тем, что этот сайт знает более 100 DNSBL и, естественно, позволяет проверить свой IP. Но кому будет оходта заходить каждый день на этот сайт, вбивать свой IP и ждать результатов? Естественно хочется этот процесс как можно лучше автоматизировать и забыть про это дело. А вспоминать, только тогда, когда IP, какого-то фига, попал в какую-то спам базу.
Вот для этого я и написал этот скрипт.
Вот что он умеет:
Использование:
spam-check [-u] [[-e] [-g] [-s]] | [-v] | [-q] -p IP [IP2 [... [IPn]]]
spam-check -i input_file [-u] [[-e] [-g] [-s]] | [-v] | [-q] -p IP [IP2 [... [IPn]]]
spam-check -a dnsbl [-u] [[-e] [-g] [-s]] | [-v] | [-q] -p IP [IP2 [... [IPn]]]
spam-check -d [-u]
-u - Разрешить запуск скрипта от root'а
-e - Показывать сообщения об ошибках
-g - Показывать успешные проверки (НЕ СПАМ)
-s - Не показывать не успешные проверки (СПАМ)
-v - Выводить все
-q - Ничего не выводить
-p - IP адрес (можно указывать несколько IP, через пробел)
-i - Файл со списком dnsbl-серверов
-a - Проверить по указанному dnsbl
-d - Вывести список всех dnsbl-серверов
-V - Вывести версию
-h - Показать справку
Особенности:
1. По умолчанию выводятся только не успешные проверки (СПАМ)
2. -g, -e и -s можно комбинировать.
3. -g, -e и -s нельзя использовать одновременно с -v и -q.
4. -v и -q одновременно использовать нельзя.
5. -p IP [IP2 [... [IPn]]] должен быть последним параметром.
6. -q абсолютно ничего не выводит.
7. Скрипт всегда возвращает следующие коды звершения:
0 - данного IP в спам базе нет;
1 - данный IP присутствует в спам базе;
255 - ошибка в параметре, запрошена справка/версия;
ошибки ответов от серверов не влияют на код завершения.
8. Если задано несколько IP и хоть один из них окажется хоть в кой-то спам базе, то код завершения будет равен 1.
В общем думаю тут и так все понятно. Скажу только, что ключ "-i" сделал на случай, если сервер
http://www.robtex.com/ по какой-то причине откажется отдавать скрипту список DNSBL-серверов. А сохранить этот список предварительно можно так:
spam-check -d > dnsbl.list
или взять
тут. А скрипт можно взять
тут.
Если будут просьбы, сделаю порт для винды.
ЗЫ: Хочу выразить благодарность:
slash - указал на досадную ошибку с psbl.surriel.com (0.1.x)
Tenno Seremel - помог с правильным запросом для wget (0.1.x)
ramok - помог многими советами (wget, sed, dnsbl, printf) (0.1.x & 0.2.x)
darkk - помог с документацией по dnsbl и поделился ссылкой на сайт
http://www.robtex.com/, указал на mktemp (0.2.x)
UPD: Добавил mktemp и защиту от запуска под рутом, а т.ж. опцию -u для разрешения запуска под рутом.
UPD: Последнюю версию скрипта можно взять тут ->
https://code.google.com/p/spamcheck/