[Dovecot] Problems with quota dict in 1.1.alpha4
arvids
arvids at mpe.lv
Sat Sep 22 18:17:28 EEST 2007
On Saturday 22 September 2007 16:29:50 Timo Sirainen wrote:
> I couldn't reproduce this, but I did fix some other problems with quota.
> Try the latest nightly snapshot to see if they fixed this problem also?
I have tried snapshot eab04861f2fc - it does not fix the problem.
The problem is constantly reproducible on my system. I will try to describe problem in details.
I have created 6 test users - test1..test6(the number of users is not important). Then I send
one email with these 6 users as recipients. Postfix server launches 6 dovecot deliver processes
in parallel. And the quota dictionary is updateted incorrectly. The incorrectness is random - sometimes
quota dictionary is updated as if one of these 6 users received 6 messages, sometimes as if one user
received 3 messages, one user - 2 messages, one user - 1 message etc. The total count of received
messages always equals the total count of quota updates for these users - just the updates are
for wrong users. I can not reproduce the problem if I launch deliver process with different recipients
from command-line quickly one after another.
Below is details for one such mail.
SQL dict before mail:
mysql> select * from current where user like "test_";
Empty set (0.00 sec)
SQL dict after mail:
mysql> select * from current where user like "test_";
+-------+----------------+---------+
| user | path | current |
+-------+----------------+---------+
| test2 | quota/messages | 1 |
| test2 | quota/storage | 940 |
| test3 | quota/messages | 5 |
| test3 | quota/storage | 4700 |
+-------+----------------+---------+
4 rows in set (0.00 sec)
delivery logs for this:
Sep 22 17:52:42 server2 deliver(test2): Loading modules from directory: /usr/local/dovecot/lib/dovecot/lda
Sep 22 17:52:42 server2 deliver(test2): Module loaded: /usr/local/dovecot/lib/dovecot/lda/lib10_quota_plugin.so
Sep 22 17:52:42 server2 deliver(test2): auth input: test2
Sep 22 17:52:42 server2 deliver(test2): auth input: home=/vmail/00/test2
Sep 22 17:52:42 server2 deliver(test2): auth input: uid=95
Sep 22 17:52:42 server2 deliver(test2): auth input: gid=95
Sep 22 17:52:42 server2 deliver(test2): auth input: quota_rule=*:storage=2000
Sep 22 17:52:42 server2 deliver(test2): auth input: quota_rule2=*:messages=40
Sep 22 17:52:42 server2 deliver(test2): auth input: quota_warning=storage=950 /usr/local/bin/quota-storage-warning.sh 95
Sep 22 17:52:42 server2 deliver(test2): auth input: quota_warning2=messages=19 /usr/local/bin/quota-messages-warning.sh 95
Sep 22 17:52:42 server2 deliver(test2): Home dir not found: /vmail/00/test2
Sep 22 17:52:42 server2 deliver(test2): dict quota: user = test2, uri = proxy:/var/run/dovecot/dict-server:quotadict
Sep 22 17:52:42 server2 deliver(test2): Quota rule: root= mailbox= storage=2000kB messages=0
Sep 22 17:52:42 server2 deliver(test2): Quota rule: root= mailbox= storage=2000kB messages=40
Sep 22 17:52:42 server2 deliver(test2): maildir: data=/vmail/00/test2/Maildir
Sep 22 17:52:42 server2 deliver(test2): maildir++: root=/vmail/00/test2/Maildir, index=, control=, inbox=/vmail/00/test2/Maildir
Sep 22 17:52:42 server2 deliver(test2): msgid=<200709221752.41292.arvids at arvids.net>: saved mail to INBOX
Sep 22 17:52:42 server2 deliver(test3): Loading modules from directory: /usr/local/dovecot/lib/dovecot/lda
Sep 22 17:52:42 server2 deliver(test3): Module loaded: /usr/local/dovecot/lib/dovecot/lda/lib10_quota_plugin.so
Sep 22 17:52:42 server2 deliver(test3): auth input: test3
Sep 22 17:52:42 server2 deliver(test3): auth input: home=/vmail/00/test3
Sep 22 17:52:42 server2 deliver(test3): auth input: uid=95
Sep 22 17:52:42 server2 deliver(test3): auth input: gid=95
Sep 22 17:52:42 server2 deliver(test3): auth input: quota_rule=*:storage=2000
Sep 22 17:52:42 server2 deliver(test3): auth input: quota_rule2=*:messages=40
Sep 22 17:52:42 server2 deliver(test3): auth input: quota_warning=storage=950 /usr/local/bin/quota-storage-warning.sh 95
Sep 22 17:52:42 server2 deliver(test3): auth input: quota_warning2=messages=19 /usr/local/bin/quota-messages-warning.sh 95
Sep 22 17:52:42 server2 deliver(test3): Home dir not found: /vmail/00/test3
Sep 22 17:52:42 server2 deliver(test3): dict quota: user = test3, uri = proxy:/var/run/dovecot/dict-server:quotadict
Sep 22 17:52:42 server2 deliver(test3): Quota rule: root= mailbox= storage=2000kB messages=0
Sep 22 17:52:42 server2 deliver(test3): Quota rule: root= mailbox= storage=2000kB messages=40
Sep 22 17:52:42 server2 deliver(test3): maildir: data=/vmail/00/test3/Maildir
Sep 22 17:52:42 server2 deliver(test3): maildir++: root=/vmail/00/test3/Maildir, index=, control=, inbox=/vmail/00/test3/Maildir
Sep 22 17:52:42 server2 deliver(test1): Loading modules from directory: /usr/local/dovecot/lib/dovecot/lda
Sep 22 17:52:42 server2 deliver(test1): Module loaded: /usr/local/dovecot/lib/dovecot/lda/lib10_quota_plugin.so
Sep 22 17:52:42 server2 deliver(test1): auth input: test1
Sep 22 17:52:42 server2 deliver(test1): auth input: home=/vmail/00/test1
Sep 22 17:52:42 server2 deliver(test1): auth input: uid=95
Sep 22 17:52:42 server2 deliver(test1): auth input: gid=95
Sep 22 17:52:42 server2 deliver(test1): auth input: quota_rule=*:storage=2000
Sep 22 17:52:42 server2 deliver(test1): auth input: quota_rule2=*:messages=40
Sep 22 17:52:42 server2 deliver(test1): auth input: quota_warning=storage=950 /usr/local/bin/quota-storage-warning.sh 95
Sep 22 17:52:42 server2 deliver(test1): auth input: quota_warning2=messages=19 /usr/local/bin/quota-messages-warning.sh 95
Sep 22 17:52:42 server2 deliver(test1): Home dir not found: /vmail/00/test1
Sep 22 17:52:42 server2 deliver(test1): dict quota: user = test1, uri = proxy:/var/run/dovecot/dict-server:quotadict
Sep 22 17:52:42 server2 deliver(test1): Quota rule: root= mailbox= storage=2000kB messages=0
Sep 22 17:52:42 server2 deliver(test1): Quota rule: root= mailbox= storage=2000kB messages=40
Sep 22 17:52:42 server2 deliver(test1): maildir: data=/vmail/00/test1/Maildir
Sep 22 17:52:42 server2 deliver(test1): maildir++: root=/vmail/00/test1/Maildir, index=, control=, inbox=/vmail/00/test1/Maildir
Sep 22 17:52:42 server2 deliver(test6): Loading modules from directory: /usr/local/dovecot/lib/dovecot/lda
Sep 22 17:52:42 server2 deliver(test6): Module loaded: /usr/local/dovecot/lib/dovecot/lda/lib10_quota_plugin.so
Sep 22 17:52:42 server2 deliver(test6): auth input: test6
Sep 22 17:52:42 server2 deliver(test6): auth input: home=/vmail/00/test6
Sep 22 17:52:42 server2 deliver(test6): auth input: uid=95
Sep 22 17:52:42 server2 deliver(test6): auth input: gid=95
Sep 22 17:52:42 server2 deliver(test6): auth input: quota_rule=*:storage=2000
Sep 22 17:52:42 server2 deliver(test6): auth input: quota_rule2=*:messages=40
Sep 22 17:52:42 server2 deliver(test6): auth input: quota_warning=storage=950 /usr/local/bin/quota-storage-warning.sh 95
Sep 22 17:52:42 server2 deliver(test6): auth input: quota_warning2=messages=19 /usr/local/bin/quota-messages-warning.sh 95
Sep 22 17:52:42 server2 deliver(test6): Home dir not found: /vmail/00/test6
Sep 22 17:52:42 server2 deliver(test6): dict quota: user = test6, uri = proxy:/var/run/dovecot/dict-server:quotadict
Sep 22 17:52:42 server2 deliver(test6): Quota rule: root= mailbox= storage=2000kB messages=0
Sep 22 17:52:42 server2 deliver(test6): Quota rule: root= mailbox= storage=2000kB messages=40
Sep 22 17:52:42 server2 deliver(test6): maildir: data=/vmail/00/test6/Maildir
Sep 22 17:52:42 server2 deliver(test6): maildir++: root=/vmail/00/test6/Maildir, index=, control=, inbox=/vmail/00/test6/Maildir
Sep 22 17:52:42 server2 deliver(test4): Loading modules from directory: /usr/local/dovecot/lib/dovecot/lda
Sep 22 17:52:42 server2 deliver(test4): Module loaded: /usr/local/dovecot/lib/dovecot/lda/lib10_quota_plugin.so
Sep 22 17:52:42 server2 deliver(test4): auth input: test4
Sep 22 17:52:42 server2 deliver(test4): auth input: home=/vmail/00/test4
Sep 22 17:52:42 server2 deliver(test4): auth input: uid=95
Sep 22 17:52:42 server2 deliver(test4): auth input: gid=95
Sep 22 17:52:42 server2 deliver(test4): auth input: quota_rule=*:storage=2000
Sep 22 17:52:42 server2 deliver(test4): auth input: quota_rule2=*:messages=40
Sep 22 17:52:42 server2 deliver(test4): auth input: quota_warning=storage=950 /usr/local/bin/quota-storage-warning.sh 95
Sep 22 17:52:42 server2 deliver(test4): auth input: quota_warning2=messages=19 /usr/local/bin/quota-messages-warning.sh 95
Sep 22 17:52:42 server2 deliver(test4): Home dir not found: /vmail/00/test4
Sep 22 17:52:42 server2 deliver(test4): dict quota: user = test4, uri = proxy:/var/run/dovecot/dict-server:quotadict
Sep 22 17:52:42 server2 deliver(test4): Quota rule: root= mailbox= storage=2000kB messages=0
Sep 22 17:52:42 server2 deliver(test4): Quota rule: root= mailbox= storage=2000kB messages=40
Sep 22 17:52:42 server2 deliver(test4): maildir: data=/vmail/00/test4/Maildir
Sep 22 17:52:42 server2 deliver(test4): maildir++: root=/vmail/00/test4/Maildir, index=, control=, inbox=/vmail/00/test4/Maildir
Sep 22 17:52:42 server2 deliver(test5): Loading modules from directory: /usr/local/dovecot/lib/dovecot/lda
Sep 22 17:52:42 server2 deliver(test5): Module loaded: /usr/local/dovecot/lib/dovecot/lda/lib10_quota_plugin.so
Sep 22 17:52:42 server2 deliver(test5): auth input: test5
Sep 22 17:52:42 server2 deliver(test5): auth input: home=/vmail/00/test5
Sep 22 17:52:42 server2 deliver(test5): auth input: uid=95
Sep 22 17:52:42 server2 deliver(test5): auth input: gid=95
Sep 22 17:52:42 server2 deliver(test5): auth input: quota_rule=*:storage=2000
Sep 22 17:52:42 server2 deliver(test5): auth input: quota_rule2=*:messages=40
Sep 22 17:52:42 server2 deliver(test5): auth input: quota_warning=storage=950 /usr/local/bin/quota-storage-warning.sh 95
Sep 22 17:52:42 server2 deliver(test5): auth input: quota_warning2=messages=19 /usr/local/bin/quota-messages-warning.sh 95
Sep 22 17:52:42 server2 deliver(test5): Home dir not found: /vmail/00/test5
Sep 22 17:52:42 server2 deliver(test5): dict quota: user = test5, uri = proxy:/var/run/dovecot/dict-server:quotadict
Sep 22 17:52:42 server2 deliver(test5): Quota rule: root= mailbox= storage=2000kB messages=0
Sep 22 17:52:42 server2 deliver(test5): Quota rule: root= mailbox= storage=2000kB messages=40
Sep 22 17:52:42 server2 deliver(test5): maildir: data=/vmail/00/test5/Maildir
Sep 22 17:52:42 server2 deliver(test5): maildir++: root=/vmail/00/test5/Maildir, index=, control=, inbox=/vmail/00/test5/Maildir
Sep 22 17:52:42 server2 deliver(test5): msgid=<200709221752.41292.arvids at arvids.net>: saved mail to INBOX
Sep 22 17:52:42 server2 deliver(test3): msgid=<200709221752.41292.arvids at arvids.net>: saved mail to INBOX
Sep 22 17:52:42 server2 deliver(test4): msgid=<200709221752.41292.arvids at arvids.net>: saved mail to INBOX
Sep 22 17:52:42 server2 deliver(test6): msgid=<200709221752.41292.arvids at arvids.net>: saved mail to INBOX
Sep 22 17:52:42 server2 deliver(test1): msgid=<200709221752.41292.arvids at arvids.net>: saved mail to INBOX
dovecot -n:
# 1.1.alpha5: /usr/local/dovecot/etc/dovecot.conf
base_dir: /var/run/dovecot/
syslog_facility: local0
protocols: pop3
ssl_disable: yes
disable_plaintext_auth: no
login_dir: /var/run/dovecot/login
login_executable: /usr/local/dovecot/libexec/dovecot/pop3-login
login_greeting: Server.
login_process_per_connection: no
login_process_size: 64
verbose_proctitle: yes
first_valid_uid: 95
first_valid_gid: 95
mail_uid: 95
mail_gid: 95
mail_location: maildir:~/Maildir
mail_debug: yes
fsync_disable: yes
mail_executable: /usr/local/dovecot/libexec/dovecot/pop3
mail_plugins: quota
mail_plugin_dir: /usr/local/dovecot/lib/dovecot/pop3
pop3_enable_last: yes
pop3_client_workarounds: outlook-no-nuls oe-ns-eoh
auth default:
mechanisms: plain login digest-md5 cram-md5 apop
cache_size: 2048
cache_ttl: 28800
cache_negative_ttl: 60
user: doveauth
verbose: yes
debug: yes
debug_passwords: yes
passdb:
driver: sql
args: /usr/local/dovecot/etc/dovecot-sql.conf
userdb:
driver: prefetch
userdb:
driver: sql
args: /usr/local/dovecot/etc/dovecot-sql.conf
socket:
type: listen
master:
path: /var/run/dovecot/auth-master
mode: 384
user: vmail
group: vmail
plugin:
quota: dict:::proxy:/var/run/dovecot/dict-server:quotadict
dict:
quotadict: mysql:/usr/local/dovecot/etc/dovecot-sql-dict-quota.conf
Regards, Arvids
More information about the dovecot
mailing list