BigHarry

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Все нижеизложенное может пригодится тем, у кого exim работает в связке с MySQL, хотя - думаю можно это все прикрутить и для других почтовиков и на другую СУБД. Сейчас защит от спама много напридумано, но несмотря на всевозможные списки и всяческие методы - спам продолжает упорно пролезать, и, как показывает анализ логов - в основном спам идет через Китай и прочие развивающиеся страны типа Кореи. Я не до конца предтавляю всю эту спаморазсылочную кухню - почему спам, ориентированный на русскоязычную публику поступает с китайских серверов, скорей всего - наши спам-агенства заказывают это дело у китайских товарисчей в первую очередь из-за того, что те мало денег за это безобразие берут. Не суть, в общем - задача была такая - иметь возможность в любой момент отрезать поток писем из какой-либо страны. Для этого я воспользовался списком IP адресов с разводкой по странам, который можно взять тут: http://www.maxmind.com/app/geoip_country Этот список судя по всему последний раз обновлялся где-то в феврале 2005г. У кого-то он используется на въеб-серверах для статистики - типа из каких стран народ прет на сайт. Я же его решил прикрутить этот список к связке Экзим+MySQL - тем более, что по адресу: http://www.delau.net/php/geoip.html лежит подробная инструкция на тему HOW-TO Import the MaxMind GeoIP Free Country CSV file into MySQL and save diskspace. К сожалению - метод, который там приведен у меня нормально не сработал - очевидно - из-за неявного определения типа полей (видать у автора была старая версия MySQL), но я все-же переколбасил этот список полуручным методом и что бы народ не страдал - я выложил готовый дамп таблиц в архиве тут: http://rapidshare.de/files/1927402/eximgeo.7z.html Архив в формате 7z (http://www.7-zip.org/). Для импорта дампа в вашу БД замените USE EximDatabase на USE Имя_вашей_БД, а также при надобности тип создаваемых таблиц (если у вас не включена поддержка innoDB в MySQL). Затем вносим следующие изменения в exim.conf: Код: acl_smtp_connect = acl_init acl_init: warn set acl_c6="" set acl_c7="" set acl_c8= ${lookup mysql{SELECT cc,cn FROM geo_ip \ LEFT JOIN geo_cc ON geo_cc.ci=geo_ip.ci \ WHERE inet_aton('${sender_host_address}') BETWEEN start AND end}} set acl_c6 = ${extract{cc}{$acl_c8}} set acl_c7 = ${extract{cn}{$acl_c8}} warn set acl_c8=0 warn condition =${if eq{$acl_c6}{}{no}{yes}} set acl_c8= ${lookup mysql{SELECT ID FROM badcn \ WHERE cc = '$acl_c6'}} deny message = We cant accept messages from country $acl_c7 condition = ${if >{$acl_c8}{0}{1}{0}} warn message = X-Exim-From-Country: $acl_c6, $acl_c7 | Обращаю внимание - в моем дампе таблиц уже внесены в черный список стран (таблица badcn) Китай, Корея и есчо парочка, так что проверьте эту таблицу и удалите лишнее. В результате проделанной работы - блокируется прием писем из стран черного списка (прямо в момент соединения почтовик их посылает на 550), а в заголовок принятого письма добавляется поле: X-Exim-From-Country: RU, Russian Federation Можно пойти дальше - каждому локальному юзеру завести черный или белый список, откуда он хочет или не хочет принимать письма - дальше думаю уже сами разберетесь... |