Exim4 ACL - невозможно установить глобальный предел скорости
Это первый раз, когда я публикую сообщения на этом форуме, но так как я нашел несколько подсказок по своей проблеме, я надеюсь, что найду решение.
Я думаю, что я хочу сделать очень просто.
У меня есть веб-сервер под управлением exim4, и я хочу ограничить общий объем почты, которую может отправить exim.
Я добавил следующие определения acl в основной файл конфигурации:
acl_check_not_smtp:
warn ratelimit = 0 / 1h / strict / $sender_address_local_part
log_message = Sender rate $sender_rate / $sender_rate_period
acl_not_smtp:
deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
ratelimit = 1 / 30m / strict
#System-wide rate limit
defer message = Sorry, too busy right now.
ratelimit = 10 / 1h / $primary_hostname
accept
Но как только я добавляю acl_not_smtp = acl_not_smtp, я получаю следующую ошибку:
Stopping MTA for restart:2014-11-13 22:12:47 Exim configuration error in line 433 of /var/lib/exim4/config.autogenerated.tmp:
error in ACL: unknown ACL condition/modifier in "acl_not_smtp = acl_not_smtp"
Я читал и искал, но что-то ускользает от меня, ваша помощь будет высоко оценена.
Спасибо
1 ответ
Имя "acl_not_smtp" является настройкой верхнего уровня. Вы можете назначить ему одну команду или назначить ей сегмент ACL с другим именем. Если вы ничего не назначаете ему, но в ваших ACL есть сегмент acl_not_smtp, то exim все равно будет использовать его, потому что это правильное имя. Примеры:
# Don't do any checking, just force Exim to accept:
acl_not_smtp = accept
# But here we actually declare which acl segment to use:
acl_not_smtp = acl_check_not_smtp
begin acl
acl_check_not_smtp:
...your ACL checks
Вы смешиваете два несовместимых способа.
Я подозреваю, что в верхней части вашей конфигурации есть acl_not_smtp = acl_check_not_smtp, но затем в разделе ACL у вас есть как сегмент acl с именем acl_not_smtp (который вам пришлось добавить, потому что вы следовали некоторому Howto), так и acl_check_not_smtp. Когда exim пытается выяснить, что вызывать, он интерпретирует acl_not_smtp как определенный дважды (один раз в глобальном разделе, говоря, что он будет обслуживаться acl_check_not_smtp, а затем снова определен по имени по умолчанию в ACL).
Решение состоит в том, чтобы объединить содержимое того, что вы добавили в acl_not_smtp, в сегмент acl_check_not_smtp и удалить раздел acl_not_smtp из ACL (при условии, что он был добавлен... если он уже был там, то вам нужно показать нам больше вашей конфигурации),