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

Frank Ebert frank.ebert at freenet.de
Do Nov 7 19:22:09 CET 2013


Moin,

ich bin einen großen Schritt weiter. Vom Grundsatz her funktioniert
alles. Der Fehler lag insbesondere daran, dass ich eine falsche "base="
angegeben hatte. Ich musste noch eine ou ergänzen, danach konnte ich
mir die restlichen Dinge herleiten.

Allerdings ist das ganze alles andere als performant. Client ist
Outlook 2010, was in anderen Konfigurationen auch wunderbar läuft.
Outlook braucht zum einen ewig zum Laden des Profiles (obwohl es neu
angelegt ist und im Prinzip keine Mails enthält), ausserdem benötigt es
sehr lange bis es nutzbar ist. Er "hängt" beim synchronisieren der
"abonierten Ordner".

Nachdem ich dovecot etwas mehr habe protokollieren lassen, kamen auch
immer beim Öffnen von Outlook diese Meldungen:

dovecot: auth: winbind(?,192.168.1.15,<vwZYRJrqsADAqAEP>): user not
authenticated: NT_STATUS_UNSUCCESSFUL
dovecot: auth-worker: Error:
dovecot: auth-worker: Error:
dovecot: auth-worker: Error:

Direkt danach kommt wieder ein imap-login und alles funktioniert.
Das selbe passiert, wenn ich mir alle IMAP-Ordner anzeigen lasse
um zB die konfigurierten Public-Folder zu "abonieren". Kennt jemand den
Grund warum winbind hier streikt und weiß wie ich ihn beheben kann?

Gruß Frank


Am Tue, 5 Nov 2013 18:37:45 +0100
schrieb Frank Ebert <frank.ebert at freenet.de>:

> 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/20131107/b4668250/attachment.sig>


Mehr Informationen über die Mailingliste Dovecot