nginx + mai + dnsrbl + blacklisting + MTA (postfix)

Konstantin V. Pleshakov www.fangorn на mail.ru
Пт Фев 19 07:41:25 MSK 2010


Предполагалось использовать nginx как фронтенд к postfix для отсеивания спама 
на ранних этапах при помощи белых/черных списков и DNSRBL. Таким образом 
значительная часть соединений были бы корректно закрыты nginx до их 
поступления в postfix (сам он с этим не очень хорошо справляется на слабых 
машинах).

Что я сделал:
Я прикрутил к модулю mail возможность проверять соединения по белым/черным 
спискам (которые хранятся в файле, и перезагружаются при его изменении), по 
спискам dnsrbl-сервером, при этом каждому серверу назначается некоторый "вес" 
и если сумма весов сработавших dnsrbl превышает некоторое (тоже заданное) 
значение - соединение отвергается.
В обоих случаях на другой конец отправляется уведомление и причина разрыва 
соединения.
Если соединение не было отвергнуто nginx, то он переключается в режим прокси, 
в том числе передавая команду XCLIENT с указанием реального отправителя.
Так же я открутил http-авторизацию, т.к. с ней отлично справляется и сам 
postfix (на самом деле просто не хотелось что-то в нем трогать :)) ).

В чем проблема:
Для того, что бы это сделать я переломал весь модуль mail, т.к. не сразу понял 
как вообще работает nginx. Сейчас передо мной стоит делема: либо допилить 
mail, добавив в него эти возможности, либо оформить отдельный модуль, что 
порекомендуете?

P.S. Если кому-то надо было решить точно такую же проблему - обращайтесь, 
поделюсь исходниками еще до того, как выложу конечный патч (или модуль). 
Работает более-менее стабильно :)))
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: отсутствует
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100219/91a4698c/attachment.pgp>


Подробная информация о списке рассылки nginx-ru