我遇到了一个行为问题,我看不出如何解决。
按照本教程 ,我configuration了policyd Zimbra (8.0.4)
第一步:创build一个策略
第二步:创build一个组( list_domain )
第三步:添加一个域到组( @example.com )
第四步:添加一个成员到政策(从: %list_domain ,到: any )
第5步:添加配额(曲目: Sender: user@domain ,时间段: 60 ,判决: defer )
第六步:添加限额(types: messageCount ,限制: 5 )
而且,嘿,快点。 它正在工作!
但
配额计数器会按收件人数量递增。 也就是说,如果我发送一封邮件给6个收件人,它将被阻止。
题
我必须改变什么才能让policyd追踪消息的数量而不是收件人的数量?
UPDATE
以下是一些相关的服务器日志,其中所有的敏感信息已被假想的数据取代。
mailbox.log摘要
2015-09-02 10:58:44,980 INFO [qtp126151468-4888876] [[email protected];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] [[email protected];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 [email protected]: 450 4.7.1 <[email protected]>: 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, [email protected], [email protected], reason=quota_create, policy=6, quota=3, limit=4, track=Sender:[email protected], 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, [email protected], [email protected], reason=quota_update, policy=6, quota=3, limit=4, track=Sender:[email protected], 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, [email protected], [email protected], reason=quota_update, policy=6, quota=3, limit=4, track=Sender:[email protected], 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, [email protected], [email protected], reason=quota_update, policy=6, quota=3, limit=4, track=Sender:[email protected], 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, [email protected], [email protected], reason=quota_match, policy=6, quota=3, limit=4, track=Sender:[email protected], counter=MessageCount, quota=5.00/3 (166.7%)
我们的zimbra服务器不作为中继代理,它使用我们局域网中的外部服务将消息传递到外部域。 因此,要传递到外部域的所有传出邮件将被传递到单个队列项中的外部mta。
因此,无论收件人的数量如何,每个邮件都只能成为外部mta / relay的一个队列项目。
配额计数器会按收件人数量递增。 也就是说,如果我发送一封邮件给6个收件人,它将被阻止。 我必须改变什么才能让policyd追踪消息的数量而不是收件人的数量?
当然会被封锁。 当你发送电子邮件给6收件人,基本上后缀(在Zimbra)将发送您的电子邮件的副本给6个收件人。 所以,cbpolicyd 也把它算作6条消息 。
在后缀术语中,消息的数量和收件人的数量是相同的。 请记住,您的电子邮件客户端可以有不同的发送电子邮件
更重要的是,这种机制将再次保护你一些讨厌的用户/垃圾邮件发送者,他们想通过将单个邮件中的数千个收件人放在这个限制之外来绕过这个限制。
附加说明:
我可以证实,这种行为是在cbpolicyd打算。 证据来自cbpolicyd源代码 ,特别是在文件cbp/modules/Quotas.pm 192行 。 基本上,cbpolicyd将在每个RCPT TO阶段增加计数器。 所以,现在你不能通过policyd做到这一点。