quota-status returns quota_status_success when email would put user over quota

Christian Kivalo ml+dovecot at valo.at
Tue Jan 31 22:20:01 UTC 2017



Am 31. Jänner 2017 16:36:35 MEZ schrieb Kristian Pedersen <kp at asom-net.dk>:
>Hi list,
>
>We still did not manage to get quota-status working.
>We're hoping someone can provide some feedback/ideas on how we may 
>investigate this issue further?
>Is it likely to be a bug fixed in a newer version?
>
>Regards,
>
>Kristian
>
>

[...]

>>
>> Quota-status will return unknown user if that is the case:
>> root at mail:~# printf 
>> "recipient=kptest2 at asom-net.dk\nsize=1000000000\n\n" | nc -q1 
>> localhost 12340
>> action=551 5.5.1 User not found
>>

Tried this and works here. Doveconf -n output with regards to quota settings is very similar, i use a quota dict, not maildir, spotted one difference i commented in your doveconf -n and i'm using version 2.2.27 from source
...
>>
>> dovecot -n:
>> # 2.2.13: /etc/dovecot/dovecot.conf
>> # OS: Linux 3.16.0-4-amd64 x86_64 Debian 8.6 ext4
>> auth_default_realm = vejen-net.dk
>> auth_mechanisms = plain login
>> auth_verbose = yes
>> disable_plaintext_auth = no
>> first_valid_uid = 110
>> log_timestamp = "%Y-%m-%d %H:%M:%S "
>> mail_debug = yes
>> mail_location = maildir:/data/vmail/%d/%n/

The one line i'm missing here from your doveconf -n output is mail_plugins = " quota" set in conf.d/10-mail.conf

Have you added quota to the global mail plugins setting? http://wiki2.dovecot.org/Quota

>> mail_privileged_group = mail
>> namespace inbox {
>>   inbox = yes
>>   location =
>>   mailbox Drafts {
>>     special_use = \Drafts
>>   }
>>   mailbox Junk {
>>     special_use = \Junk
>>   }
>>   mailbox Sent {
>>     special_use = \Sent
>>   }
>>   mailbox "Sent Messages" {
>>     special_use = \Sent
>>   }
>>   mailbox Trash {
>>     special_use = \Trash
>>   }
>>   prefix =
>> }
>> passdb {
>>   args = /etc/dovecot/local-sql.conf
>>   driver = sql
>> }
>> plugin {
>>   quota = maildir:User quota
>>   quota_rule = *:storage=200M
>>   quota_status_nouser = 551 5.5.1 User not found
>>   quota_status_overquota = 552 5.2.2 Mailbox is full
>>   quota_status_success = DUNNO
>> }
>> protocols = imap pop3
>> service auth {
>>   unix_listener /var/spool/postfix/private/auth {
>>     group = postfix
>>     mode = 0660
>>     user = postfix
>>   }
>>   unix_listener auth-master {
>>     mode = 0600
>>     user = vmail
>>   }
>>   user = root
>> }
>> service imap-login {
>>   client_limit = 1024
>>   process_limit = 256
>>   process_min_avail = 8
>>   service_count = 0
>>   vsz_limit = 512 M
>> }
>> service imap {
>>   process_limit = 10240
>> }
>> service pop3-login {
>>   client_limit = 512
>>   process_limit = 256
>>   process_min_avail = 8
>>   service_count = 0
>>   vsz_limit = 512 M
>> }
>> service pop3 {
>>   process_limit = 10240
>> }
>> service quota-status {
>>   client_limit = 1
>>   executable = /usr/lib/dovecot/quota-status -p postfix
>>   inet_listener {
>>     port = 12340
>>   }
>> }
>> ssl_cert = </etc/letsencrypt/live/mail.asom-net.dk/fullchain.pem
>> ssl_key = </etc/letsencrypt/live/mail.asom-net.dk/privkey.pem
>> ssl_prefer_server_ciphers = yes
>> userdb {
>>   args = /etc/dovecot/local-sql.conf
>>   driver = sql
>> }
>> protocol lda {
>>   auth_socket_path = /var/run/dovecot/auth-master
>>   mail_plugins = quota
>>   postmaster_address = postmaster at asom-net.dk
>> }
>> protocol imap {
>>   mail_plugins = quota imap_quota
>> }
>> protocol pop3 {
>>   mail_plugins = quota
>>   pop3_uidl_format = %08Xu%08Xv
>> }
>>
>>
>> local-sql.conf:
>> driver = mysql
>> connect = host=xyz dbname=xyz user=xyz password=xyz
>> default_pass_scheme = CRYPT
>> password_query = SELECT email as user, password FROM virtual_users 
>> WHERE email='%u';
>> user_query = SELECT 
>>
>CONCAT('/data/vmail/',CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1)))
>
>> AS home, 110 AS uid, 110 AS gid, CONCAT('*:storage=',mailquota,'M')
>AS 
>> quota_rule FROM virtual_users WHERE email='%u';
>>
>> If I do a strace on the quota-status PID, it seems to do a stat on
>the 
>> directory and then give up? Not sure Im interpreting it correct (only
>
>> including the last few lines):
>> ...
>> lseek(14, 833, SEEK_SET)                = 833
>> munmap(0x7f165d32a000, 833)             = 0
>> close(14)                               = 0
>> geteuid()                               = 0
>> getegid()                               = 110
>> getgid()                                = 110
>> getegid()                               = 110
>> setgroups(1, [110])                     = 0
>> setresuid(-1, 110, -1)                  = 0
>> prctl(PR_SET_DUMPABLE, 1)               = 0
>> stat("/data/vmail/asom-net.dk/kptest", {st_mode=S_IFDIR|0700, 
>> st_size=4096, ...}) = 0
>> prctl(PR_SET_DUMPABLE, 1)               = 0
>> setsockopt(12, SOL_TCP, TCP_CORK, [1], 4) = 0
>> write(12, "action=DUNNO\n\n", 14)       = 14
>> setsockopt(12, SOL_TCP, TCP_CORK, [0], 4) = 0
>> epoll_wait(11, {{EPOLLIN, {u32=1593554016, u64=139734059562080}}}, 5,
>
>> 59999) = 1
>> read(12, "", 8146)                      = 0
>> epoll_ctl(11, EPOLL_CTL_DEL, 12, 7fff0be817a0) = 0
>> close(12)                               = 0
>> epoll_wait(11, {}, 5, 1000)             = 0
>> write(5, "\35q\1\0007\10\0\0\1\0\0\0", 12) = 12
>> epoll_wait(11,
>> ...
>>
>> It seems like sort of permission issue?
>> root at mail:~# su - vmail
>> No directory, logging in with HOME=/
>> $ id -a
>> uid=110(vmail) gid=110(vmail) groups=110(vmail)
>> $ cat /data/vmail/asom-net.dk/kptest/maildirsize
>> 524288000S
>> 685 1
>> 690 1
>>
>> /data/vmail/asom-net.dk is actually a symlink, maybe that could be of
>
>> importance?:
>> root at mail:~# ls -ld /data/vmail/asom-net.dk
>> lrwxrwxrwx 1 root root 19 Jan  9 11:18 /data/vmail/asom-net.dk -> 
>> ../mnt1/asom-net.dk
>>
>> root at mail:~# ls -ld /data/mnt1/asom-net.dk/
>> drwxrwx--- 45 vmail vmail 4096 Dec 15 10:54 /data/mnt1/asom-net.dk/
>>
>> root at mail:~# ls -ld /data/mnt1/asom-net.dk/kptest/
>> drwx------ 9 vmail vmail 4096 Jan 23 08:55
>/data/mnt1/asom-net.dk/kptest/
>>
>> root at mail:~# ls -ld /data/mnt1/asom-net.dk/kptest/maildirsize
>> -rw------- 1 vmail vmail 23 Jan 12 16:50 
>> /data/mnt1/asom-net.dk/kptest/maildirsize
>>
>> Anyone have any idea what might be wrong here?
>>
>> Regards,
>>
-- 
 Christian Kivalo


More information about the dovecot mailing list