[Dovecot] TCP Cluster replication headache

FUSTE Emmanuel emmanuel.fuste at thalesgroup.com
Wed May 7 15:38:41 UTC 2014


Hello,

After going crazy building a dovecot cluster, I finally see the light ;-))
But some things are "strange" and could probably be fixed/enhanced.

First :
I follow the wiki doc, setting global doveadm_port.
Things did not work, I've got:

dovecot: doveadm(X1234567): Error: sync: /var/run/dovecot/auth-userdb: Configured passdbs don't support crentials lookups (to see if user is proxied, because doveadm_port is set)

Same kind of error too when trying to use doveadm on the command line to 
get the replica status.
My user/auth db is LDAP with "auth_bind = yes", but I don't understand 
the message in these context and did'nt know how to fix this.
I tried to hardcode proxy/proxy_maybe property in the passdb declaration 
etc...
Finally, I remove the global "doveadm_port 12345" and add ":12345" at 
the end of my "mail_replica =" line and all began to work !
Is it a wanted and expected error/fix ?

Secondly:
Now all is working and "doveadm replicator status '*' " correctly list 
all my users and the status, but after a few seconds (after replication 
kick in), I see all user listed twice.
One time, as declared in the userdb with letters in uppercase  : "X1234567"
One time, in lowercase : "x1234567"
On disk, all is OK, with only one replica in an uppercase directory.
I initially think that it was a mismatch between userdb and passdb users 
return, but it was in fact the default value of auth_username_format 
that was the culprit. After going from the default %Lu to %u doveadm 
replicator status show only one entry per user as expected.
Is it wanted and expected too? why auth_username_format is used/interact 
with/in the replication process and/or the replicator status command ?

Not all is functionally tested, I go back to work.
My is conf at the end of this message.

Thanks Simo for this great piece of software.

Emmanuel

# 2.2.12.7 (f7731356530e+): /etc/dovecot/dovecot.conf
# OS: Linux 3.11.0-19-generic x86_64 Ubuntu 12.04.4 LTS
auth_master_user_separator = *
auth_username_format = %u
doveadm_password = xxxxxxxxxxx
lda_mailbox_autocreate = yes
listen = *
mail_gid = vmail
mail_location = maildir:~/Maildir
mail_plugins = quota notify replication
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 ihave
namespace {
   hidden = no
   inbox = yes
   list = yes
   location =
   prefix =
   separator = /
   subscriptions = yes
   type = private
}
namespace {
   hidden = no
   inbox = no
   list = children
   location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u
   prefix = shared/%%u/
   separator = /
   subscriptions = no
   type = shared
}
passdb {
   args = /etc/dovecot/dovecot-ldap.conf.ext
   driver = ldap
}
plugin {
   acl = vfile
   acl_anyone = allow

   acl_shared_dict =file:/appli/vmail/shared-mailboxes
   mail_replica = tcp:thsmytmbx02p.online.corp.thales:12345
   quota = dict:userquota::file:/appli/vmail/local_userquota/%%h/dovecot-quota
   quota_rule = *:storage=100M
   quota_rule2 = INBOX:storage=+20%%
   quota_rule3 = Trash:storage=+10%%
   sieve = ~/.dovecot.sieve
   sieve_dir = ~/sieve
}
protocols = imap sieve
service aggregator {
   fifo_listener replication-notify-fifo {
     user = vmail
   }
   unix_listener replication-notify {
     user = vmail
   }
}
service auth {
   unix_listener auth-userdb {
     group = vmail
     mode = 0660
   }
}
service doveadm {
   inet_listener {
     port = 12345
   }
   user = vmail
}
service replicator {
   process_min_avail = 1
   unix_listener replicator-doveadm {
     mode = 0666
   }
}
ssl = no
userdb {
   args = /etc/dovecot/dovecot-users-ldap.conf.ext
   driver = ldap
}
protocol lda {
   mail_plugins = quota sieve
}
protocol imap {
   mail_plugins = quota imap_quota
}



dovecot-users-ldap.conf.ext:
dovecot-ldap.conf.ext:

uris = ldapi:///
dn = uid=dovecot,dc=mydomain,dc=com
dnpass = xxxxxxxxxxxx
auth_bind = yes
ldap_version = 3
base = ou=users,dc=mydomain,dc=com
user_attrs = =home=/appli/vmail/%{ldap:uid}
user_filter = (&(objectClass=inetOrgPerson)(|(uid=%u)(mail=%u)))
pass_attrs = =user=%{ldap:uid}
pass_filter = (&(objectClass=inetOrgPerson)(uid=%u)(!(pwdReset=TRUE)))
iterate_attrs = uid=user
iterate_filter = (objectClass=inetOrgPerson)


More information about the dovecot mailing list