I have quotas setup on a test domain to try everything out before I move my domains email over to dovecot.? I have a trash quota rule that should have added 100M to trash folder specifically, but mail was denied due to quota being full even though the only mail in the test account was in trash.? Below are debug log lines and dovecot -n output. Oct 07 17:16:03 lmtp(26801): Debug: none: root=, index=, indexpvt=, control=, inbox=, altOct 07 17:16:03 lmtp(26801): Info: Connect from local Oct 07 17:16:03 lmtp(26801): Debug: Loading modules from directory: /usr/lib64/dovecot Oct 07 17:16:03 lmtp(26801): Debug: Module loaded: /usr/lib64/dovecot/lib10_quota_plugin.so Oct 07 17:16:03 lmtp(26801): Debug: Module loaded: /usr/lib64/dovecot/lib20_autocreate_plugin.so Oct 07 17:16:03 lmtp(26801): Debug: Module loaded: /usr/lib64/dovecot/lib90_sieve_plugin.so Oct 07 17:16:03 lmtp(26801): Debug: auth input: 123 at testdo.com home=/home/vmail/testdo.com/123 mail=maildir:/home/vmail/testdo.com/123 uid=2000 gid=2000 quota_rule=*:storage=20000 Oct 07 17:16:03 lmtp(26801): Debug: Added userdb setting: mail=maildir:/home/vmail/testdo.com/123 Oct 07 17:16:03 lmtp(26801): Debug: Added userdb setting: plugin/quota_rule=*:storage=20000 Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: Effective uid=2000, gid=2000, home=/home/vmail/testdo.com/123 Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: Quota root: name=User quota backend=dict args=:proxy::quotadict Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: Quota rule: root=User quota mailbox=* bytes=20480000 messages=0 Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: Quota rule: root=User quota mailbox=Trash bytes=+104857600 messages=0 Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: Quota grace: root=User quota bytes=2048000 (10%) Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: dict quota: user=123 at testdo.com, uri=proxy::quotadict, noenforcing=0 Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/home/vmail/testdo.com/123 Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: maildir++: root=/home/vmail/testdo.com/123, index=, indexpvt=, control=, inbox=/home/vmail/testdo.com/123, altOct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: sieve: Pigeonhole version 0.4.2 initializing Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: OFqmG0Nu2VmxaAAAobcTNA: sieve: using the following location for user's Sieve script: /home/vmail/testdo.com/123/.dovecot.sieve;name=main script Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: OFqmG0Nu2VmxaAAAobcTNA: sieve: loading script /home/vmail/testdo.com/123/.dovecot.sieve;name=main script Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: OFqmG0Nu2VmxaAAAobcTNA: sieve: script binary /home/vmail/testdo.com/123/.dovecot.svbin is not up-to-date Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: OFqmG0Nu2VmxaAAAobcTNA: sieve: script `main script' from /home/vmail/testdo.com/123/.dovecot.sieve;name=main script successfully compiled Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Debug: OFqmG0Nu2VmxaAAAobcTNA: sieve: executing script from /home/vmail/testdo.com/123/.dovecot.sieve;name=main script Oct 07 17:16:03 lmtp(26801, 123 at testdo.com): Info: OFqmG0Nu2VmxaAAAobcTNA: sieve: msgid=<3a1e5ba2-f0a7-4cec-e7fb-bf5202c2152d at keagaming.com>: failed to store into mailbox 'INBOX': Quota exceeded (mailbox for user is full) # 2.2.10: /etc/dovecot/dovecot.conf # OS: Linux 3.10.0-514.26.2.el7.x86_64 x86_64 CentOS Linux release 7.4.1708 (Core)? xfs auth_mechanisms = plain login dict { ? quotadict = mysql:/etc/dovecot/dovecot-dict-quota.conf } first_valid_uid = 2000 hostname = testdo.com last_valid_uid = 2000 log_path = /var/log/dovecot.log mail_debug = yes mail_gid = vmail mail_location = maildir:/home/vmail/%d/%n mail_plugins = " quota trash expire" mail_privileged_group = mail mail_uid = vmail managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave mbox_write_locks = fcntl namespace inbox { ? inbox = yes ? location ? mailbox Drafts { ??? auto = subscribe ??? special_use = \Drafts ? } ? mailbox Junk { ??? auto = subscribe ??? special_use = \Junk ? } ? mailbox Sent { ??? auto = subscribe ??? special_use = \Sent ? } ? mailbox "Sent Messages" { ??? special_use = \Sent ? } ? mailbox Trash { ??? auto = subscribe ??? special_use = \Trash ? } ? prefix } passdb { ? args = /etc/dovecot/dovecot-sql.conf.ext ? driver = sql } plugin { ? quota = dict:User quota::proxy::quotadict ? quota_grace = 10%% ? quota_rule2 = Trash:storage=+100M ? quota_status_nouser = DUNNO ? quota_status_overquota = 552 5.2.2 Mailbox is full ? quota_status_success = DUNNO ? sieve_dir = ~/sieve ? sieve_global_dir = /etc/dovecot/sieve/global/ ? sieve_global_path = /etc/dovecot/sieve/default.sieve ? trash = /etc/dovecot/dovecot-trash.conf.ext } postmaster_address = administrator at testdo.com protocols = imap lmtp sieve service auth-worker { ? user = vmail } service auth { ? unix_listener /var/spool/postfix/private/auth { ??? group = postfix ??? mode = 0666 ??? user = postfix ? } ? unix_listener auth-client { ??? group = postfix ??? mode = 0660 ??? user = postfix ? } ? unix_listener auth-master { ??? group = vmail ??? mode = 0660 ??? user = vmail ? } ? unix_listener auth-userdb { ??? mode = 0600 ??? user = vmail ? } ? user = dovecot } service dict { ? unix_listener dict { ??? group = vmail ??? mode = 0600 ??? user = vmail ? } } service imap-login { ? inet_listener imap { ??? port = 143 ? } } service lmtp { ? executable = lmtp -L ? unix_listener /var/spool/postfix/private/dovecot-lmtp { ??? group = postfix ??? mode = 0600 ??? user = postfix ? } } service managesieve-login { ? inet_listener sieve { ??? port = 4190 ? } } service pop3-login { ? inet_listener pop3 { ??? port = 110 ? } } ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem userdb { ? args = /etc/dovecot/dovecot-sql.conf.ext ? driver = sql } protocol lmtp { ? info_log_path = /var/log/dovecot-lmtp.log ? log_path = /var/log/dovecot-lmtp-errors.log ? mail_plugins = " quota trash expire autocreate sieve quota" ? postmaster_address = postmaster at testdo.com } protocol sieve { ? info_log_path = /var/log/dovecot-sieve.log ? log_path = /var/log/dovecot-sieve-errors.log ? managesieve_implementation_string = dovecot ? managesieve_max_line_length = 65536 } protocol imap { ? mail_plugins = " quota trash expire imap_quota notify quota" } protocol pop3 { ? mail_plugins = " quota trash expire quota" } Any help is appreciated, thanks.