Всем доброго времени суток.
Прочитал все свежие темы на этом форуме по данному вопросу (один, два, три ) + много других источников, но действенный вариант для блокировки спамеров с PHPmail так и не смог реализовать.
С дефолтным конфигом exim'а 4.84 спамеры не блокировались:
Код:
acl_check_not_smtp:
warn condition = ${if match_local_part{$sender_ident}{lsearch;/etc/exim/ratelimits} {yes}{no}}
set acl_c9 = $sender_ident
warn condition = ${if match_local_part{$sender_address}{lsearch;/etc/exim/ratelimits} {yes}{no}}
set acl_c9 = $sender_address
deny condition = ${if and{{!eq{$acl_c9}{}}{>{$acl_c8}{0}}}{yes}{no}}
set acl_c8 = ${lookup{$acl_c9}lsearch*{/etc/exim/ratelimits}}
ratelimit = $acl_c8 / 1h / strict / $acl_c9
message = Sender rate overlimit - $sender_rate / $sender_rate_period / $acl_c9
Подозреваю, что дело в файле ratelimits, т.к. он полностью пустой, но вот что писать туда - не знаю. Будет ли корректным прописать туда следующее:
Либо может кто подскажет,в чем еще проблема дефолтного конфига? Вобщем ответов не нашел, поэтому на время их поиска решил пойти другим проверенным путем и заменил конфигурацию на такую (изменения выделил):
Код:
acl_check_not_smtp:
warn condition = ${if match_local_part{$sender_ident}{lsearch;/etc/exim/ratelimits} {yes}{no}}
set acl_c9 = $sender_ident
warn condition = ${if match_local_part{$sender_address}{lsearch;/etc/exim/ratelimits} {yes}{no}}
set acl_c9 = $sender_address
deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
ratelimit = 50 / 1h / leaky
С данной конфигурацией вроде как все стало работать за исключением того, что при появлении 1 спамера на сервере и его последующего бана с причиной "Sender rate overlimit" - остальные пользователи данного сервера так же не могут отправлять письма, т.к. попадают под "Sender rate overlimit", т.е. нет никакого разграничения.
Вопрос - как же все-таки правильно сделать так, что бы из-за одного не страдали другие?