Назад | Перейти на главную страницу

ограничение отправки сообщений в exim

Я хочу ограничить количество сообщений, отправляемых через exim, для каждого пользователя или для домена. (пока интересно только сообщение, отправленное через php mail).

письма отправляются от пользователя apache (mod_php), поэтому, насколько я понимаю, ограничение через пользователя недоступно, потому что у меня только один пользователь.

Думаю, лучше ограничиться хостом. Но другая проблема - это поддомены.

Посоветуйте мне, как я могу это исправить.

Также я читал о значениях $ Authenticated_id, $ sender_host_authenticated, $ sender_address и т.д., как я могу отследить эти значения?

На данный момент я установил лимит для любых пользователей или хостов:

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

Извините, если вопрос не понравился, я новичок в администрировании серверов. Спасибо.

ОБНОВИТЬ:

Давайте упростим. Как я могу ограничить отправку сообщений для каждого виртуального хоста. Любые идеи!

ОБНОВИТЬ:

Любые идеи...

Как насчет этого:

Добавить к виртуальному хосту:

php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f owner@domain.com"

И определите виртуальный хост из "Обратного пути"

warn set acl_host  = ${if match{$h_Received:}\
                            {\N Return-path: (Regular expression here) \N}\
                           {$1}\
                            {}\
                  }
acl_not_smtp:
       deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
       ratelimit   = 200 / 1d / leaky / $acl_host
       accept

ОБНОВЛЕНИЕ

Я добавляю модуль ITK в Apache, поскольку теперь каждый виртуальный хост запускается от уникального пользователя.

Изменение конфигурации на (с authenticated_id):

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

Вопрос в том, хватит ли полных лимитов для каждого пользователя? И второй вопрос, как я могу добавить белый список пользователей, ограничение которых не будет работать в этом примере. Спасибо.

Если вы хотите сделать это как есть, вам нужно будет написать собственный ACL exim, который извлекает отправляющий домен.

В качестве альтернативы вы можете запустить php через su_php или использовать mod_ruid2 для запуска каждого виртуального хоста как уникального пользователя. Или заблокируйте прямую инъекцию sendmail и потребуйте, чтобы все сценарии отправляли электронную почту через аутентифицированные учетные записи SMTP. Затем вы можете использовать все существующие доступные ACL.