Это - первый раз, когда я отправляю на этом форуме, но так как я нашел, что некоторые вовлекают мою проблему, я надеюсь, что найду решение.
Я думаю, что я хочу сделать, очень просто.
У меня есть веб-сервер, работающий 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"
Я читал и искал, но что-то ускользает от меня, Ваша справка будет значительно цениться.
Спасибо
Имя "acl_not_smtp" является настройкой верхнего уровня. Вы можете присвоить ему одну команду или назначить ему сегмент с другим именем acl. Если вы ничего не назначаете, но у вас есть "acl_not_smtp" acl-сегмент в ACL, то 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 (который вам пришлось добавить, потому что вы следовали некоторому "Как") и acl_check_not_smtp. Когда Exim пытается выяснить, что вызывать, он интерпретирует acl_not_smtp как дважды определенное (один раз в глобальной секции, говоря, что он будет обслуживаться acl_check_not_smtp, а затем снова определено его именем по умолчанию в ACL).
Решение заключается в объединении содержимого того, что вы добавили в acl_not_smtp в сегмент acl_check_not_smtp и удалении секции acl_not_smtp из ACL (если предположить, что она уже была добавлена... если она уже была там, то вам нужно показать нам больше вашей конфигурации)
.