Dies ist eine alte Version des Dokuments!


Horde 5 Applikation Passwortänderungen: Passwd Turba unter CentOS 7.x

Als nächste Applikation installieren wir uns die Anwendung Passwd. Diese Anwendung werden wir dazu nutzen, um über die Webapplikation Horde bei Bedarf unser Passwort zu ändern und auf dem mySQL-Datenbankbackendserver zu speichern. Informationen zu Installation und Konfiguration findet man auch auf der offiziellen Doku-Seite.

Die Installation der Applikation Passwd können wir ganz einfach über das Paketverwaltungswerkzeug yum vornehmen.

Bis das RPM im offiziellen EPEL-Repository aufgenommen wird, greifen wir auf die Vorabversion1) des Horde-Maintainer Remi Collet, der auch die anderen Horde-RPMs des EPEL-Repositories baut, zurück.

 # yum localinstall http://rpms.famillecollet.com/enterprise/7/remi/x86_64/php-horde-passwd-5.0.2-1.el7.remi.noarch.rpm -y

Was uns das Paket php-horde-passwd alles mitgebracht hat zeigt uns der folgende Aufruf.

 # rpm -qil php-horde-passwd
Name        : php-horde-passwd
Version     : 5.0.2
Release     : 1.el7.remi
Architecture: noarch
Install Date: Mon 15 Sep 2014 08:55:29 AM CEST
Group       : Development/Libraries
Size        : 430134
License     : GPLv2
Signature   : DSA/SHA1, Sat 13 Sep 2014 08:32:08 AM CEST, Key ID 004e6f4700f97f56
Source RPM  : php-horde-passwd-5.0.2-1.el7.remi.src.rpm
Build Date  : Sat 13 Sep 2014 08:30:45 AM CEST
Build Host  : schrodingerscat.famillecollet.com
Relocations : (not relocatable)
Packager    : http://blog.famillecollet.com/
Vendor      : Remi Collet
URL         : http://www.horde.org/apps/turba
Summary     : Horde password changing application
Description :
An application to change any user passwords stored in various backends like
SQL, LDAP, Kolab, passwd files etc.
/etc/horde/passwd
/etc/horde/passwd/backends.php
/etc/horde/passwd/conf.xml
/etc/horde/passwd/hooks.php.dist
/etc/httpd/conf.d/php-horde-passwd.conf
/usr/share/doc/pear/passwd
/usr/share/doc/pear/passwd/CHANGES
/usr/share/doc/pear/passwd/COPYING
/usr/share/doc/pear/passwd/CREDITS
/usr/share/doc/pear/passwd/INSTALL
/usr/share/doc/pear/passwd/README
/usr/share/doc/pear/passwd/RELEASE_NOTES
/usr/share/doc/pear/passwd/TODO
/usr/share/doc/pear/passwd/UPGRADING
/usr/share/horde/passwd
/usr/share/horde/passwd/config
/usr/share/horde/passwd/index.php
/usr/share/horde/passwd/js
/usr/share/horde/passwd/js/passwd.js
/usr/share/horde/passwd/lib
/usr/share/horde/passwd/lib/Application.php
/usr/share/horde/passwd/lib/Basic.php
/usr/share/horde/passwd/lib/Driver
/usr/share/horde/passwd/lib/Driver.php
/usr/share/horde/passwd/lib/Driver/Adsi.php
/usr/share/horde/passwd/lib/Driver/Composite.php
/usr/share/horde/passwd/lib/Driver/Expect.php
/usr/share/horde/passwd/lib/Driver/Expectpecl.php
/usr/share/horde/passwd/lib/Driver/Horde.php
/usr/share/horde/passwd/lib/Driver/Http.php
/usr/share/horde/passwd/lib/Driver/Kolab.php
/usr/share/horde/passwd/lib/Driver/Ldap.php
/usr/share/horde/passwd/lib/Driver/Null.php
/usr/share/horde/passwd/lib/Driver/Pine.php
/usr/share/horde/passwd/lib/Driver/Poppassd.php
/usr/share/horde/passwd/lib/Driver/Procopen.php
/usr/share/horde/passwd/lib/Driver/Pspasswd.php
/usr/share/horde/passwd/lib/Driver/Servuftp.php
/usr/share/horde/passwd/lib/Driver/Smbldap.php
/usr/share/horde/passwd/lib/Driver/Smbpasswd.php
/usr/share/horde/passwd/lib/Driver/Soap.php
/usr/share/horde/passwd/lib/Driver/Sql.php
/usr/share/horde/passwd/lib/Driver/Vmailmgr.php
/usr/share/horde/passwd/lib/Driver/Vpopmail.php
/usr/share/horde/passwd/lib/Exception.php
/usr/share/horde/passwd/lib/Factory
/usr/share/horde/passwd/lib/Factory/Driver.php
/usr/share/horde/passwd/lib/Test.php
/usr/share/horde/passwd/locale
/usr/share/horde/passwd/locale/ar
/usr/share/horde/passwd/locale/ar/LC_MESSAGES
/usr/share/horde/passwd/locale/ar/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/bg
/usr/share/horde/passwd/locale/bg/LC_MESSAGES
/usr/share/horde/passwd/locale/bg/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/ca
/usr/share/horde/passwd/locale/ca/LC_MESSAGES
/usr/share/horde/passwd/locale/ca/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/cs
/usr/share/horde/passwd/locale/cs/LC_MESSAGES
/usr/share/horde/passwd/locale/cs/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/da
/usr/share/horde/passwd/locale/da/LC_MESSAGES
/usr/share/horde/passwd/locale/da/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/de
/usr/share/horde/passwd/locale/de/LC_MESSAGES
/usr/share/horde/passwd/locale/de/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/de/help.xml
/usr/share/horde/passwd/locale/en
/usr/share/horde/passwd/locale/en/help.xml
/usr/share/horde/passwd/locale/es
/usr/share/horde/passwd/locale/es/LC_MESSAGES
/usr/share/horde/passwd/locale/es/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/es/help.xml
/usr/share/horde/passwd/locale/et
/usr/share/horde/passwd/locale/et/LC_MESSAGES
/usr/share/horde/passwd/locale/et/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/fa
/usr/share/horde/passwd/locale/fa/LC_MESSAGES
/usr/share/horde/passwd/locale/fa/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/fa/help.xml
/usr/share/horde/passwd/locale/fi
/usr/share/horde/passwd/locale/fi/LC_MESSAGES
/usr/share/horde/passwd/locale/fi/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/fi/help.xml
/usr/share/horde/passwd/locale/fr
/usr/share/horde/passwd/locale/fr/LC_MESSAGES
/usr/share/horde/passwd/locale/fr/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/gl
/usr/share/horde/passwd/locale/gl/LC_MESSAGES
/usr/share/horde/passwd/locale/gl/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/hr
/usr/share/horde/passwd/locale/hr/LC_MESSAGES
/usr/share/horde/passwd/locale/hr/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/hr/help.xml
/usr/share/horde/passwd/locale/hu
/usr/share/horde/passwd/locale/hu/LC_MESSAGES
/usr/share/horde/passwd/locale/hu/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/hu/help.xml
/usr/share/horde/passwd/locale/id
/usr/share/horde/passwd/locale/id/LC_MESSAGES
/usr/share/horde/passwd/locale/id/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/it
/usr/share/horde/passwd/locale/it/LC_MESSAGES
/usr/share/horde/passwd/locale/it/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/ja
/usr/share/horde/passwd/locale/ja/LC_MESSAGES
/usr/share/horde/passwd/locale/ja/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/lt
/usr/share/horde/passwd/locale/lt/LC_MESSAGES
/usr/share/horde/passwd/locale/lt/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/lv
/usr/share/horde/passwd/locale/lv/LC_MESSAGES
/usr/share/horde/passwd/locale/lv/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/lv/help.xml
/usr/share/horde/passwd/locale/nl
/usr/share/horde/passwd/locale/nl/LC_MESSAGES
/usr/share/horde/passwd/locale/nl/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/nl/help.xml
/usr/share/horde/passwd/locale/nn
/usr/share/horde/passwd/locale/nn/LC_MESSAGES
/usr/share/horde/passwd/locale/nn/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/pl
/usr/share/horde/passwd/locale/pl/LC_MESSAGES
/usr/share/horde/passwd/locale/pl/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/pt
/usr/share/horde/passwd/locale/pt/LC_MESSAGES
/usr/share/horde/passwd/locale/pt/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/pt_BR
/usr/share/horde/passwd/locale/pt_BR/LC_MESSAGES
/usr/share/horde/passwd/locale/pt_BR/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/ro
/usr/share/horde/passwd/locale/ro/LC_MESSAGES
/usr/share/horde/passwd/locale/ro/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/ru
/usr/share/horde/passwd/locale/ru/LC_MESSAGES
/usr/share/horde/passwd/locale/ru/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/ru/help.xml
/usr/share/horde/passwd/locale/sk
/usr/share/horde/passwd/locale/sk/LC_MESSAGES
/usr/share/horde/passwd/locale/sk/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/sl
/usr/share/horde/passwd/locale/sl/LC_MESSAGES
/usr/share/horde/passwd/locale/sl/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/sv
/usr/share/horde/passwd/locale/sv/LC_MESSAGES
/usr/share/horde/passwd/locale/sv/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/tr
/usr/share/horde/passwd/locale/tr/LC_MESSAGES
/usr/share/horde/passwd/locale/tr/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/zh_CN
/usr/share/horde/passwd/locale/zh_CN/LC_MESSAGES
/usr/share/horde/passwd/locale/zh_CN/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/locale/zh_TW
/usr/share/horde/passwd/locale/zh_TW/LC_MESSAGES
/usr/share/horde/passwd/locale/zh_TW/LC_MESSAGES/passwd.mo
/usr/share/horde/passwd/scripts
/usr/share/horde/passwd/scripts/passwd-expect
/usr/share/horde/passwd/scripts/passwd-expect-kerberos
/usr/share/horde/passwd/templates
/usr/share/horde/passwd/templates/index.html.php
/usr/share/horde/passwd/themes
/usr/share/horde/passwd/themes/default
/usr/share/horde/passwd/themes/default/graphics
/usr/share/horde/passwd/themes/default/graphics/favicon.ico
/usr/share/horde/passwd/themes/default/graphics/passwd.png
/usr/share/tests/pear/passwd
/usr/share/tests/pear/passwd/Passwd
/usr/share/tests/pear/passwd/Passwd/AllTests.php
/usr/share/tests/pear/passwd/Passwd/Autoload.php
/usr/share/tests/pear/passwd/Passwd/TestCase.php
/usr/share/tests/pear/passwd/Passwd/Unit
/usr/share/tests/pear/passwd/Passwd/Unit/Driver
/usr/share/tests/pear/passwd/Passwd/Unit/Driver/SqlTest.php
/usr/share/tests/pear/passwd/Passwd/Unit/Factory
/usr/share/tests/pear/passwd/Passwd/Unit/Factory/DriverTest.php
/usr/share/tests/pear/passwd/Passwd/bootstrap.php
/usr/share/tests/pear/passwd/Passwd/phpunit.xml
/var/lib/pear/pkgxml/php-horde-passwd.xml

Neben der Konfiguration der Anwendung selbst, müssen wir der Anwendung Passwd auch noch mitteilen, welches Backend-Modul es verwenden und welche Passwortanforderung es geben soll.

Die mitgelieferte Konfigurationsdatei backends.php lassen wir unangetastet. Die Konfiguration nehmen wir über die lokale Kopie backends.local.php vor.

 # cp -a /etc/horde/passwd/backends.php /etc/horde/passwd/backends.local.php

Als erstes aktivieren wir den ersten Standardeintrag für das Horde Authentication Backend und definieren dann noch, welche policy also welche Anforderungen wir an das Passwort stellen.

 # vim  /etc/horde/passwd/backends.local.php
/etc/horde/passwd/backends.local.php
<?php
/**
 * This file provides defaults for backends people use to change their
 * passwords.
 *
 * IMPORTANT: DO NOT EDIT THIS FILE!
 * Local overrides MUST be placed in backends.local.php or backends.d/.
 * If the 'vhosts' setting has been enabled in Horde's configuration, you can
 * use backends-servername.php.
 *
 * Properties that can be set for each server:
 * ===========================================
 *
 * disabled: (boolean) If true, the config entry is disabled.
 *
 * name: (string) This is the plaintext name displayed if using the server
 *       list (also displayed on the main page).
 *
 * driver: The driver used to change the password. Valid drivers:
 *     - adsi: ADSI COM interface.
 *     - expect: Expect script.
 *     - horde: Horde authentication driver.
 *     - ldap: LDAP server.
 *     - pine: Pine-encoded file.
 *     - poppassd: Poppassd server.
 *     - servuftp: Servuftp server.
 *     - smbldap: LDAP server for both LDAP -and- Samba auth.
 *     - smbpasswd: Smbpasswd command.
 *     - sql: SQL authentication.
 *     - vmailmgr: Local vmailmgr daemon.
 *     - vpopmail: SQL based vpopmail.
 *
 *     - composite: Allows you to chain multiple drivers together (see example
 *                  below).
 *
 * policy: (array) The password policies for this backend. You are responsible
 *   for the sanity checks of these options. Options are:
 *     - maxLength: (integer) Maximum length of the password.
 *     - maxSpace: (integer) Maximum number of white space characters.
 *     - minAlpha: (integer) Minimum number of alphabetic characters.
 *     - minAlphaNum: (integer) Minimum number of alphanumeric characters.
 *     - minLength: (integer) Minimum length of the password.
 *     - minLower: (integer) Minimum number of lowercase characters.
 *     - minNonAlpha: (integer) Minimum number of non-alphabetic characters
 *     - minNumeric: (integer) Minimum number of numeric characters (0-9).
 *     - minSymbol: (integer) Minimum number of punctuation / symbol characters.
 *     - minUpper: (integer) Minimum number of uppercase characters.
 *
 *   Alternatively/additionally, the minimum number of character classes can
 *   be configured by setting 'minClasses'. The valid range is 0 through 4
 *   character classes may be required for a password. The available classes:
 *     - lower
 *     - number
 *     - symbol
 *     - upper
 *
 *   For example: a password of 'p@ssw0rd' satisfies three classes ('number',
 *   'lower', and 'symbol'), while 'passw0rd' only satisfies two classes
 *   ('lower' and 'number').
 *
 * logout: (boolean) If true, this backend changes the password associated
 *         with at least one Horde application. On a successful password
 *         change the current session will be destroyed and the page will
 *         redirect to the login screen. You CANNOT continue to use Horde
 *         since the old password may be cached, which will cause errors.
 *
 * params: (array) Additional information that a driver needs. See examples
 *        below for further details.
 *
 * preferred: (string) Useful if you want to use the same backend.php file
 *            for different machines. If the hostname of the Passwd Machine is
 *            identical to one of those in the preferred list, then the
 *            corresponding option in the select box will include SELECTED,
 *            i.e. it is selected per default. Otherwise the first entry in
 *            the list is selected.
 */
 
$backends['hordeauth'] = array(
    // Django : 2014-09-13
    // default: 'disabled' => true,
    'disabled' => false,
    'name' => 'Horde Authentication',
    'driver' => 'Horde',
    'policy' => array(
        // Django : 2014-09-13
        // default: 'minLength' => 6,
        //          'minNumeric' => 1,
        'minLength' => 10,
        'minNumeric' => 2,
    ),
    'logout' => true,
);
 
$backends['hordesql'] = array(
    'disabled' => true,
    'name' => 'Horde SQL Authentication',
    'driver' => 'Sql',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array_merge(
        $GLOBALS['conf']['sql'],
        array(
            'table' => 'horde_users',
            'user_col' => 'user_uid',
            'pass_col' => 'user_pass',
            'show_encryption' => false,
            'encryption' => isset($GLOBALS['conf']['auth']['params']['encryption']) ? $GLOBALS['conf']['auth']['params']['encryption'] : false
        )
    ),
    'logout' => true,
);
 
$backends['poppassd'] = array(
    'disabled' => true,
    'name' => 'Poppassd Server',
    'driver' => 'Poppassd',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'host' => 'localhost',
        'port' => 106
    ),
);
 
$backends['servuftp'] = array(
    'disabled' => true,
    'name' => 'Serv-U FTP Server',
    'driver' => 'Servuftp',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'host' => 'localhost',
        'port' => 106,
        'timeout' => 30
    ),
);
 
$backends['expect'] = array(
    'disabled' => true,
    'name' => 'Expect Script',
    'driver' => 'Expect',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'program' => '/usr/bin/expect',
        'script' => PASSWD_BASE . '/scripts/passwd-expect',
        'params' => '-telnet -host localhost -output /tmp/passwd.log'
    ),
);
 
$backends['sudo_expect'] = array(
    'disabled' => true,
    'name' => 'Expect with Sudo Script',
    'driver' => 'Procopen',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'program' => '/usr/bin/expect ' . PASSWD_BASE . '/scripts/passwd-expect -sudo'
    ),
);
 
$backends['smbpasswd'] = array(
    'disabled' => true,
    'name' => 'Samba Server',
    'driver' => 'Smbpasswd',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'program' => '/usr/bin/smbpasswd',
        'host' => 'localhost'
    ),
);
 
$backends['ldap'] = array(
    'disabled' => true,
    'name' => 'LDAP Server',
    'driver' => 'Ldap',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'host' => 'localhost',
        'port' => 389,
        'basedn' => 'o=example.com',
        // LDAP object key attribute.
        'uid' => 'uid',
        // The attribute storing the password.
        'attribute' => 'userPassword',
        // These attributes will enable shadow password policies.
        // 'shadowlastchange' => 'shadowLastChange',
        // 'shadowmin' => 'shadowMin',
        // This will be appended to the username when looking for the userdn.
        'realm' => '',
        // Use this filter when searching for the user's DN.
        'filter' => '',
        // Hash method to use when storing the password
        'encryption' => 'crypt',
        // Whether to enable TLS for this LDAP connection
        // Note: make sure that the host matches cn in the server certificate.
        'tls' => false,
        // Determine the user's DN. %u will be replaced by the user's ID.
        // Alternatively, disable this option and instead use the 'userdn'
        // hook (config/hooks.php) to dynamically set the userdn.
        //'userdn' => 'uid=%u,o=example.com'
    ),
);
 
// NOTE: to set the ldap userdn, see horde/config/hooks.php
$backends['ldapadmin'] = array(
    'disabled' => true,
    'name' => 'LDAP Server with Admin Bindings',
    'driver' => 'Ldap',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'host' => 'localhost',
        'port' => 389,
        'basedn' => 'o=example.com',
        'admindn' => 'cn=admin,o=example.com',
        'adminpw' => 'somepassword',
        // LDAP object key attribute.
        'uid' => 'uid',
        // The attribute storing the password.
        'attribute' => 'userPassword',
        // These attributes will enable shadow password policies.
        // 'shadowlastchange' => 'shadowLastChange',
        // 'shadowmin' => 'shadowMin',
        // This will be appended to the username when looking for the userdn.
        'realm' => '',
        // Use this filter when searching for the user's DN.
        'filter' => '',
        // Hash method to use when storing the password
        'encryption' => 'crypt',
        // If set, should be 0 or 1. See the LDAP documentation about the
        // corresponding parameter REFERRALS.
        // Windows 2003 Server require to set this parameter to 0
        // 'referrals' => 0,
        // Whether to enable TLS for this LDAP connection
        // Note: make sure that the host matches cn in the server certificate.
        'tls' => false
    ),
);
 
// NOTE: to set the ldap userdn, see horde/config/hooks.php
// NOTE: to make work with samba 2.x schema you must change lm_attribute and
// nt_attribute
$backends['smbldap'] = array(
    'disabled' => true,
    'name' => 'Samba/LDAP Server',
    'preferred' => '',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'driver' => 'Smbldap',
    'params' => array(
        'host' => 'localhost',
        'port' => 389,
        'basedn' => 'o=example.com',
        // LDAP object key attribute.
        'uid' => 'uid',
        // The attribute storing the password.
        'attribute' => 'userPassword',
        // This will be appended to the username when looking for the userdn.
        'realm' => '',
        // Use this filter when searching for the user's DN.
        'filter' => '',
        // Hash method to use when storing the password
        'encryption' => 'crypt',
        // Whether to enable TLS for this LDAP connection
        // Note: make sure that the host matches cn in the server certificate.
        'tls' => false,
        // Determine the user's DN. %u will be replaced by the user's ID.
        //'userdn' => 'uid=%u,o=example.com'
        // If any of the following attributes are commented out, they
        // won't be set on the LDAP server.
        'lm_attribute' => 'sambaLMPassword',
        'nt_attribute' => 'sambaNTPassword',
        'pw_set_attribute' => 'sambaPwdLastSet',
        'pw_expire_attribute' => 'sambaPwdMustChange',
         // The number of days until samba passwords expire. If this
         // is commented out, passwords will never expire.
        'pw_expire_time' => 180,
    ),
);
 
$backends['sql'] = array(
    'disabled' => true,
    'name' => 'SQL Server',
    'driver' => 'Sql',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'phptype' => 'mysql',
        'hostspec' => 'localhost',
        'username' => 'dbuser',
        'password' => 'dbpasswd',
        'encryption' => 'md5-hex',
        'database' => 'db',
        'table' => 'users',
        'user_col' => 'user_uid',
        'pass_col' => 'user_pass',
        'show_encryption' => false
        // The following two settings allow you to specify custom queries for
        // lookup and modify functions if special functions need to be
        // performed.  In places where a username or a password needs to be
        // used, refer to this placeholder reference:
        //    %d -> gets substituted with the domain
        //    %u -> gets substituted with the user
        //    %U -> gets substituted with the user without a domain part
        //    %p -> gets substituted with the plaintext password
        //    %e -> gets substituted with the encrypted password
        //
        // 'query_lookup' => 'SELECT user_pass FROM horde_users WHERE user_uid = %u',
        // 'query_modify' => 'UPDATE horde_users SET user_pass = %e WHERE user_uid = %u',
    ),
);
 
$backends['mailmgr'] = array(
    'disabled' => true,
    'name' => 'VMailMgr Server',
    'driver' => 'Vmailmgr',
    'policy' => array(),
    'params' => array(
        'vmailinc' => '/your/path/to/the/vmail.inc'
    ),
);
 
$backends['vpopmail'] = array(
    'disabled' => true,
    'name' => 'Vpopmail Server',
    'driver' => 'Vpopmail',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'phptype' => 'mysql',
        'hostspec' => 'localhost',
        'username' => '',
        'password' => '',
        'encryption' => 'crypt',
        'database' => 'vpopmail',
        'table' => 'vpopmail',
        'name' => 'pw_name',
        'domain' => 'pw_domain',
        'passwd' => 'pw_passwd',
        'clear_passwd' => 'pw_clear_passwd',
        'use_clear_passwd' => true,
        'show_encryption' => true
    ),
);
 
$backends['pine'] = array(
    'disabled' => true,
    'name' => 'Pine Password File',
    'driver' => 'Pine',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        // FTP server information.
        'host' => 'localhost',
        'port' => '21',
        'path' => '',
        'file' => '.pinepw',
        // Connect using the just-passed-in password?
        'use_new_passwd' => false,
        // Host string to look for in the encrypted file.
        'imaphost' => 'localhost'
    ),
);
 
$backends['kolab'] = array(
    'disabled' => true,
    'name' => 'Local Kolab Server',
    'driver' => 'Kolab',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(),
);
 
$backends['myscript'] = array(
    'disabled' => true,
    'name' => 'Custom Script',
    'driver' => 'Procopen',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'program' => '/path/to/my/script + myargs'
    ),
);
 
// This is an example configuration for the http driver.  This allows
// connecting to an arbitrary URL that contains a password change form.
// The params 'username','oldPasswd','passwd1', and 'passwd2' params should be
// set to the name of the respective form input elements on the html form.  If
// there are additional form fields that the form requires, define them in the
// 'fields' array in the form 'formFieldName' => 'formFieldValue'.  The driver
// attempts to determine the success or failure based on searching the
// returned html page for the values listed in the 'eval_results' array.
$backends['http'] = array(
    'disabled' => true,
    'name' => 'HTTP Server',
    'driver' => 'Http',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        'url' => 'http://www.example.com/psoft/servlet/psoft.hsphere.CP',
        'username' => 'mbox',
        'oldPasswd' => 'old_password',
        'passwd1' => 'password',
        'passwd2' => 'password2',
        'fields' => array(
            'action' => 'change_mbox_password',
            'ftemplate' => 'design/mail_passw.html'
        ),
        'eval_results' => array(
            'success' => 'Password successfully changed',
            'badPass' => 'Bad old password',
            'badUser' => 'Mailbox not found'
        ),
    ),
);
 
$backends['soap'] = array(
    'disabled' => true,
    'name' => 'SOAP Server',
    'driver' => 'Soap',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array(
        // If this service doesn't have a WSDL, the 'location' and 'uri'
        // parameters below must be specified instead.
        'wsdl' => 'http://www.example.com/service.wsdl',
        'method' => 'changePassword',
        // This is the order of the arguments to the method specified above.
        'arguments' => array('username', 'oldpassword', 'newpassword'),
        // These parameters are directly passed to the SoapClient object, see
        // http://ww.php.net/manual/en/soapclient.soapclient.php for a
        // complete list of possible parameters.
        'soap_params' => array(
            'location' => '',
            'uri' => '',
         ),
    ),
);
 
// This is an example configuration for Postfix.admin 2.3.
// Set the 'password_policy' section as you wish.
// In most installations you probably only need to change the
// hostspec and/or  password fields.
$backends['postfixadmin'] = array(
    'disabled' => true,
    'name' => 'Postfix Admin server',
    'driver' => 'Sql',
    'policy' => array(
        'minLength' => 6,
        'maxLength' => 20,
        'minNumeric' => 1,
    ),
    'params' => array(
        'phptype' => 'mysql',
        'hostspec' => 'localhost',
        'username' => 'postfix',
        'password' => 'PASSWORD',
        'encryption' => 'crypt-md5',
        'database' => 'postfix',
        'table' => 'mailbox',
        'user_col' => 'username',
        'pass_col' => 'password',
        'show_encryption' => false,
        // The following two settings allow you to specify custom queries for
        // lookup and modify functions if special functions need to be
        // performed.  In places where a username or a password needs to be
        // used, refer to this placeholder reference:
        //    %d -> gets substituted with the domain
        //    %u -> gets substituted with the user
        //    %U -> gets substituted with the user without a domain part
        //    %p -> gets substituted with the plaintext password
        //    %e -> gets substituted with the encrypted password
        //
        'query_lookup' => 'SELECT password FROM mailbox WHERE username = %u and active = 1',
        'query_modify' => 'UPDATE mailbox SET password = %e WHERE username = %u'
    ),
);
 
// This is an example configuration for chaining multiple drivers to allow for
// syncing of passwords across many backends using the composite driver as a
// wrapper.
//
// Each of the subdrivers may contain an optional parameter called 'required'
// that, when set to true, will cause the rest of the drivers be skipped if a
// particular one fails.
$backends['composite'] = array(
    'disabled' => true,
    'name' => 'All Services',
    'driver' => 'Composite',
    'policy' => array(
        'minLength' => 6,
        'minNumeric' => 1,
    ),
    'params' => array('drivers' => array(
        'sql' => array(
            'name' => 'Horde Authentication',
            'driver' => 'Sql',
            'required' => true,
            'params' => array(
                'phptype' => 'mysql',
                'hostspec' => 'localhost',
                'username' => 'horde',
                'password' => '',
                'encryption' => 'md5-hex',
                'database' => 'horde',
                'table' => 'horde_users',
                'user_col' => 'user_uid',
                'pass_col' => 'user_pass',
                'show_encryption' => false
                // 'query_lookup' => '',
                // 'query_modify' => '',
            ),
        ),
        'smbpasswd' => array(
            'name' => 'Samba Server',
            'driver' => 'Smbpasswd',
            'params' => array(
                'program' => '/usr/bin/smbpasswd',
                'host' => 'localhost',
            ),
        ),
    )),
);

Die Konfiguration der Applikation Passwd erfolgt dann über die GUI des Web-Frameworks. Dazu rufen wir unseren angelegten VHOST im Webbrowser auf.

 $ firefox https://horde.sec-mail.guru/admin/config/

Bild: Bildschirmhardcopy Horde "Configuration"

Um zur Konfiguration von Passwd zu gelangen, klicken wir nun auf den Punkt Passwort (passwd).

Bild: Bildschirmhardcopy Horde "Configuration"

Auf dieser Seite erfolgt die Konfiguration der Horde-Applikation Passwd.

Backend Settings

$conf[backend][backend_list]                                                   [hidden]
$conf[user][change]                                                            [ ]
$conf[user][refused]                                                           root, bin, daemon, adm, lp, shutdown, halt, uucp, ftp, anonymous, nobody, httpd
$conf[password][strengthtests]                                                 [✔]

Am Ende unserer Konfigurationsarbeit, sichern wir die Konfiguration mit einem Klick auf die Schaltfläche Bild: Schaltfläche "Passwort-Konfiguration erzeugen".

Bild: Bildschirmhardcopy Horde "Configuration"

Unsere Mailboxnutzer haben nun die Möglichkeit über die Webanwendung Ihr Passwort zu ändern. Den betreffenden Menüpunkt Passwort für Horde Authentication ändern erreicht man die Änderungsmaske.

Bild: Schaltfläche "Passwort-Konfiguration erzeugen"

Zu Änderung ist neben dem alten Passwort, das neue 2x einzugeben.

Bild: Schaltfläche "Passwort-Konfiguration erzeugen"

Zum Abspeichern des neuen Passwortes klickt man dann auf die Schaltfläche Bild: Schaltfläche "Passwort ändern".

Links


1)
Stand 15. September '14
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/mail_c7/horde_9.1410800230.txt.gz
  • Zuletzt geändert: 15.09.2014 16:57.
  • von django