Skip to content


Ограничение количества получателей в exim

Поскольку спамеры заинтересованы в отправке почты максимальному количеству получателей, они часто в одной SMTP-сессии передают множество команд "RCPT TO". Так как нормальный юзер такое будет делать очень редко (если вообще будет), то очень полезно ограничить количество получателей для одного письма для минимизации распространения спама через почтовый сервер. Для этого в exim предусмотерна опция recipients_max, числовое значение которой и устанавливает максимально допустимое число получателей одного письма. Если exim работает чисто как relay и не принимает почту для локальных доменов, то просто установки в exim.conf

  1. recipients_max = 10

должно быть достаточно (число 10 взято для примера). В противном же случае, когда exim помимо relay-инга еще и является primary mx для некоторых доменов, использование recipients_max может вызвать проблемы, поскольку количество получателей для входящей почты также будет лимитироваться. Представим ситуацию, когда на сервере пару тысяч пользователей (обычное дело для провайдеров и freemail-сервисов) и 12 из них подписалось на одну и ту же полезную рассылку. При приведённой выше конфигурации почтовый сервер рассылки сможет доставить письмо только 10-ти из этих пользователей, а оставшиеся 2 пойдут пинать админа со словами "почему у меня не работает почта". И вот чтобы всё было по фен-шую, нужно лимитировать количество получателей только для исходящих писем (когда сервер используется как relay). Для этого в блок списков контроля доступа, который соответствует acl_smtp_rcpt, нужно добавить следующее (так, чтобы новые правила были примерно 4-ым и 5-ым сверху если считать для exim.conf, который идет по-умолчанию):

  1. defer condition = RELAY_RCPT_LIMIT_ENABLE
  2.   message = Too many recipients
  3.   condition = ${if >={$recipients_count}{RELAY_RCPT_LIMIT_NUM} {yes}{no}}
  4.   hosts = +relay_from_hosts
  5.   !authenticated = *
  6.  
  7. defer condition = RELAY_RCPT_LIMIT_ENABLE
  8.   message = Too many recipients
  9.   condition = ${if >={$recipients_count}{RELAY_RCPT_LIMIT_NUM} {yes}{no}}
  10.   !hosts = +relay_from_hosts
  11.   authenticated = *

Ну и перед блоком "begin acl" определить две опции:

  1. # Флаг, включающий или выключающий ограничения числа получателей
  2. RELAY_RCPT_LIMIT_ENABLE = yes
  3. # Максимально допустимое число получателей в одном письме
  4. RELAY_RCPT_LIMIT_NUM = 10

Первое условие будет срабатывать для хостов, которым разрешёно использовать почтовый сервер как relay, но которые не прошли аутентификацию. А второе – для хостов, которые прошли аутентификацию, но которым запрещен relay-инг без неё. А вот хосты, которые не могут использовать сервер как relay и которые НЕ прошли аутентификацию проверять не надо, поскольку они доставляют входящую почту на домены, для которых наш exim является primary MX. Четвёртый вариант (хосты, прошедшие аутентификацию и которым разрешён relay) также ограничивать смысла нет, так как обычно эти два множества не пересекаются.

Имплантация зубов кунцево yell отзывы в районе кунцево имплантация зубов. .

Размещено в категории *nix, Howto.

Комментариев: 1

Чтобы быть всегда в курсе здесь происходящего, Вы можете подписаться на RSS feed для комментариев на эту заметку.

  1. Александр said

    Интересно.... хочу сделать лимиты на количество отправленных писем для каждого меилбокса. Например в файле указывать конкретно какие лмиимты для того или иного пользователя и подхватывать потом через ACL листы.... Не подскажешь как?

Some HTML is OK

(required)

(required, but never shared)

, или ответить через trackback.

Страница 1 из 11