Re: TCP Cluster replication headache
Le 07/05/2014 17:38, Emmanuel Fusté a écrit :
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 ?
Ok, this first point should be fixed by http://hg.dovecot.org/dovecot-2.2/rev/a2e0e89bc27d Need to test it.
Thank you. Emmanuel.
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)
participants (1)
-
FUSTE Emmanuel