Ok. The problem seems to be something different. I found out that even if I pass the real username (foo-example.com) to dovecot-lda, dovecot tells me

Error: User initialization failed: Namespace 'INBOX.': Home directory not set for user. Can't expand ~/ for mail root dir in: ~/Maildir

Why does dovecot find the home when accessed via IMAP, but not when accessed via dovecot-lda?

Benjamin

On 06/09/2016 04:03 PM, Benjamin wrote:
Thank you for this hint, but no, that does not work.

Does Dovecot really use this user_filter when postfix passes mail using
the dovecot-lda command?

I now tried it with

    user_filter = (&(objectClass=qmailUser)(|(uid=%u)(mail=%u)))

and when I search with this filter in LDAP directly (using the
recipients e-mail address as %u) it returns the wanted user.

I also ensured, postfix passes the e-mail address as argument by playing
around with master.cf, and it does. At the moment the dovecot line looks
as follows:

    dovecot      unix   -        n      n       -       -   pipe
      flags=DRhu user=mail-data:mail-data
argv=/usr/lib/dovecot/dovecot-lda -a ${recipient}

Dovecot still tells me that it does not find the home directory for the
user.


Benjamin


On 06/08/2016 10:45 PM, Wolfgang Rosenauer wrote:
On Wed, Jun 8, 2016 at 10:13 AM, Benjamin <dove...@benjaminhubert.at>
wrote:


My dovecot-ldap configuration looks quite simple:

  hosts = 192.168.0.1,192.168.0.2
  dn = cn=mailadmin,dc=example,dc=com
  dnpass = foo
  auth_bind = yes
  ldap_version = 3
  base = ou=users,dc=example,dc=com
  user_attrs = mailMessageStore=home
  user_filter = (&(objectClass=qmailUser)(uid=%u))
  pass_filter = (&(objectClass=qmailUser)(uid=%u))

I think dovecot does not know that the username is not the e-mail
address,
but how can I tell him?

Furthermore we have alternative addresses here, so for example there may
be an e-mail address b...@example.com owned by foo-example.com who has
f...@example.com as primary address.


You need user_filter and pass_filter to recognize also the email
addresses
IMHO.

Mine look like:
pass_filter = (&(objectClass=suseMailRecipient)(|(alias=%n)(uid=%n)))
user_filter = (&(objectClass=suseMailRecipient)(|(alias=%n)(uid=%n)))

You have to adapt to your own ldap attributes and use the correct
variable
(%n) to match your usecase. My users can login (and receive mails) via
all
of their aliases, primary address (part of the alias set) or their
username.

HTH,
Wolfgang

Reply via email to