On 12/13/10 22:11, dingni wrote: > Thanks for the explanation. So I went back dig though mail list and > come back with this relative topics: > http://lists.policyd.org/pipermail/users/2009-October/002827.html > http://lists.policyd.org/pipermail/users/2010-May/003033.html > http://lists.policyd.org/pipermail/users/2010-January/002905.html > > > If the windows is dynamic, then I could send double the total of quota > limit. > > Example: > > Period: 300s(5 minutes), quota limit 8(which means block at 10th > recipients) > > Dec 13 13:26:15 mailman cbpolicyd[2234]: module=Quotas, mode=update, > host=192.168.0238, helo=kkkkk, [email protected] > <mailto:[email protected]>, [email protected] > <mailto:[email protected]> reason=quota_update, policy=10, quota=7, > limit=8, track=Sender:[email protected] > <mailto:sender%[email protected]>, counter=MessageCount, quota=*1/8* > (12.5%) > Dec 13 13:26:16 ... quota=2/8 (24.2%) > Dec 13 13:26:17 ... quota=3/8 (35.2%) > Dec 13 13:26:19 ... quota=4/8 (47.2%) > Dec 13 13:26:20 ... quota=5/8 (59.4%) > Dec 13 13:26:21 ... quota=6/8 (71.3%) > Dec 13 13:26:22 ... quota=7/8 (86.6%) > Dec 13 13:26:22 ... quota=8/8 (98.8%) > > Waited( look below at *formula 1)* > > Dec 13 13:29:57 ... quota=*3/8* (40.5%) > Dec 13 13:30:32 ... quota=4/8 (48.3%) > Dec 13 13:30:33 ... quota=5/8 (60.6%) > Dec 13 13:30:34 ... quota=6/8 (72.9%) > Dec 13 13:30:35 ... quota=7/8 (85.2%) > Dec 13 13:30:36 ... quota=8/8 (97.4%) > Dec 13 13:30:37 ... quota=9/8 (109.6%) > > waited > Dec 13 13:31:10 .. quota=9/8 (110.0%) > Dec 13 13:31:11 Dec 13 13:31:11 mailman cbpolicyd[12995]: > module=Quotas, action=*reject* quota=*10/8* (122.1%) > Dec 13 13:31:11
I'd like to see full debug logs with this running on RC1 + the patch
Robert Anderson posted, as this is just not possible in the code path.
# Quotas.pm - Line 191
if ($currentCounter >
$limit->{'CounterLimit'}) {
$hasExceeded = "Policy rejection;
Message count quota exceeded";
>
> *formula 1:*
> http://lists.policyd.org/pipermail/users/2010-January/002905.html
> Delta = (1 - (Now - LastUpdate) / Period) * LastCount + 1
> = (1-(13:29:57 - 13:26:22)/300) * 8 + 1
> = 3.26
> 3.26 rounds down to 3
>
> So, in total, I was able to send 16 messages(recipients).
>
> My intention is to limit a client to send 100 emails(recipients) a day.
Very many changes have taken place since 2009 and now. For the full
mathematical calculation on how the values are worked out one would need
to reference the code.
The exact calculation is ... (as far as I can see at 00:30 in the
evening).
(Simon, for your reference too. Robert, please add this to the site for
future reference)
1. Counter = DBValue
2. ElapsedTime = Now - LastUpdate
3. IF ElaposedTime > Period THEN CurrentCounter = 0 ELSE CurrentCounter
= ( 1 - (ElapsedTime / Period) ) * Counter
4. Delta = CurrentCounter - Counter
5. CurrentCounter++
6. IF CurrentCounter > Limit THEN <action>
7. DBValue += Delta (+1)
So ...
Counter = 8
ElapsedTime = 13:29:57 - 13:26:22 = 215
CurrentCounter = ( 1 - (215 / 300) ) * 8 = 2.27
Delta = 2.27 - 8 = -5.73
* * allow mail .... CurrentCounter (+1) < Limit * *
DBValue += -5.73 (+1) = 3.27
Are you using the latest RC1 with the patch that Robert Anderson posted?
-N
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Users mailing list [email protected] http://lists.policyd.org/mailman/listinfo/users
