Zimbra 8.04 policyd… 郵件配額按收件人數計算
我遇到了一個無法解決的行為問題。
我已經按照本教程
Zimbra
配置了(8.0.4)policyd
Step1:創建策略
Step2:創建組(
list_domain
)Step3:將域添加到組(
@example.com
)Step4:將成員添加到策略(從:
%list_domain
,到any
:)Step5:添加配額(軌道:
Sender: user@domain
,週期:60
,判決:defer
)Step6:為配額添加限制(類型:
messageCount
,限制5
:)而且,嘿presto。它的工作!
但
配額計數器按收件人數遞增。也就是說,如果我向 6 個收件人發送一封郵件,它將被阻止。
問題
為了使策略跟踪郵件數量而不是收件人數量,我必須更改什麼?
更新
以下是一些相關的伺服器日誌,其中所有敏感資訊都已替換為虛構數據。
郵箱.log 摘要
2015-09-02 10:58:44,980 INFO [qtp126151468-4888876] [name=account@domain.com;mid=537;ip=xx.xx.xx.xx;ua=ZimbraWebClient - FF40 (Win)/8.0.7_GA_6021;] smtp - Sending message to MTA at server.domain.com: Message-ID=<1187019100.8600745.14411807248 66.JavaMail.zimbra@domain.com>, origMsgId=101f0b66-b103-4161-8767-7ab1e00ffffd:1279544, replyType=w 2015-09-02 10:58:45,206 WARN [qtp126151468-4888876] [name=account@domain.com;mid=537;ip=xx.xx.xx.xx;ua=ZimbraWebClient - FF40 (Win)/8.0.7_GA_6021;] smtp - Failed to send message com.zimbra.cs.mailclient.smtp.InvalidRecipientException: RCPT failed: Invalid recipient acc5@otherdomain.com: 450 4.7.1 <account@domain.com>: Sender address rejected: Deferring: Too many messages from sender in last 60 at com.zimbra.cs.mailclient.smtp.SmtpConnection.rcpt(SmtpConnection.java:680) [........]
cbpolicyd.log 摘要
[2015/09/02-10:58:45 - 28180] [CORE] INFO: module=Quotas, mode=create, host=yy.yy.yy.yy, helo=server.domain.com, from=account@domain.com, to=acc1@otherdomain.com, reason=quota_create, policy=6, quota=3, limit=4, track=Sender:account@domain.com, counter=MessageCount, quota=1.00/3 (33.3%) [2015/09/02-10:58:45 - 28180] [CORE] INFO: module=Quotas, mode=update, host=yy.yy.yy.yy, helo=server.domain.com, from=account@domain.com, to==acc2@otherdomain.com, reason=quota_update, policy=6, quota=3, limit=4, track=Sender:account@domain.com, counter=MessageCount, quota=2.00/3 (66.7%) [2015/09/02-10:58:45 - 28180] [CORE] INFO: module=Quotas, mode=update, host=yy.yy.yy.yy, helo=server.domain.com, from=account@domain.com, to==acc3@otherdomain.com, reason=quota_update, policy=6, quota=3, limit=4, track=Sender:account@domain.com, counter=MessageCount, quota=3.00/3 (100.0%) [2015/09/02-10:58:45 - 28180] [CORE] INFO: module=Quotas, mode=update, host=yy.yy.yy.yy, helo=server.domain.com, from=account@domain.com, to==acc4@otherdomain.com, reason=quota_update, policy=6, quota=3, limit=4, track=Sender:account@domain.com, counter=MessageCount, quota=4.00/3 (133.3%) [2015/09/02-10:58:45 - 28180] [CORE] INFO: module=Quotas, action=defer, host=yy.yy.yy.yy, helo=server.domain.com, from=account@domain.com, to==acc5@otherdomain.com, reason=quota_match, policy=6, quota=3, limit=4, track=Sender:account@domain.com, counter=MessageCount, quota=5.00/3 (166.7%)
我們的 zimbra 伺服器不充當中繼代理,它使用我們區域網路中的外部服務將消息傳遞到外部域。因此,要傳遞到外部域的所有傳出消息都在一個隊列項中傳遞到外部 mta。
因此,對於外部 mta/relay,每條消息都成為一個且唯一的一個隊列項,而不管其中的收件人數量。
不,你不能
配額計數器按收件人數遞增。也就是說,如果我向 6 個收件人發送一封郵件,它將被阻止。為了使策略跟踪郵件數量而不是收件人數量,我必須更改什麼?
當然會被屏蔽。當您向 6 個收件人發送電子郵件時,基本上 postfix(在 Zimbra 中)會將您的電子郵件副本發送給 6 個收件人。因此,cbpolicyd也將其計為 6 條消息。
在後綴術語中,消息數和收件人數是相同的。請記住,您的電子郵件客戶端可以有不同的方式來發送電子郵件。
- 他們可以在一個 SMTP 會話中一次向 6 個收件人發送電子郵件,或者
- 他們可以在每個 SMTP 會話中為每個收件人發送電子郵件
更重要的是,這種機制將再次保護您一些討厭的使用者/垃圾郵件發送者,他們希望通過在單個消息中放置數千個收件人來繞過此限制。
附加說明:
我可以確認這種行為是在 cbpolicyd 中設計的。證據來自cbpolicyd 原始碼,尤其是文件
cbp/modules/Quotas.pm
第 192 行。RCPT TO
基本上,cbpolicyd 將在每個階段增加計數器。所以,現在你不能通過 policyd 來做到這一點。