[Dovecot-de] dovecot-lda, virtual Users, Active Directory, userdb lookup failed

Frank Ebert frank.ebert at freenet.de
Di Nov 5 18:37:45 CET 2013


Moin,

Ausgangssituation:

Auf einem Testrechner (FreeBSD 9.2/amd64) läuft Dovecot 2.2.6, Postfix
2.10.2 und Samba 3.6.18 mit virtuellen Benutzern. Die User liegen auf
einem Windows Server 2008 in einem Active Directory. Dovecot prüft
bereits erfolgreich ob die User auf dem Windows Server existieren
(passdb=pam,userdb=static). Ich kann also per IMAP auf den Server
zugreifen.

Postfix hat mit ldap bereits erfolgreich den Benutzernamen (der vom
Userteil in user at domain abweicht) abgefragt und konnte Mails zustellen.
Ich möchte jedoch nicht dass Postfix die Mails zustellt, sondern
Postfix soll die "internen" Mails (dieser Domain) an Dovecot-lda
übergeben und dieser soll zustellen. Meine Erfahrung ist (und gelesen
habe ich es auch), dass Dovecot den Index viel schneller
erzeugt/aktualisiert und somit alles performanter ist. Um dies
umzusetzen habe ich Postfix entsprechend umkonfiguriert (in der
main.cf). Ebenso habe ich in der master.cf den Service dovecot
angelegt, welcher dovecot-lda mit den Parametern "-f ${sender} -d
${recipient} aufruft. Auch das funktioniert (was ich zumindest aus den
Logfiles schließe). Die Mails werden jedoch mit einer Fehlermeldung
(folgt gleich) nicht zugestellt.

Im Wiki2 von Dovecot habe ich nach längerer Suche gefunden, dass dies
daran liegt, dass ich für dovecot-lda einen eigenen passdb Eintrag
brauche. Diesen habe ich in die gleiche config direkt nach dem
pam-Eintrag mit driver=ldap geschrieben. Egal was ich nun in die
"dovecot-ldap.conf.ext" schreibe, die Mail wird nicht zugestellt. Im
Logfile finden sich folgende Einträge:

"dovecot auth: Error: static(frank.ebert at foo.bar): passdb doesn't
support lookups, can't verify user's existence" -> Ist mir klar. Er
versucht zuerst den static-Eintrag, da er ja vorher kommt. Kann ich
wohl ignorieren.

"dovecot auth: Error: ldap(frank.ebert at foo.bar):
ldap_search(base=dc=foo,dc=bar
filter=(&(objectClass=posixAccount)(uid=frank.ebert at foo.bar)))
failed: Operations error 
dovecot: lda: Error: user frank.ebert at foo.bar: Auth USER
lookup failed"

An dieser Stelle habe ich 2 Fragen:
1. Woran liegt es, dass die Abfrage nicht erfolgreich ist? Den Inhalt
von dovecot-ldap.conf.ext lasse ich erstmal weg, weil er ja falsch ist.
2. Wenn ich folgendes Aufrufe: "postmap -q frank.ebert at foo.bar
ldap:/usr/local/etc/postfix/ldap-users.cf" erhalte ich als Antwort:

Windowsbenutzername/Maildir/

Postfix macht genau das was ich will. Der Benutzername wird
zurückgegeben, und weil Dovecot ja diesen Namen als Verzeichnisname
verwendet ist das richtig. Das gleiche Verhalten müsste doch - wenn ich
alles richtig verstanden habe - dovecot brauchen, oder? Mir hilft es
nicht, dass ich mit %n nur den Userteil (also frank.ebert) erhalte,
wenn doch der Benutzername ein ganz anderer ist?

Sollten Angaben fehlen (doveconf -n folgt ganz am Schluss), reiche ich
diese gerne nach.

Gruß Frank

Die Ausgabe von doveconf -n:

auth_mechanisms = plain ntlm login
auth_socket_path = /var/run/dovecot/auth-userdb
auth_use_winbind = yes
auth_winbind_helper_path = /usr/local/bin/ntlm_auth
listen = *
mail_location = maildir:/home/vmail/%u/Maildir
namespace {
  location = maildir:/home/vmail/public
  prefix = Public/
  separator = /
  subscriptions = no
  type = public
}
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
  separator = /
  type = private
}
passdb {
  driver = pam
}
passdb {
  args = /usr/local/etc/dovecot/dovecot-ldap.conf.ext
  driver = ldap
}
protocols = imap lmtp
service auth {
  unix_listener auth-userdb {
    group = vmail
    mode = 0600
    user = vmail
  }
}
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
  args = uid=1001 gid=1001 home=/home/vmail/%u
  driver = static
}
userdb {
  args = /usr/local/etc/dovecot/dovecot-ldap.conf.ext
  driver = ldap
}
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 196 bytes
Beschreibung: nicht verfügbar
URL         : <https://listen.jpberlin.de/pipermail/dovecot/attachments/20131105/7d393b75/attachment.sig>


Mehr Informationen über die Mailingliste Dovecot