Dovecot: Quota between

dovecot
ucs-4-2

#1

Hi all,

I am able to observe a very strange behaviour:
User A wants to copy a mail to a shared mailbox of user B. This works like a charme if the quota of user A is lower than the used space of user B. But is the used space of user B higher than the quota size of User A, “User A” is not longer able to copy the message to the shared folder of user B. His IMAP Client says something like “NO OVERQUOTA”.

# doveadm quota get -u userA
Quota name   Type    Value Limit    %
User quota   STORAGE 20085 25600   78
User quota   MESSAGE    68     -    0

# doveadm quota get -u userB
Quota name   Type    Value  Limit   %
User quota   STORAGE 39963 122880  32
User quota   MESSAGE   160      -   0

The quota’s are configured in UMC -> Users -> Select User -> [Advanced settings] -> Mail -> Mail quota

The situation is reproducible with Open-Xchange as IMAP Client and with any other Clients like Thunderbrid. So I think the origin is Doveoct. Are there any other users out there experience this behavior? Are the any solutions?

Regards,
faku


#2

Hello faku,

it is correct that the quota calculation is done by Dovecot.

I think the reason that Dovecot forbids userA to copy messages to a folder of userB is that Dovecot cannot know whom the messages in userBs mailbox “belong” to. Thus it calculates: 20085 + 39963 > 25600 → over quota.

When calculating a users quota Dovecot adds up all used storage that userA has access to - per namespace. It has two configuration entries for the private namespace:

/etc/dovecot/conf.d/90-quota.conf:  quota_rule = *:storage=0 # no quota by default, will be overwritten per-user from LDAP
/etc/dovecot/conf.d/90-quota.conf:  quota_rule2 = Trash:storage=+100M # for clients that do move-to-trash before deleting

You could add a dedicated rule for the shared mailbox to /etc/dovecot/local.conf that should look like this:

quota_rule3 = INBOX/myshared:storage=+2000M

That should allow users to store 2GB more emails, when using a folder with that name. Completely untested btw.

Documentation:

Greetings
Daniel Tröder