Hello.
Some records in my LDAP base have same values in mail field:
# extended LDIF # # LDAPv3 # base <ou=Mail, dc=ph, dc=local> with scope subtree # filter: (&(mail=someuser@p.ru)(|(AccountStatus=active)(accountStatus=shared))) # requesting: mailMessageStore # dn: cn=lala,ou=Mail,dc=ph,dc=local mailMessageStore: /var/mail/someuser/Maildir/
# Eset, Mail, ph.local dn: cn=Eset,ou=Mail,dc=ph,dc=local
# admins, Mail, ph.local dn: cn=admins,ou=Mail,dc=ph,dc=local
# search result search: 2 result: 0 Success
# numResponses: 4 # numEntries: 3
Postfix with virtual_transport = virtual works fine: letter to "dn: cn=lala,ou=Mail,dc=ph,dc=local" stolen in mailMessageStore path and one for mailing list "dn: cn=admins,ou=Mail,dc=ph,dc=local"/"dn: cn=admins,ou=Mail,dc=ph,dc=local" are send to "dn: cn=lala,ou=Mail,dc=ph,dc=local".
One of filter Postfix uses: (&(|(mail=%s)(mailAlternateAddress=%s))(|(AccountStatus=active)(accountStatus=shared)))
So, set on dovecot-lda.
main.cf: dovecot_destination_recipient_limit = 1 virtual_transport = dovecot #virtual_transport = virtual
master.cf: dovecot unix - n n - - pipe flags=DRhu user=vmail:mail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
one place in dovecot-ldap.ext.conf: user_filter = (&(objectClass=qmailUser)(|(AccountStatus=active)(accountStatus=shared))(|(mail=%u)(mailAlternateAddress=%u))) pass_filter = (&(objectClass=qmailUser)(|(AccountStatus=active)(accountStatus=shared))(|(mail=%u)(mailAlternateAddress=%u))) user_attrs = mailMessageStore=home pass_attrs = uid=user,userPassword=password
Send test letter: mutt -s "test $(date +%d/%m/%Y:%H.%M)" -- someuser@p.ru < /dev/null
and get in log: dovecot: lda: Debug: Module loaded: /usr/lib64/dovecot/lib90_sieve_plugin.so dovecot: auth: Debug: master in: USER#0111#011someuser@p.ru#011service=lda dovecot: auth: Debug: ldap(someuser@p.ru): user search: base=ou=Mail, dc=ph, dc=local scope=subtree filter=(&(objectClass=qmailUser)(|(AccountStatus=active)(accountStatus=shared))(|(mail=someuser@p.ru)(mailAlternateAddress=someuser@p.ru))) fields=mailMessageStore dovecot: auth: Debug: ldap(someuser@p.ru): result: mailMessageStore(home)=/var/mail/someuser/Maildir/ dovecot: auth: Error: ldap(someuser@p.ru): user_filter matched multiple objects, aborting dovecot: auth: Debug: master out: FAIL#0111 dovecot: lda: Error: user someuser@p.ru: Auth USER lookup failed dovecot: lda: Debug: auth input: dovecot: lda: Fatal: Internal error occurred. Refer to server log for more information. postfix/pipe[3259]: 89001846: to=<someuser@p.ru>, relay=dovecot, delay=0.15, delays=0.07/0.01/0/0.07, dsn=4.3.0, status=deferred (temporary failure)
As we can see mailMessageStore gets right value and… it's all.
How can I get Postfix-like behavior from dovecot-lda?
With best regards, Basov Evgeny.