Exim
Exim4 ACL - 無法設置全域速率限制
這是我第一次在這個論壇上發帖,但是由於我發現了一些關於我的問題的線索,我希望我能找到解決方案。
我想我想做的很簡單。
我有一個執行 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 部分(假設添加它……如果它已經存在,那麼您需要向我們展示更多配置) .