Задать вопрос
  • В чем ошибка смены пароля в roundcube?

    Используйте "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;
    Ответ написан
    1 комментарий