Dan Conway
2021-Apr-20 17:32 UTC
Quota warning invoked twice when moving messages to Trash folder
Hello all, I currently have quota warnings enabled through the following configuration on Dovecot 2.2.19: plugin { ? quota = dict:User quota::file:%h/Maildir/dovecot-quota ? quota_warning? = storage=100%% quota-warning 100 %u %{userdb:quota_rule} %i ? quota_warning2 = storage=95%% quota-warning 95 %u %{userdb:quota_rule} %i ? quota_warning3 = storage=90%% quota-warning 90 %u %{userdb:quota_rule} %i } service quota-warning { ? executable = script /usr/local/bin/quota-warning.pl ? group = mailusers ? unix_listener quota-warning { ??? group = mailusers ??? mode? = 0775 ? } } When using Thunderbird as a client for testing, I fill up an inbox until one of the warnings is invoked. (90%). The script runs, and the mailbox sits at about 93%. When moving a handful of messages to the Trash folder, the 100% quota-warning service is invoked. But getting the quota through 'doveadm quota get -u user' yields that same 93% used. I ran strace on the main process that is taking in IMAP commands from the Thunderbird client. Two lines are worth noting from that output: 134 uid store 2311:2312,2314:2317 +Flags (\\Seen)\r\n", 3619 137 uid move 2311:2312,2314:2317 \"INBOX.Trash\"\r\n", 3553 The first line sets the "Seen" flag on a list of messages, while the second line moves the messages to the "INBOX.Trash" folder. My guess as to what is happening is when the "uid move" command is received, The messages are copied first, then removed from the server, causing the quota to spike for a very short amount of time. Are those suspicions correct? After looking at RFC 6851, Section 3.3 (Semantics of MOVE and UID MOVE), it states: "Each message included in the set is moved, rather than copied ... ". Any idea why the spike in quota usage occurs? Thanks.