Зачем: Использование техники
greylisting с помошью
postgrey является очень мощным оружием против спама. В процессе работы программа хранит и обрабатывет промежуточные данные в файле базы данных Berkeley DB. Со временем эта база разрастается и может содержать до мескольких десятков и даже сотен мегабайт. В составе дистрибутива postgrey нет утилиты для менеджмента этой базы, контроллировать её не представляется возможным. Дело в том, что в ней хранятся записи о бывших и существующих сессиях smtp и никуда не удаляются, только прибавляя в размере файлу базы данных. Однако в большинстве случаев в этой базе можно найти некоторое количество записей (напимер множество хостов домена *.domain.com), которые гораздо легче обработать другим ОБЩИМ способом, таким как, например, отказ всем хостам, содержащим в своём имени *.domain.com при помощи правил smtpd_*_restrictions. После этого такие записи из базы можно будет удалить. Таким образом мы снизим размер базы данных и время на работу с ней.
Как: Скриптом, который поможет «зачистить» базу postgrey, уменьшит её размер, ускорит работу.
Коментарии: Скрипт использует Socket и
Berkeley DB?. С первым модулем проблем не бывает, а вот второй придётся поставить (учитывая все его зависимости)
отсюда. Остальные каменты смотрите в самом скрипте.
Приступим:
- Скопируем сей скриптик в файл и сохраним, например с именем pg_manage.pl. Можно дать разрешение exec. Важно правильно указать путь к интерпретатору perl на вашем компьютере.
- Обязательно поправьте значение параметра -Filename! Он содержит имя и путь к файлу БД. Лучше тренироваться на копии этой базы, и временно указывать в скрипте альтернативное положение файла БД в параметре -Filename.
- Использование скрипта ясно из результата запуска его без параметров вообще.
- Рекомендую один раз вывести (в файл или на stdout) все хосты из вашей базы и потом подумать -что удалить, что оставить. Надо запустить с параметром `-s 0` – это выведет все хосты с количеством попыток более нуля, то есть все.
Каменты приветствуются!