Discussion:
Dovecot does not update maildirsize after expunge
Király Balázs
2014-10-04 16:27:31 UTC
Permalink
Hello,



At the first, sorry for my englishJ



I have a problem with dovecot quota since i migrated from courier. Dovecot
does not update the Maildirsize after expunge, and the user running out of
his quota very quickly.

I checked, the file is deleted from the filesystem. If i delete the
Maildirsize file, dovecot regenerate it with the correct datas when a new
mail arrive.



Also tried to set mail_debug=yes, but it doesnt show anything in the log,
when delete mails.



Im using NFS as homedirs, i tried to turn off the releated options in
configuration, but didnt help.



Has anyone any idea how to fix this issue? Thank you!



Here is the output of dovecot -n:



# 2.1.7: /etc/dovecot/dovecot.conf

# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.6 nfs

auth_mechanisms = plain login

default_client_limit = 10000

default_process_limit = 1000

dict {

quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext

}

disable_plaintext_auth = no

mail_fsync = always

mail_location = maildir:/home/vmail/%d/%n

mail_nfs_index = yes

mail_nfs_storage = yes

mmap_disable = yes

namespace inbox {

inbox = yes

location =

mailbox Drafts {

auto = subscribe

special_use = \Drafts

}

mailbox Sent {

auto = subscribe

special_use = \Sent

}

mailbox "Sent Messages" {

special_use = \Sent

}

mailbox Spam {

auto = subscribe

special_use = \Junk

}

mailbox Trash {

auto = subscribe

special_use = \Trash

}

prefix = INBOX.

separator = .

type = private

}

passdb {

args = /etc/dovecot/dovecot-sql.conf.ext

driver = sql

}plugin {

quota = maildir:User quota

sieve = /home/vmail/default.sieve

sieve_default = /home/vmail/default.sieve

sieve_dir = ~/sieve

sieve_extensions = +editheader

sieve_global_dir = /var/lib/dovecot/sieve

}

protocols = " imap pop3"

service auth-worker {

user = vmail

}

service auth {

unix_listener /var/spool/postfix/private/auth {

group = postfix

mode = 0660

user = postfix

}

unix_listener auth-userdb {

mode = 0600

user = vmail

}

user = $default_internal_user

}

service dict {

unix_listener dict {

group = vmail

mode = 0600

user = vmail

}

}

ssl_cert = </etc/postfix/domain.tld.crt

ssl_key = </etc/postfix/domain.tld.key

userdb {

args = /etc/dovecot/dovecot-sql.conf.ext

driver = sql

}

protocol lda {

mail_plugins = " quota sieve"

}

protocol imap {

mail_max_userip_connections = 20

}

protocol pop3 {

mail_max_userip_connections = 20

}



cat dovecot-sql.conf.ext

driver = mysql

connect = host=xx user=mailadmin password=xx dbname=xx

default_pass_scheme = SHA512-CRYPT

password_query = \

SELECT email as user, password \

FROM email_accounts WHERE email = '%u' AND smtp > IF('%s'='smtp', 0, -1)



user_query = \

SELECT CONCAT('/home/vmail/', '%d', '/', '%n') as home, 5000 as uid, 5000
as gid, CONCAT('*:bytes=', quota) as quota_rule \

FROM email_accounts WHERE email = '%u'



# If you wish to avoid two SQL lookups (passdb + userdb), you can use

# userdb prefetch instead of userdb sql in dovecot.conf. In that case you'll

# also have to return userdb fields in password_query prefixed with
"userdb_"

# string. For example:

#password_query = \

# SELECT userid AS user, password, \

# home AS userdb_home, uid AS userdb_uid, gid AS userdb_gid \

# FROM users WHERE userid = '%u'



# Query to get a list of all usernames.

#iterate_query = SELECT username AS user FROM users

Loading...