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=, alt=
Oct 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: 1...@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, 1...@testdo.com): Debug: Effective uid=2000, gid=2000, home=/home/vmail/testdo.com/123 Oct 07 17:16:03 lmtp(26801, 1...@testdo.com): Debug: Quota root: name=User quota backend=dict args=:proxy::quotadict Oct 07 17:16:03 lmtp(26801, 1...@testdo.com): Debug: Quota rule: root=User quota mailbox=* bytes=20480000 messages=0 Oct 07 17:16:03 lmtp(26801, 1...@testdo.com): Debug: Quota rule: root=User quota mailbox=Trash bytes=+104857600 messages=0 Oct 07 17:16:03 lmtp(26801, 1...@testdo.com): Debug: Quota grace: root=User quota bytes=2048000 (10%) Oct 07 17:16:03 lmtp(26801, 1...@testdo.com): Debug: dict quota: user=1...@testdo.com, uri=proxy::quotadict, noenforcing=0 Oct 07 17:16:03 lmtp(26801, 1...@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, 1...@testdo.com): Debug: maildir++: root=/home/vmail/testdo.com/123, index=, indexpvt=, control=, inbox=/home/vmail/testdo.com/123, alt= Oct 07 17:16:03 lmtp(26801, 1...@testdo.com): Debug: sieve: Pigeonhole version 0.4.2 initializing Oct 07 17:16:03 lmtp(26801, 1...@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, 1...@testdo.com): Debug: OFqmG0Nu2VmxaAAAobcTNA: sieve: loading script /home/vmail/testdo.com/123/.dovecot.sieve;name=main script Oct 07 17:16:03 lmtp(26801, 1...@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, 1...@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, 1...@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, 1...@testdo.com): Info: OFqmG0Nu2VmxaAAAobcTNA: sieve: msgid=<3a1e5ba2-f0a7-4cec-e7fb-bf5202c21...@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 = administra...@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 = postmas...@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.

Reply via email to