Я хочу ограничить количество сообщений, отправляемых через 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.