Используйте "ldap_simple" driver вместо "ldap".
Обязательно заведите в LDAP отдельного пользователя, который будет менять пароли и укажите его логин-пароль в конфиге.
В password_ldap_encodage укажите то же самое шифрование паролей, что и в самом LDAP'е.
Весь трафик к LDAP-серверу заверните в TLS с нормальными стойкими современными алгоритмами шифрования и используйте протокол ldaps на 636 порту.
Забудьте про Dovecot, он не участвует в смене пароля. Его задача - только пустить пользователя в веб-почту (ну и отдать письма, разумеется).
Вот пример работающего конфига:
$config['password_driver'] = 'ldap_simple';
$config['password_confirm_current'] = true;
$config['password_minimum_length'] = 8;
$config['password_require_nonalpha'] = true;
$config['password_log'] = true;
$config['password_ldap_host'] = 'ldaps://ldap.example.com';
$config['password_ldap_port'] = '636';
$config['password_ldap_starttls'] = false;
$config['password_ldap_version'] = '3';
$config['password_ldap_basedn'] = 'dc=example,dc=com';
$config['password_ldap_method'] = 'user';
$config['password_ldap_searchDN'] = 'cn=RoundcubePasswordChanger,dc=example,dc=com';
$config['password_ldap_searchPW'] = '*****';
$config['password_ldap_search_base'] = 'dc=example,dc=com';
$config['password_ldap_search_filter'] = '(&(objectClass=top)(objectClass=organizationalPerson)(objectClass=inetOrgPerson)(objectClass=person)(accountStatus=active)(uid=%login))';
$config['password_ldap_encodage'] = 'ssha';
$config['password_ldap_pwattr'] = 'userPassword';
$config['password_ldap_force_replace'] = true;