Empty response with userFile from doveadm HTTP API

lab at 403.sk lab at 403.sk
Fri Jun 18 15:17:28 EEST 2021


Hi,

I must be doing something terribly wrong, but I am not able to get a non 
empty response from doveadm HTTP API when using userFile parameter. E. 
g. in getQuota or search command. Single user or wildcard working as 
expected.

./doveadm_cli.py --apikey $key --apiurl http://localhost:8180/doveadm/v1
(doveadm) quotaGet userFile=/tmp/f
[]
Results: 0

cat /tmp/f
box1 at domain.tld
box2 at domain.tld

Result with plain cURL is exactly the same.
curl -X POST http://localhost:8180/doveadm/v1 -H "Content-Type: 
application/json" -H "Authorization: X-Dovecot-API xxx" -d 
'[["quotaGet",{"userFile":"/tmp/f"},"tag1"]]'
[["doveadmResponse",[],"tag1"]]

Doveadm binary has no problem of reading that file. In a debug log I can 
see request finishes after "Handling LIST request" and does not jump to 
"Handling USER request" as in doveadm (binary) case. Am I missing 
something?

dovecot: doveadm(::1): Executing command quota get
dovecot: doveadm: Debug: auth-master: userdb list: Started listing users 
(user_mask=*)
dovecot: doveadm: Debug: auth-master: conn 
unix:/var/run/dovecot/auth-userdb: Connecting
dovecot: doveadm: Debug: auth-master: conn 
unix:/var/run/dovecot/auth-userdb (pid=13811,uid=0): Client connected 
(fd=8)
dovecot: doveadm(::1): Debug: auth-master: userdb list: Finished listing 
users
dovecot: doveadm(::1): Debug: auth-master: conn 
unix:/var/run/dovecot/auth-userdb (pid=13811,uid=0): Disconnected: 
Connection closed (fd=8)
dovecot: auth: Debug: master in: LIST#0111#011user=*
dovecot: doveadm(::1): doveadm: ::1 - - "POST /doveadm/v1 HTTP/1.1" 200 
77 "http://localhost:8180/doveadm/v1" "python-requests/2.6.0 
CPython/2.7.5"
dovecot: auth-worker(13875): Debug: Loading modules from directory: 
/usr/lib64/dovecot/auth
dovecot: auth-worker(13875): Debug: Module loaded: 
/usr/lib64/dovecot/auth/lib20_auth_var_expand_crypt.so
dovecot: auth-worker(13875): Debug: Module loaded: 
/usr/lib64/dovecot/auth/libdriver_mysql.so
dovecot: auth-worker(13875): Debug: Module loaded: 
/usr/lib64/dovecot/auth/libdriver_sqlite.so
dovecot: auth-worker(13875): Debug: conn unix:auth-worker 
(pid=13839,uid=97): Server accepted connection (fd=15)
dovecot: auth-worker(13875): Debug: conn unix:auth-worker 
(pid=13839,uid=97): Sending version handshake
dovecot: auth-worker(13875): Debug: conn unix:auth-worker 
(pid=13839,uid=97): auth-worker<1>: Handling LIST request
dovecot: auth-worker(13875): Debug: conn unix:auth-worker 
(pid=13839,uid=97): auth-worker<1>: sql(*): Performing userdb lookup
dovecot: auth-worker(13875): Debug: conn unix:auth-worker 
(pid=13839,uid=97): auth-worker<1>: sql(*): SELECT email AS user FROM 
mailbox WHERE active=1
dovecot: auth-worker(13875): Debug: conn unix:auth-worker 
(pid=13839,uid=97): auth-worker<1>: sql(*): Finished userdb lookup
dovecot: auth-worker(13875): Debug: conn unix:auth-worker 
(pid=13839,uid=97): auth-worker<1>: Finished

doveconf -n
# 2.3.14 (cee3cbc0d): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.14 (1b5c82b2)
# OS: Linux 3.10.0-862.2.3.el7.x86_64 x86_64 CentOS Linux release 
7.5.1804 (Core)
# Hostname: xxx
auth_debug = yes
auth_mechanisms = plain login cram-md5
auth_verbose = yes
default_client_limit = 6000
default_process_limit = 512
disable_plaintext_auth = no
doveadm_api_key = # hidden, use -P to show it
mail_debug = yes
mail_home = /h/v/%d/%n
mail_location = maildir:~/Maildir
mail_plugins = quota
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 index ihave duplicate mime foreverypart 
extracttext
mbox_write_locks = fcntl
namespace inbox {
   inbox = yes
   list = yes
   location =
   mailbox "Deleted Items" {
     special_use = \Trash
   }
   mailbox Drafts {
     special_use = \Drafts
   }
   mailbox Junk {
     special_use = \Junk
   }
   mailbox Sent {
     special_use = \Sent
   }
   mailbox "Sent Items" {
     special_use = \Sent
   }
   mailbox "Sent Messages" {
     special_use = \Sent
   }
   mailbox Spam {
     special_use = \Junk
   }
   mailbox Trash {
     special_use = \Trash
   }
   prefix =
   type = private
}
passdb {
   args = /etc/dovecot/local-sql.conf
   driver = sql
}
plugin {
   quota = maildir
   quota_grace = 10M
   quota_rule2 = Kos:storage=+100M
   quota_rule3 = Trash:storage=+100M
   quota_rule4 = Deleted Messages:storage=+100M
   quota_status_nouser = DUNNO
   quota_status_overquota = 552 5.2.2 Mailbox is full
   quota_status_success = DUNNO
   sieve = file:~/sieve;active=~/.dovecot.sieve
}
service auth-worker {
   idle_kill = 30 secs
}
service auth {
   unix_listener /var/spool/postfix/private/auth {
     group = mail
     mode = 0660
     user = postfix
   }
   unix_listener auth-userdb {
     mode = 0600
     user = vmail
   }
}
service doveadm {
   client_limit = 1
   inet_listener http {
     address = localhost
     port = 8180
   }
   process_min_avail = 1
   unix_listener doveadm-server {
     mode = 0600
     user = vmail
   }
   user = vmail
}
service imap-login {
   process_limit = 4096
   process_min_avail = 10
   service_count = 1
}
service imap {
   process_limit = 4096
}
service lmtp {
   process_min_avail = 5
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
     group = postfix
     mode = 0600
     user = postfix
   }
   user = vmail
}
service pop3-login {
   client_limit = 2048
}
service quota-status {
   client_limit = 1
   executable = quota-status -p postfix
   process_min_avail = 5
   unix_listener /var/spool/postfix/private/dovecot-quota-status {
     group = postfix
     mode = 0600
     user = postfix
   }
   user = vmail
}
ssl_ca = </etc/pki/tls/cert.pem
ssl_cert = </etc/pki/o/default.pem
ssl_cipher_list = HIGH:!aNULL:!SSLv2:!ADH:!EXP:!eNULL:!RC4:!MEDIUM:!LOW
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_prefer_server_ciphers = yes
userdb {
   driver = prefetch
}
userdb {
   args = /etc/dovecot/local-sql.conf
   driver = sql
}
verbose_proctitle = yes
protocol lmtp {
   mail_plugins = quota sieve
}
protocol imap {
   mail_max_userip_connections = 50
   mail_plugins = quota imap_quota
}

Kind regards,
Libor


More information about the dovecot mailing list