И заключается он в том, чтобы обращаться к 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/