doveadm dsync-server doesn't use user parameter?

Harald Leithner leithner at itronic.at
Fri Nov 23 14:26:10 EET 2018


I did a debug output of the dsync-server and found out that it queries
the userdb parameter but doesn't use it.

---
Debug: Loading modules from directory: /usr/lib/dovecot/modules
Debug: Module loaded: /usr/lib/dovecot/modules/lib01_acl_plugin.so
Debug: Module loaded: /usr/lib/dovecot/modules/lib02_lazy_expunge_plugin.so
Debug: Module loaded: /usr/lib/dovecot/modules/lib10_quota_plugin.so
Debug: Module loaded: /usr/lib/dovecot/modules/lib15_notify_plugin.so
Debug: Module loaded: /usr/lib/dovecot/modules/lib20_mail_log_plugin.so
Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm
Debug: Module loaded:
/usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so
Debug: Skipping module doveadm_expire_plugin, because dlopen() failed:
/usr/lib/dovecot/modules/doveadm/lib10_doveadm_expire_plugin.so:
undefined symbol: expire_set_deinit (this is usually intentional, so
just ignore this message)
Debug: Module loaded:
/usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so
Debug: Module loaded:
/usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so
Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen()
failed:
/usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so:
undefined symbol: lucene_index_iter_deinit (this is usually intentional,
so just ignore this message)
Debug: Skipping module doveadm_fts_plugin, because dlopen() failed:
/usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined
symbol: fts_user_get_language_list (this is usually intentional, so just
ignore this message)
Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen()
failed:
/usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so:
undefined symbol: mail_crypt_box_get_pvt_digests (this is usually
intentional, so just ignore this message)
doveadm(user at example.com)<27674><>: Debug: auth USER input:
user at example.com userdb_path=2000/6 quota_rule=*:bytes=0M nice=0
uid=1001 gid=1001
doveadm(user at example.com)<27674><>: Debug: Added userdb setting:
plugin/quota_rule=*:bytes=0M
doveadm(user at example.com)<27674><>: Debug: Added userdb setting:
plugin/userdb_path=2000/6
doveadm(user at example.com): Debug: Effective uid=1001, gid=1001,
home=/storage1/vmail/
doveadm(user at example.com): Debug: Quota root: name=User quota
backend=dict args=:proxy::sqlquota
doveadm(user at example.com): Debug: Quota rule: root=User quota mailbox=*
bytes=0 messages=0
doveadm(user at example.com): Debug: Quota rule: root=User quota
mailbox=#EXPUNGED bytes=+1073741824 messages=0
doveadm(user at example.com): Debug: Quota warning: bytes=0 (100%)
messages=0 reverse=no command=quota-warning 100 user at example.com
doveadm(user at example.com): Debug: Quota warning: bytes=0 (95%)
messages=0 reverse=no command=quota-warning 95 user at example.com
doveadm(user at example.com): Debug: Quota warning: bytes=0 (80%)
messages=0 reverse=no command=quota-warning 80 user at example.com
doveadm(user at example.com): Debug: Quota grace: root=User quota bytes=0 (10%)
doveadm(user at example.com): Debug: dict quota: user=user at example.com,
uri=proxy::sqlquota, noenforcing=0
doveadm(user at example.com): Debug: Namespace : type=private,
prefix=#EXPUNGED/, sep=, inbox=no, hidden=yes, list=no, subscriptions=no
location=mdbox:/storage1/fast/:MAILBOXDIR=expunged:LISTINDEX=expunged.list.index:FULLDIRNAME=iTrNiCs-DBOx-mAiLs:INDEX=/storage1/indexes/vmail/:ALT=/storage1/slow/:VOLATILEDIR=/tmp/
doveadm(user at example.com): Debug: fs: root=/storage1/fast,
index=/storage1/indexes/vmail, indexpvt=, control=, inbox=,
alt=/storage1/slow
doveadm(user at example.com): Debug: acl: initializing backend with data: vfile
doveadm(user at example.com): Debug: acl: acl username = user at example.com
doveadm(user at example.com): Debug: acl: owner = 1
doveadm(user at example.com): Debug: acl vfile: Global ACLs disabled
doveadm(user at example.com): Debug: Namespace : type=shared,
prefix=#Users/%u/, sep=/, inbox=no, hidden=no, list=children,
subscriptions=yes location=mdbox:%h/mdbox
doveadm(user at example.com): Debug: shared: root=/var/run/dovecot, index=,
indexpvt=, control=, inbox=, alt=
doveadm(user at example.com): Debug: acl: initializing backend with data: vfile
doveadm(user at example.com): Debug: acl: acl username = user at example.com
doveadm(user at example.com): Debug: acl: owner = 0
doveadm(user at example.com): Debug: acl vfile: Global ACLs disabled
doveadm(user at example.com): Debug: Namespace inbox: type=private,
prefix=, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=yes
location=mdbox:/storage1/fast/:FULLDIRNAME=iTrNiCs-DBOx-mAiLs:INDEX=/storage1/indexes/vmail/:ALT=/storage1/slow/:VOLATILEDIR=/tmp/
doveadm(user at example.com): Debug: fs: root=/storage1/fast,
index=/storage1/indexes/vmail, indexpvt=, control=, inbox=,
alt=/storage1/slow
doveadm(user at example.com): Debug: acl: initializing backend with data: vfile
doveadm(user at example.com): Debug: acl: acl username = user at example.com
doveadm(user at example.com): Debug: acl: owner = 1
doveadm(user at example.com): Debug: acl vfile: Global ACLs disabled
doveadm(user at example.com): Debug: quota: quota_over_flag check:
quota_over_script unset - skipping
dsync-remote(user at example.com)<CkATLXru91sabAAAUTwJdA>: Debug: acl
vfile: file /storage1/fast/mailboxes/dovecot-acl not found
dsync-remote(user at example.com)<CkATLXru91sabAAAUTwJdA>: Debug: acl
vfile: file
/storage1/fast/mailboxes/INBOX/iTrNiCs-DBOx-mAiLs/dovecot-acl not found
dsync-remote(user at example.com)<CkATLXru91sabAAAUTwJdA>: Debug: acl
vfile: file /storage1/fast/mailboxes/INBOX/test
kontakt/iTrNiCs-DBOx-mAiLs/dovecot-acl not found
dsync-remote(user at example.com)<CkATLXru91sabAAAUTwJdA>: Debug: acl
vfile: file
/storage1/fast/mailboxes/INBOX/test/iTrNiCs-DBOx-mAiLs/dovecot-acl not found
dsync-remote(user at example.com)<CkATLXru91sabAAAUTwJdA>: Debug: acl
vfile: file
/storage1/fast/mailboxes/INBOX/gsdfg/iTrNiCs-DBOx-mAiLs/dovecot-acl not
found
dsync-remote(user at example.com)<CkATLXru91sabAAAUTwJdA>: Debug: Namespace
: Using permissions from /storage1/fast: mode=0755 gid=default
dsync-remote(user at example.com)<CkATLXru91sabAAAUTwJdA>: Debug: Namespace
#EXPUNGED/: Using permissions from /storage1/fast: mode=0755 gid=default
---


Am 23.11.2018 um 12:14 schrieb Harald Leithner:
> Hi,
> 
> I tried to migrate my dovecot 2.2 to a new server with a other storage
> configuration and dovecot 2.3.
> 
> New (and old) Server uses mysql for user information
> 
> I use the following storage settings
> 
> mail_home = /storage1/vmail/%{userdb:path}
> mail_location =
> mdbox:/storage1/fast/%{userdb:path}:FULLDIRNAME=iTrNiCs-DBOx-mAiLs:INDEX=/storage1/indexes/vmail/%{userdb:path}:ALT=/storage1/slow/%{userdb:path}:VOLATILEDIR=/tmp/%{userdb:path}
> 
> 
> userdb:path is generated by the mysql query and ends in something like
> "2000/6"
> 
> SQL: CONCAT(u.idAccount, '/', u.idUser) AS userdb_path
> 
> If I login with imap dovecot is creating the INBOX on the correct path
> 
> /storage1/fast/2000/6/mailboxes/INBOX
> 
> btw. it creates a link to dbox-alt-root but without creating the target
> directory is this expected?
> 
> Now if I start
> 
> doveadm backup -u <username> remote:mailstore2
> 
> it ignores it seams that dsync-server doesn't make a database query and
> doesn't use the userdb_path field. It only uses
> 
> /storage1/fast/mailboxes/INBOX
> 
> as path.
> 
> Is this a problem with my configuration?
> 
> 
> thx
> 
> --- doveconf -n
> # 2.3.3 (dcead646b): /etc/dovecot/dovecot.conf
> # Pigeonhole version 0.5.3 (f018bbab)
> # OS: Linux 4.15.18-7-pve x86_64 Debian 9.6 zfs
> # Hostname: mailstore2
> auth_cache_negative_ttl = 1 secs
> auth_cache_size = 10 M
> auth_cache_ttl = 1 secs
> auth_master_user_separator = *
> auth_mechanisms = PLAIN LOGIN APOP
> auth_verbose = yes
> default_client_limit = 600
> default_vsz_limit = 512 M
> dict {
>   lastlogin = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
>   sqlacl = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
>   sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
> }
> disable_plaintext_auth = no
> first_valid_gid = 1001
> first_valid_uid = 1001
> hostname = mailstore2
> imap_hibernate_timeout = 1 mins
> imap_id_log = *
> imap_id_send = *
> imap_idle_notify_interval = 10 mins
> imap_logout_format = bytes=%i/%o
> instance_name = mailstore2
> last_valid_gid = 1001
> last_valid_uid = 1001
> lda_original_recipient_header = X-LDA-Original-To
> lmtp_rcpt_check_quota = yes
> login_greeting = ITronic Mail Store
> login_trusted_networks = 172.22.14.0/24
> mail_cache_min_mail_count = 5
> mail_gid = vmail
> mail_home = /storage1/vmail/%{userdb:path}
> mail_location =
> mdbox:/storage1/fast/%{userdb:path}:FULLDIRNAME=iTrNiCs-DBOx-mAiLs:INDEX=/storage1/indexes/vmail/%{userdb:path}:ALT=/storage1/slow/%{userdb:path}:VOLATILEDIR=/tmp/%{userdb:path}
> mail_plugins = lazy_expunge acl quota mail_log notify
> mail_prefetch_count = 100
> mail_server_admin = mailto:postmaster at example.com
> mail_server_comment = Mail System
> mail_shared_explicit_inbox = yes
> mail_uid = vmail
> 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 vacation-seconds
> mdbox_preallocate_space = yes
> namespace {
>   hidden = yes
>   list = no
>   location =
> mdbox:/storage1/fast/%{userdb:path}:MAILBOXDIR=expunged:LISTINDEX=expunged.list.index:FULLDIRNAME=iTrNiCs-DBOx-mAiLs:INDEX=/storage1/indexes/vmail/%{userdb:path}:ALT=/storage1/slow/%{userdb:path}:VOLATILEDIR=/tmp/%{userdb:path}
>   prefix = "#EXPUNGED/"
>   subscriptions = no
>   type = private
> }
> namespace {
>   list = children
>   location = mdbox:%%h/mdbox
>   prefix = "#Users/%%u/"
>   separator = /
>   subscriptions = yes
>   type = shared
> }
> namespace inbox {
>   hidden = no
>   inbox = yes
>   location =
>   mailbox Archvie {
>     special_use = \Archive
>   }
>   mailbox Drafts {
>     special_use = \Drafts
>   }
>   mailbox Sent {
>     special_use = \Sent
>   }
>   mailbox Spam {
>     special_use = \Junk
>   }
>   mailbox Trash {
>     special_use = \Trash
>   }
>   prefix =
>   separator = /
>   subscriptions = yes
>   type = private
> }
> passdb {
>   args = /etc/dovecot/master-users
>   driver = passwd-file
>   master = yes
>   result_success = continue-ok
> }
> passdb {
>   args = /etc/dovecot/dovecot-sql.conf.ext
>   driver = sql
> }
> plugin {
>   acl = vfile
>   acl_shared_dict = proxy::sqlacl
>   last_login_dict = proxy::lastlogin
>   last_login_key = # hidden, use -P to show it
>   lazy_expunge = "#EXPUNGED/"
>   lazy_expunge_only_last_instance = no
>   mail_log_events = delete undelete expunge copy mailbox_delete
> mailbox_rename flag_change save mailbox_create
>   mail_log_fields = uid box msgid size flags vsize from subject
>   quota = dict:User quota::proxy::sqlquota
>   quota_grace = 10%%
>   quota_rule = *:storage=1024M
>   quota_rule2 = "#EXPUNGED:storage=+1024M"
>   quota_warning = storage=100%% quota-warning 100 %u
>   quota_warning2 = storage=95%% quota-warning 95 %u
>   quota_warning3 = storage=80%% quota-warning 80 %u
>   recipient_delimiter = +
>   sieve = file:~/sieve;active=~/.dovecot.sieve
>   sieve_before = file:/storage1/vmail/%{userdb:idAccount}/
>   sieve_extensions = +vacation-seconds
>   sieve_global = /etc/dovecot/sieve
>   sieve_max_actions = 64
>   sieve_max_redirects = 8
>   sieve_max_script_size = 2M
>   sieve_quota_max_scripts = 0
>   sieve_quota_max_storage = 64M
>   sieve_vacation_default_period = 1d
>   sieve_vacation_min_period = 1h
> }
> pop3_uidl_duplicates = rename
> protocols = imap lmtp sieve pop3
> service auth-worker {
>   user = $default_internal_user
> }
> service auth {
>   inet_listener {
>     port = 4180
>   }
>   unix_listener auth-userdb {
>     mode = 0666
>   }
> }
> service dict {
>   unix_listener dict {
>     group = vmail
>     mode = 0666
>   }
> }
> service imap-hibernate {
>   unix_listener imap-hibernate {
>     group = vmail
>     mode = 0666
>   }
> }
> service imap-login {
>   inet_listener imap {
>     port = 143
>   }
>   inet_listener imaps {
>     port = 993
>     ssl = yes
>   }
>   process_min_avail = 1
>   service_count = 0
> }
> service imap {
>   process_limit = 1024
>   unix_listener imap-master {
>     user = dovecot
>   }
>   unix_listener imap {
>     group = vmail
>     mode = 0666
>   }
>   vsz_limit = 512 M
> }
> service lmtp {
>   inet_listener lmtp {
>     address = 172.22.14.136
>     port = 24000
>   }
>   unix_listener lmtp {
>     mode = 0666
>   }
> }
> service managesieve-login {
>   inet_listener sieve {
>     port = 4190
>   }
>   process_min_avail = 0
>   service_count = 1
>   vsz_limit = 64 M
> }
> service managesieve {
>   process_limit = 50
> }
> service pop3-login {
>   inet_listener pop3 {
>     port = 110
>   }
>   inet_listener pop3s {
>     port = 995
>     ssl = yes
>   }
>   process_min_avail = 20
>   service_count = 1
>   vsz_limit = 64 M
> }
> service pop3 {
>   process_limit = 1024
> }
> service quota-warning {
>   executable = script /opt/scripts/quota-warning.sh
>   unix_listener quota-warning {
>     user = vmail
>   }
>   user = dovecot
> }
> shutdown_clients = no
> ssl_cert = </etc/dovecot/private/example.com.pem
> ssl_cipher_list =
> ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-CAMELLIA256-SHA:CAMELLIA128-SHA:CAMELLIA256-SHA:ECDHE-RSA-DES-CBC3-SHA:DES-CBC3-SHA
> ssl_dh = # hidden, use -P to show it
> ssl_key = # hidden, use -P to show it
> ssl_options = no_compression
> ssl_prefer_server_ciphers = yes
> submission_host = 192.168.14.198
> syslog_facility = local0
> userdb {
>   driver = prefetch
> }
> userdb {
>   args = /etc/dovecot/dovecot-sql.conf.ext
>   driver = sql
> }
> valid_chroot_dirs = /storage1
> verbose_proctitle = yes
> protocol imap {
>   mail_max_userip_connections = 30
>   mail_plugins = imap_zlib lazy_expunge quota imap_quota acl imap_acl
> last_login mail_log notify
> }
> protocol lda {
>   mail_plugins = lazy_expunge acl sieve quota mail_log notify
> }
> protocol lmtp {
>   mail_plugins = lazy_expunge acl sieve quota mail_log notify
> }
> protocol sieve {
>   mail_max_userip_connections = 10
>   managesieve_max_compile_errors = 5
>   managesieve_max_line_length = 65536
> }
> protocol pop3 {
>   mail_max_userip_connections = 10
>   mail_plugins = lazy_expunge acl last_login mail_log notify
> }
> ---
> 

-- 
Harald Leithner

ITronic
Wiedner Hauptstraße 120/5.1, 1050 Wien, Austria
Tel: +43-1-545 0 604
Mobil: +43-699-123 78 4 78
Mail: leithner at itronic.at | itronic.at

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: OpenPGP digital signature
URL: <https://dovecot.org/pipermail/dovecot/attachments/20181123/9dc9ec74/attachment.sig>


More information about the dovecot mailing list