User is looked up using getpwent() call, which usually looks into /etc/passwd file, but depending on [http://en.wikipedia.org/wiki/Name_Service_Switch NSS] configuration it may also look up the user from eg. LDAP database.
Most commonly used as a user database. Many systems use shadow passwords nowadays so it doesn't usually work as a password database. BSDs are an exception to this, they still set the password field even with shadow passwords.
The lookup is done in the primary dovecot-auth process, so if NSS is configured to do the lookups from an external server, it slows down all the other authentications while waiting for the reply. For that reason you might want to increase the number of dovecot-auth processes (count setting inside auth block).
nss_ldap is badly broken with Dovecot, and you really shouldn't be using it. In some cases it might return wrong user's information and cause users to log in as each others. Dovecot nowadays has a workaround that checks if a wrong reply is returned, but [http://dovecot.org/list/dovecot/2006-September/016454.html apparently it doesn't always work].
There's a bug about this in [https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=154314 RedHat's Bugzilla].