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 (при условии, что он был добавлен... если он уже был там, то вам нужно показать нам больше вашей конфигурации),

Другие вопросы по тегам