EXIM mail rate

Материал из Webko Wiki
Перейти к навигации Перейти к поиску


Ограничение количества писем в единицу времени в Exim

В файле конфигурации почтового сервера Exim необходимо настроить директиву следующим образом

acl_not_smtp = acl_not_smtp

begin acl

        acl_not_smtp:
                deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
                ratelimit = 50 / 1h / leaky
                accept

        acl_check_rcpt:
                deny message = Sender rate SMTP overlimit - $sender_rate / $sender_rate_period
                ratelimit = 100 / 1h / leaky

                accept  hosts = net-lsearch;/etc/exim/whitelist

В итоге выставляется ограничение в 50 писем в час для почты отправленной не по SMTP (например через PHP mail) и в 100 писем для отправки через SMTP. В файле /etc/exim/whitelist создается белый список хостов на которые лимит не действует.

Еще один рецепт

# Рубаем баунсы от клиентов до двух в час (если закрыть, аутглюку станет худо)
deny condition = ${if eq{$sender_address}{}{yes}{no}}
domains = !+local_domains
hosts = +relay_from_hosts
ratelimit = 2 / 1h / per_mail / strict / $sender_address
message = Too many bounces from you! Ask at admin@admin-sys.net.

# Рубаем тех кто превысил заданную норму сообщений в час - клиентов
deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for $sender_host_address More slowly, try later or complain admin@admin-sys.net.
hosts = +relay_from_hosts
ratelimit = 100 / 1h / per_mail / leaky / $sender_address

# Рубаем по (в частности, если сообщение посылается локально, то содержит имя пользователя)
deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for More slowly, try later or complain admin@admin-sys.net.
hosts = +relay_from_hosts
ratelimit = 100 / 1h / per_mail / leaky / $authenticated_id

deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for More slowly, try later or complain admin@admin-sys.net.
hosts = +relay_from_hosts
ratelimit = 100 / 1h / per_mail / leaky / $sender_host_authenticated

# Рубаем тех кто превысил заданную норму сообщений в час - для остальных
deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for $sender_host_address More slowly, try later or complain admin@admin-sys.net.
hosts = * : !+mine : !+relay_from_hosts
ratelimit = 100 / 1h / per_conn / leaky / $sender_address
accept

# Рубаем тех кто превысил заданную норму сообщений в час - для остальных
deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for $sender_host_address More slowly, try later or complain admin@admin-sys.net.
hosts = * : !+mine : !+relay_from_hosts
ratelimit = 100 / 1h / per_conn / leaky / $authenticated_id

deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for $sender_host_address More slowly, try later or complain admin@admin-sys.net.
hosts = * : !+mine : !+relay_from_hosts
ratelimit = 100 / 1h / per_conn / leaky / $sender_host_authenticated