Exim4 ACL - 无法设置全局速率限制

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”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 段名为禁止 smtp 请求(你必须添加它,因为你遵循了一些操作指南)和取消 acl_check_not_smtp当 Exim 尝试确定要调用什么时,它会解释禁止 smtp 请求已被定义两次(一次是在全局部分中,说明它将由 acl_check_not_smtp 提供服务,然后在 ACL 中再次由其默认名称定义)。

解决方案是将您在 acl_not_smtp 中添加的内容合并到 acl_check_not_smtp 段中,并从 ACL 中删除 acl_not_smtp 部分(假设已添加它...如果它已经存在,那么您需要向我们展示更多您的配置)。

相关内容