On 08/09/2012 01:38, Daniel Parthey wrote:
Cibest ML wrote:
We've a strange quota behavior on our dovecot servers.
It seems that it's somehow doubling the real used storage (or could
be something like twice the inbox size + size of other folders, hard
to know for sure).
It was initial setup with the maildir++ system. Now it's been
configured with dict and mysql table but the result is the same.

Dovecot version : 2.1.7 (from squeeze-backports). Maildir format is used
As example, let's use mail...@domain.com.
If I check in the quota table, I'll find :
- size : 697151354
- number of files : 1510

Now if I check the Maildir folder on the filesystem, I'll find :
- size : 347960000
- number of files : 824 (using find . -type f|grep -v dovecot|wc -l,
not 100% accurate)

Another mail box
Reported by dovecot : 503446986    1081
Filesystem                     : 248592000    598

Does anyone has an idea of what could be possibly wrong. We've
checked & double-checked everything and nothing seems to be wrong
(no dsync used).
What happens after quota resync? Does the quota change?

What happens to the "doveadm quota get" output after LMTP/LDA delivery
of a mail with a fixed-size, let's say one mail with 1 MB?

How does your setup look like? Mailbox+Director Proxy or only Mailboxes?

What is your doveconf -n output of mailbox (and possibly director)?

Regards
Daniel
Hi Daniel,
Thanks for your answer
Here are some tests to show the problem. The test mailbox is initialy empty. All described actions are done in a sequencial way (test mail with an attachement of ~2Mo)

- Message delivered by LMTP
Quota name Type    Value  Limit
User quota STORAGE  2653 524288
User quota MESSAGE     1      -

- quota recalc
Quota name Type    Value  Limit
User quota STORAGE  5307 524288
User quota MESSAGE     2      -

- move to draft + compact
Quota name Type    Value  Limit
User quota STORAGE  2653 524288
User quota MESSAGE     1      -

- recalc
Quota name Type    Value  Limit
User quota STORAGE  2653 524288
User quota MESSAGE     1      -

- move to subfolder "test" in inbox
User quota STORAGE  2653 524288
User quota MESSAGE     1      -

- move message back to inbox
Quota name Type    Value  Limit
User quota STORAGE  5306 524288
User quota MESSAGE     2      -

- compact
Quota name Type    Value  Limit
User quota STORAGE  2653 524288
User quota MESSAGE     1      -

- recalc quota
Quota name Type    Value  Limit
User quota STORAGE  5306 524288
User quota MESSAGE     2      -


No dovecot director is used at the moment (it's planned). There's one server handling incoming mails (postfix + LMTP), one for IMAP/POP (dovecot) & one for email sending (postfix).

dovecot -n output of incoming mails server

# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.4.1 Debian 6.0.5 ext4
dict {
  quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
mail_gid = 1500
mail_home = /data/hosting/mail%h/%d/%n
mail_location = maildir:/data/hosting/mail%h/%d/%n/Maildir
mail_nfs_storage = yes
mail_plugins = " quota autocreate"
mail_uid = 1500
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
namespace inbox {
  inbox = yes
  location =
  prefix =
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  autocreate = Inbox
  autocreate2 = Trash
  autocreate3 = Sent
  autocreate4 = Spam
  autocreate5 = Drafts
  autosubscribe = Inbox
  autosubscribe2 = Trash
  autosubscribe3 = Sent
  autosubscribe4 = Spam
  autosubscribe5 = Drafts
  quota = dict:User quota::noenforcing:proxy::quota
  quota_rule = *:storage=512M
  quota_rule2 = Trash:storage=+100M
  quota_warning = storage=90%% quota-warning 95 %u
  quota_warning2 = storage=80%% quota-warning 80 %u
  sieve = /data/hosting/mail%h/%d/%n/sieve/.dovecot.sieve
  sieve_before = /etc/dovecot/globalsieve
  sieve_dir = /data/hosting/mail%h/%d/%n/sieve/
}
protocols = " lmtp sieve"
quota_full_tempfail = yes
service auth {
  unix_listener auth-userdb {
    group = vmail
    mode = 0660
    user = vmail
  }
}
service dict {
  unix_listener dict {
    group = vmail
    mode = 0600
    user = vmail
  }
}
service lmtp {
  inet_listener lmtp {
    address = 10.3.65.71 127.0.0.1 ::1
    port = 2055
  }
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0660
    user = postfix
  }
  user = vmail
}
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
  driver = prefetch
}
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocol lmtp {
  mail_plugins = " quota sieve autocreate"
}
protocol lda {
  mail_plugins = " quota"
}

*IMAP/POP server conf*

# 2.1.7: /etc/dovecot/dovecot.conf
# OS: Linux 3.4.1-ipv6-64-cibest-grsec x86_64 Debian 6.0.5 ext4
auth_mechanisms = plain login
dict {
  quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
disable_plaintext_auth = no
mail_gid = 1500
mail_home = /data/hosting/mail%h/%d/%n
mail_location = maildir:/data/hosting/mail%h/%d/%n/Maildir:INDEX=/data/hosting/mailcache%h/%d/%n
mail_nfs_storage = yes
mail_plugins = " quota autocreate"
mail_uid = 1500
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
namespace inbox {
  inbox = yes
  location =
  prefix =
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  autocreate = Inbox
  autocreate2 = Trash
  autocreate3 = Sent
  autocreate4 = Spam
  autocreate5 = Drafts
  autosubscribe = Inbox
  autosubscribe2 = Trash
  autosubscribe3 = Sent
  autosubscribe4 = Spam
  autosubscribe5 = Drafts
  quota = dict:User quota::noenforcing:proxy::quota
  quota_rule = *:storage=512M
  quota_rule2 = Trash:storage=+100M
  sieve = /data/hosting/mail%h/%d/%n/sieve/.dovecot.sieve
  sieve_before = sieve_before = /etc/dovecot/globalsieve
  sieve_dir = /data/hosting/mail%h/%d/%n/sieve/
}
protocols = " imap sieve pop3"
service auth-worker {
  user = $default_internal_user
}
service auth {
  inet_listener {
    port = 63200
  }
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0666
    user = postfix
  }
  unix_listener auth-userdb {
    group = vmail
    mode = 0660
    user = vmail
  }
}
service dict {
  unix_listener dict {
    group = vmail
    mode = 0600
    user = vmail
  }
}
service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
  process_min_avail = 4
  service_count = 1
  vsz_limit = 256 M
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
  process_min_avail = 5
  service_count = 0
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
ssl_ca = /etc/ssl/certs/xxxSSLCA.pem
ssl_cert = </etc/ssl/certs/xxx_com.crt
ssl_key = </etc/ssl/private/xxx_com.key
userdb {
  driver = prefetch
}
protocol lda {
  mail_plugins = " quota"
}
protocol imap {
  mail_plugins = " quota imap_quota autocreate"
}
protocol pop3 {
  mail_plugins = " quota"
}

Hope it'll help nailing the issue

--
Regards
Sébastien

Reply via email to