Белые списки для CGP
Наравне с технологией DNS blacklisting (DNSBL) существует технология DNS whitelisting (DNSWL). Это списки ip-адресов, хранимые с использованием системы архитектуры DNS. Но в отличии от «чёрных списков»(blacklist), которые хранят ip-адреса распространителей спама, «белые списки»(whitelist) хранят ip-адреса тех, кто в рассылках спама не замечен.
Основная идея «белых списков» — уменьшить количество ложных срабатываний остальных антиспам фильтров.
Мне показалось, что наиболее полную базу «белых адресов» имеет ресурс dnswl.org. Этот ресурс, помимо самого факта «чистоты» ip-адреса, хранит так же уровень этой чистоты(Trust Level).
Всего уровней четыре:
- High – никогда не рассылал спам;
- Medium – крайне редки случаи спама, быстро реагируют на проблемы;
- Low – иногда рассылают спам, активно реагируют на проблемы, но менее оперативно;
- None – легитимный почтовый сервер, но может рассылать спам.
Применение этого белого списка может быть таким:
- не применять технологию «серых списков» для всех ip-адресов с уровнями None-High;
- не применять технологию «черных списков» для всех ip-адресов с уровнями None-High;
- не проверять письма на спам (или проверять в меньшей степени) для ip-адресов с уровнями Medium-High.
Вся остальная почта с адресов, которых нет в DNSWL, пройдёт полную проверку.
Для CGP я написал dnswl-cgp.c фильтр (cgp helper), который делает запрос в DNSWL и добавляет в сообщение заголовок: «X-DNSWL-Status: <Trust Level>».
Параметры запуска:
dnswl-cgp -q -w list.dnswl.org
Usage: dnswl-cgp [options] -w zone_name1[:zone_name2] -w : specify dns whitelist zone name(s) (in DNSBL format) -q : don't add any header on Skip messages -m : mail header name, default=X-DNSWL-Status -h : print this help message
(параметр «-q» запрещает добавлять «X-DNSWL-Status» заголовок, если ip-адреса нет в DNSWL, что ускоряет обработку сообщений)
Возможный сценарий для CGP:
- В CGP переключить настройку «Messages from Blacklisted IP Addresses» в режим «Add Header» и прописать ваш заголовок:
X-DNSBL-Status: ^1 blacklisted(^0)
- Сделать серверное правило с самым высоким приоритетом, что бы все сообщения проходили через dnswl-cgp фильтр.
Source not in trusted,authenticated Any Route in LOCAL(*,LIST(* ExternalFilte DNSWL
- Следующее правило должно анализировать наличие вашего «Blacklisted» заголовка и отвергать все blacklisted сообщения, если в них нет DNSWL заголовка нужного уровня, например:
Header Field is X-DNSBL-Status:*blacklisted* Header Field not in X-DNSWL-Status:*High,X-DNSWL-Status:*Medium,X-DNSWL-Status:*Low,X-DNSWL-Status:*None Reject Your IP address is blacklisted by DNSBL
- В правило для «серых списков» так же можно добавить условие на присутствие DNSWL заголовка нужного уровня, например:
Header Field not in X-DNSWL-Status:*High,X-DNSWL-Status:*Medium,X-DNSWL-Status:*Low,X-DNSWL-Status:*None
- Добавить в остальные антиспам правила условие:
Header Field not in X-DNSWL-Status:*High,X-DNSWL-Status:*Medium
Для исключения подделок этого заголовка, можно в самoм правиле DNSWL проверять нет ли там уже этого хэдера и как-то на это реагировать. Или изменить имя этому хэдеру (параметр -m) на любое другое.
И никогда не отменяйте проверку сообщений на вирусы.
Статистика за сутки:
- не найдено в DNSWL: 116206
- найдено в DNSWL:
- High: 9
- Medium: 221
- Low: 448
- None: 3879
UPD: обновил версию до 1.0.1, добавлен параметр (-m) для указания произвольного имени заголовка.









Оставить комментарий