I have the trash plugin enabled and testing it out I had an account with
a 30MB quota.? In the accounts trash it had an email with a large
attachment.? I sent the same email again to the account expecting the
trash plugin to purge the message from trash to make space for the new
message in the inbox.? However I got an error saying it couldn't remove
enough trash to make space.? This behavior seems unexpected because it
seems like the trash plugin didn't account for the quota and size
available.? Debug logs and dovecot -n output below.
Oct 07 17:33:13 lmtp(31543): Debug: none: root=, index=, indexpvt=,
control=, inbox=, altOct 07 17:33:13 lmtp(31543): Info: Connect from local
Oct 07 17:33:13 lmtp(31543): Debug: Loading modules from directory:
/usr/lib64/dovecot
Oct 07 17:33:13 lmtp(31543): Debug: Module loaded:
/usr/lib64/dovecot/lib10_quota_plugin.so
Oct 07 17:33:13 lmtp(31543): Debug: Module loaded:
/usr/lib64/dovecot/lib11_trash_plugin.so
Oct 07 17:33:13 lmtp(31543): Debug: Module loaded:
/usr/lib64/dovecot/lib20_autocreate_plugin.so
Oct 07 17:33:13 lmtp(31543): Debug: Module loaded:
/usr/lib64/dovecot/lib90_sieve_plugin.so
Oct 07 17:33:13 lmtp(31543): 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=30000
Oct 07 17:33:13 lmtp(31543): Debug: Added userdb setting:
mail=maildir:/home/vmail/testdo.com/123
Oct 07 17:33:13 lmtp(31543): Debug: Added userdb setting:
plugin/quota_rule=*:storage=30000
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug: Effective uid=2000,
gid=2000, home=/home/vmail/testdo.com/123
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug: Quota root:
name=User quota backend=dict args=:proxy::quotadict
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug: Quota rule:
root=User quota mailbox=* bytes=30720000 messages=0
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug: Quota rule:
root=User quota mailbox=Trash bytes=+104857600 messages=0
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug: Quota grace:
root=User quota bytes=3072000 (10%)
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug: dict quota:
user=123 at testdo.com, uri=proxy::quotadict, noenforcing=0
Oct 07 17:33:13 lmtp(31543, 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:33:13 lmtp(31543, 123 at testdo.com): Debug: maildir++:
root=/home/vmail/testdo.com/123, index=, indexpvt=, control=,
inbox=/home/vmail/testdo.com/123, altOct 07 17:33:13 lmtp(31543, 123 at
testdo.com): Debug: trash plugin: Added
'Spam' with priority 1
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug: trash plugin: Added
'Trash' with priority 2
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug: sieve: Pigeonhole
version 0.4.2 initializing
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug:
uFHMBEly2Vk3ewAAobcTNA: sieve: using the following location for user's
Sieve script: /home/vmail/testdo.com/123/.dovecot.sieve;name=main script
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug:
uFHMBEly2Vk3ewAAobcTNA: sieve: loading script
/home/vmail/testdo.com/123/.dovecot.sieve;name=main script
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug:
uFHMBEly2Vk3ewAAobcTNA: sieve: script binary
/home/vmail/testdo.com/123/.dovecot.svbin successfully loaded
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug:
uFHMBEly2Vk3ewAAobcTNA: sieve: binary save: not saving binary
/home/vmail/testdo.com/123/.dovecot.svbin, because it is already stored
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug:
uFHMBEly2Vk3ewAAobcTNA: sieve: executing script from
/home/vmail/testdo.com/123/.dovecot.svbin
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Debug: trash plugin: Failed
to remove enough messages (needed 17035766 bytes, expunged only 16803594
bytes)
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Info:
uFHMBEly2Vk3ewAAobcTNA: sieve:
msgid=<c5189e27-b2e3-bcc2-b34f-ecffa9d614cc at keagaming.com>: failed to
store into mailbox 'INBOX': Quota exceeded (mailbox for user is full)
Oct 07 17:33:13 lmtp(31543, 123 at testdo.com): Info:
uFHMBEly2Vk3ewAAobcTNA: sieve: execution of script
/home/vmail/testdo.com/123/.dovecot.sieve;name=main script failed with
unsuccessful implicit keep (user logfile
/home/vmail/testdo.com/123/.dovecot.sieve.log may reveal additional details)
Oct 07 17:33:13 lmtp(31543): Info: Disconnect from local: Successful quit
# 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.