Exim

Exim4 ACL - 無法設置全域速率限制

  • November 14, 2014

這是我第一次在這個論壇上發帖,但是由於我發現了一些關於我的問題的線索,我希望我能找到解決方案。

我想我想做的很簡單。

我有一個執行 exim4 的 Web 伺服器,我想限制 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 中有一個“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_not_smtp的 acl 段(你必須添加它,因為你遵循了一些 Howto)和acl_check_not_smtp。當 Exim 試圖弄清楚要呼叫什麼時,它會將acl_not_smtp解釋為已定義兩次(一次在全域部分中表示它將由 acl_check_not_smtp 提供服務,然後在 ACL 中再次使用其預設名稱定義)。

解決方案是將您在 acl_not_smtp 中添加的內容合併到 acl_check_not_smtp 段中,並從 ACL 中刪除 acl_not_smtp 部分(假設添加它……如果它已經存在,那麼您需要向我們展示更多配置) .

引用自:https://serverfault.com/questions/644269