How to install Horde Cyrus Ldap

Summary
The goal of this howto is to install a mail server based on cyrus with a webmail based on horde (version 4)  Inside the server the different component  

Initialisation and Prerequisites
Open a terminal and connect as Root and used-it for all differents operations

> su -

First operation to do is to install all the loads from repository (fedora and rpmfusion)

> yum install httpd mysql-server php-mysql 389-ds 389-ds-base 389-ds-console policycoreutils-guicyrus-imapd cyrus-imapd-utils cyrus-sasl-ldap postfix fetchmail aspell php-pear-MDB2-Driver-mysqlphp-pear-Mail-mimeDecode php-pear-Date-Holidays php-pear-HTTP-Request php-idn php-libpuzzle php-facedetect php-pecl-imagick php-pecl-geoipphp-pecl-lzf php-mbstring php-mcrypt php-pear-Services-Weather php-pear-Net-DNS openssl mod_ssl

Define in “/etc/php.ini“ the value of date.timezone. If you don’t do that you will a lot of error in the http log (for example : date.timezone = Europe/Paris)

Change SELINUX right to authorise external connection: TBD (for the moment deactivate by using IHM TBD)

We will consider in the next part of this document the followings passwords

We will also consider that your are located in the domain “domain.com” and the server is name”comp1”. The computer name and domain shall be correctly defined (can be check by command hostname) or the configuration will not be work correctly

And finally for security reason, we will used as possible crypted connection. For example LDAPS instead of LDAP. So for that we need to have a certificat First create the private certificate > mkdir /etc/certificate > chmod 700 /etc/certificate > cd /etc/certificate > openssl genrsa -des3 -out server.key 1024 when the command ask you “Enter pass phrase for server.key: ” enter a sentence 'phrase' and remember it. Now create the csr file (Certificate Signing Request) > cd /etc/certificate > openssl req -new -key server.key -out server.csr ' ' Remove Passphrase from Key > cd /etc/certificate > cp server.key server.key.org > openssl rsa -in server.key.org -out server.key Enter pass phrase for server.key.org: 	:==> 'phrase'
 * Enter pass phrase for server.key: 	:==> 'phrase'
 * Country Name (2 letter code) [XX]:	:==> answer it
 * State or Province Name (full name) []:	:==> answer it
 * Locality Name (eg, city) [Default City]:	:==> answer it
 * Organization Name (eg, company) [Default Company Ltd]: 	:==> answer it
 * Organizational Unit Name (eg, section) []: 	:==> answer it
 * Common Name (eg, your name or your server's hostname) []:==> domain.com
 * Email Address []:	:==> admin@domain.com
 * A challenge password []:	 :==> empty
 * An optional company name []: 	 :==> empty

Generating a Self-Signed Certificate for 365 days (so you need to renew it each year, it's more secure) > cd /etc/certificate > openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Comment definition of port 80 (non secure access) in http.conf files > gedit /etc/httpd/conf/httpd.conf Add # before line “Listen 80” Co,nfigure ssl acces (port 443) > gedit /etc/httpd/conf.d /ssl.conf set line SSLCertificateFile /etc/certificate/server.crt SSLCertificateKeyFile /etc/certificate/server.key

edit the horde server part > gedit /etc/httpd/conf.d/horde.conf Add after “Allow from 127.0.0.1” the line “Allow from YouExternalIP”

Start the web server for the current session and added to the list of process to be started at init > /sbin/chkconfig httpd on > /etc/init.d/httpd start

Mysql configuration
'''Mysql is used to store all the information for horde and the different addon of it. For exemple, you will find the different gallery and photo list used in Ansel.Others DB may be used and configuration in horde is very similar'''

Start the DB server for the current session and added to the list of process to be started at init > /sbin/chkconfig mysqld on > /etc/init.d/mysqld start

Configure mysql > mysql_secure_installation Enter current password for root (enter for none):                                                ==> Pass-root Change the root password? [Y/n]                                                                  ==> y New password:                                                                                     ==> Pass-mySql Remove anonymous users? [Y/n]                                                                    ==> Y Disallow root login remotely? [Y/n]                                                              ==> Y Remove test database and access to it? [Y/n]                                                     ==> Y Reload privilege tables now? [Y/n]                                                               ==> Y

Add in the DB the different tables for the used with horde First edit in the file “/usr/share/horde/scripts/sql/create.mysql.sql” and change the password (line after “-- IMPORTANT: Change this password.”) with “Pass-horde-BD“. > gedit /usr/share/horde/scripts/sql/create.mysql.sql > cd /usr/share/horde/scripts/sql/ > mysql -u root -p < create.mysql.sql Used password : “Pass-mySql”

Initialisation of the server
'''Ldap server is used to contain all the users information used in horde, cyrus, postfix. This allow to have a unique place for the configuration of users.The configuration of openldap is difficult and so the best chose on a fedora box is to use 389 DS instead (thank to the 389-console tool)'''

Add schema for Horde > gedit /usr/share/horde/scripts/ldap/rfc2739.schema Change in rfc2739.schema "attribute" by "attributetype"

> cd /usr/lib/dirsrv/perl > wget Http://directory.fedoraproject.org/download/ol-schema-migrate.pl > chmod 700 ol-schema-migrate.pl > ./ol-schema-migrate.pl -b /usr/share/horde/scripts/ldap/horde.schema > /etc/dirsrv/schema/60horde.ldif > ./ol-schema-migrate.pl -b /usr/share/horde/scripts/ldap/rfc2739.schema > /etc/dirsrv/schema/05rfc2739.ldif

Configure 389 DS > setup-ds-admin.pl -u Would you like to continue with set up? [yes]:                                                   ==> yes Do you agree to the license terms? [no]:                                                         ==> yes Would you like to continue? [no]:                                                                ==> yes (With the use of 386 DS for personal usage, the limit is OK) Choose a setup type [2]:                                                                         ==> 2 Computer name [comp1.domain.com]:                                                                ==> comp1.domain.com System User [nobody]:                                                                            ==> nobody (User ‘nobody’ already exist in based fedora install) System Group [nobody}:                                                                           ==> nobody Do you want to register this software with an existing configuration directory server? [no]:     ==> no administrator ID [admin]:                                                                         ==> admin Password:                                                                                        ==> Pass-389-admin Password (confirm):                                                                              ==> Pass-389-admin Administration Domain [domain.com]:                                                              ==> domain.com Directory server network port [389]:                                                             ==> 389 Directory server identifier [comp1]:                                                             ==> comp1 Suffix [dc=domain, dc=com]:                                                                      ==> dc=domain, dc=com Directory Manager DN [cn=Directory Manager]:                                                     ==> cn=Directory Manager Password:                                                                                        ==> Pass-389-dir-man Password (confirm):                                                                              ==> Pass-389-dir-man Administration port [9830]:                                                                      ==> 9830 Are you ready to set up your servers? [yes]:                                                     ==> yes

Add the certificate so the LDAP server will be secure > cd /etc/dirsrv/slapd-comp1 binary > openssl pkcs12 -export -inkey /etc/certificate/server.key -in /etc/certificate/server.crt -out /tmp/crt.p12 -nodes -name 'Server-Cert' Enter Export Password:                                                                           ==> none Verifying - Enter Export Password:                                                               ==> none

> pk12util -i /tmp/crt.p12 -d. Enter new password: 	:==> none Re-enter password: 	:==> none Enter password for PKCS12 file: 	:==> none > certutil -d. -A -n "My Local CA" -t CT,, -a -i /etc/certificate/server.crt

Now we will update the configuration to use the secure port only (636) for that create 2 files

First /tmp/ssl_enable.ldif dn: cn=encryption,cn=config changetype: modify replace: nsSSL3 nsSSL3: on - replace: nsSSLClientAuth nsSSLClientAuth: required - add: nsSSL3Ciphers nsSSL3Ciphers: -rsa_null_md5,+rsa_rc4_128_md5,+rsa_rc4_40_md5,+rsa_rc2_40_md5,+rsa_des_sha,+rsa_fips_des_sha,+rsa_3des_sha,+rsa_fips_3des_sha,+fortezza,+fortezza_rc4_128_sha,+fortezza_null,+tls_rsa_export1024_with_rc4_56_sha,+tls_rsa_export1024_with_des_cbc_sha,-rc4,-rc4export,-rc2,-rc2export,-des,-desede3 dn: cn=config changetype: modify add: nsslapd-security nsslapd-security: on - replace: nsslapd-ssl-check-hostname nsslapd-ssl-check-hostname: off - replace: nsslapd-port nsslapd-port: 0

And /tmp/addRSA.ldif dn: cn=RSA,cn=encryption,cn=config changetype: add objectclass: top objectclass: nsEncryptionModule cn: RSA nsSSLPersonalitySSL: Server-Cert nsSSLToken: internal (software) nsSSLActivation: on

insert this file in the LDAP server > /usr/lib/mozldap/ldapmodify -D "cn=directory manager" -w - -f /tmp/ssl_enable.ldif > /usr/lib/mozldap/ldapmodify -D "cn=directory manager" -w - -a -f /tmp/addRSA.ldif Each time used the password : Pass-389-dir-man

Start the 389 DS for the current session and added to the list of process to be started at init > /sbin/chkconfig dirsrv on > /etc/init.d/dirsrv restart

With admin tool
insert the certificate in admin tool > cd /etc/dirsrv/admin-serv > certutil -A -d. -n "CA certificate" -t "CT,," -a -i /etc/certificate/server.crt

Start the 389 DS admin server for the current session. When the tool is needed (change of LDAP database) this action is needed to used it > /etc/init.d/dirsrv-admin start

Start the tool > /usr/bin/389-console Name: 		“admin” Password:	“Pass-389-admin” Server: 	“http://comp1.domain.com:9830” (TBD)

create admin et root account

Fetchmail
Fetchmail is the tool call periodically wich get mail from pop/imap server and send it to local mailmox through postfix Fetchmail is configure by a single file “/etc/fetchmailrc” > gedit /etc/fetchmailrc

The format of the file is described in the man page of fetchmail. Here is the main command of the file
 * set : allow to configure a parameter
 * set daemon : polling interval of fetchmail in second
 * set syslog : redirect status and error messages emitted to the syslog
 * smtphost : internal server where the mail has to be send. In our case as we used postfix, we must have the socket of the postfix lmtp server
 * poll : indicate the mail serveur to be poll
 * protocol : protocol for the polling (POP3 or IMAP)
 * username : indicate the login on the server
 * password : indicate the login on the server
 * to : give the internal login on LDAP
 * Usefull option
 * keep: option to keep the mail on the server
 * fetchall : option to get all the mail on the server (read or not read)

An example of “fetchmailrc” file set daemon 300 set syslog poll "pop.mail.yahoo.fr" protocol POP3 username "login" password "password" to user1@comp1.domain.com fetchall poll "serveur2" protocol IMAP username “login" password "password" keep to user2@comp1.domain.com smtphost "/var/lib/imap/socket/lmtp"

This file must be protected (it included your mail password) > chmod 600 /etc/fetchmailrc

By default, no daemon mode is defined, so this must be done by creating the init function as for other daemon > gedit /etc/init.d/fetchmail

# /etc/rc.d/init.d/functions /etc/sysconfig/network if [ ${NETWORKING} = "no" ] then exit 0 fi case "$1" in     start)         if [ -s /etc/fetchmailrc ]; then                echo -n "Loading fetchmail: "                daemon /usr/bin/fetchmail -f /etc/fetchmailrc                echo                touch /var/lock/subsys/fetchmail         else                exit 1         fi         ;;     stop) echo -n "Shutting down fetchmail: " /usr/bin/fetchmail -q >/dev/null 2>&1 && echo fetchmail rm -f /var/lock/subsys/fetchmail ;;    status)         status fetchmail         ;;     restart|reload) $0 stop $0 start ;;         *)         echo "Usage: fetchmail {start|stop|status|restart|reload}"         exit 1 esac exit 0
 * 1) 	This shell script takes care of starting and stopping
 * 2) 		fetchmail.
 * 1) chkconfig: 2345 81 45
 * 2) description: The Fetchmail daemons allows to retrieve mail using various
 * 3) 	      mail protocols and route them to the local MTA just as if
 * 4) 	      the mail was sent directly to the local MTA. This is
 * 5) 	      specially useful on intermittent dial-up connections.
 * 6) processname: fetchmail
 * 7) config: /etc/fetchmailrc
 * 8) author[s]:
 * 9) 	Andrea Sterbini	
 * 10) 	ObiTuarY 
 * 1) Source networking configuration.
 * 1) Check that networking is up.
 * 1) See how we were called.
 * 1)        killproc fetchmail
 * 1) === End of File ===

postfix
'''Postfix is used to managed the transfer of mail from/to cyrus and the external word. A lot of web article speaks about he choice of postfix versus sendmail, so we will not discuss it. The choice made here is postfix'''

All file for the configuration of postfix can be found in the folder ‘/etc/postfix’

Configuration of postfix > gedit /etc/postfix/main.cf Change this value myhostname = comp1.domain.com mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp inet_interfaces = $myhostname,localhost mynetworks_style = host relayhost = smtp.monprovider.fr smtpd_banner = $myhostname ESMTP $mail_name smtpd_tls_security_level = none unknown_local_recipient_reject_code = 450 alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf
 * 1) smtpd_tls_security_level = may
 * 1) unknown_local_recipient_reject_code = 550

Now you must define the link between LDAP and postfix > gedit /etc/postfix/ldap-aliases.cf

server_host = ldap://localhost:389 search_base = ou=People,dc=domain,dc=com query_filter = mail=%u@%2.com result_format = %u domain = deomain.com

for internal mail we used the alias database, so you must edit the alias database > gedit /etc/aliases Replace all root/news/ftp/webmaster/postmaster par admin and add “root:		admin” Generate the binary database > postalias /etc/aliases

cyrus
Cyrus is mail server, allowing several users to access theirs mails Configuration of cyrus services > gedit /etc/cyrus.conf

comment all SERVICES : imap, impas, pop3, pop3s, sieve Add in SERVICE : imaplocal cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imap" prefork=0

Configuration of cyrus server > gedit /etc/imapd-local.conf servername: 127.0.0.1 configdirectory: /var/lib/imap partition-default: /var/spool/imap reject8bit: no munge8bit: yes admins: cyrus root allowanonymouslogin: no hashimapspool: true allowplaintext: yes sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN tls_require_cert: false lmtpsocket: /var/lib/imap/socket/lmtp

Configuration of sasl > gedit /etc/sysconfig/saslauth

MECH:	==> ldap

> gedit /etc/sysconfig/saslauthd

auxprop_plugin: slapd ldap_servers: ldap://localhost:389 ldap_default_domain: domain.com ldap_auth_method: bind ldap_use_sasl: no ldap_start_tls: no ldap_bind_dn: cn=Directory Manager ldap_bind_pw: ????TND????, ldap_search_base: ou=People,dc=domain,dc=com ldap_scope: sub ldap_filter: uid=%u ldap_password_attr: userPassword

Start of all server
Stop the sendmail server as we used postfix instead > /sbin/chkconfig sendmail off > /etc/init.d/sendmail stop

Start the servers for the current session and added to the list of process to be started at init > /sbin/chkconfig postfix on > /sbin/chkconfig cyrus-imapd on > /sbin/chkconfig fetchmail on > /sbin/chkconfig saslauthd on > /etc/init.d/postfix start > /etc/init.d/cyrus-imapd start > /etc/init.d/fetchmail start > /etc/init.d/saslauthd start

Horde base configuration
Horde is a framework for all the other addon in the next chapter, it is based on php and the version include web access to mobile phone and a huge cleanup and reworking of library. The configuration is done in two places, directly under horde/configuration website, with administration account. And also in specifics files directly under shell

First get the module directly from horde website and install it (no rpm for it) > wget ftp://ftp.horde.org/pub/horde/gollem-h3-1.1.2.tar.gz > tar -xvf gollem-h3-1.1.2.tar.gz > cd gollem-h3-1.1.2 > mv config /etc/horde/gollem > chown -R apache:apache /etc/horde/gollem > chmod -R 770 /etc/horde/gollem > cd .. > mv gollem-h3-1.1.2 /usr/share/horde/gollem > cd /usr/share/horde/gollem > ln -s ../../../../etc/horde/gollem config

Change under your configuration the following value (http://127.0.0.1/horde/???

IMP configuration
IMP is a email part of horde, all the mail are managed by cyrus, configuration is done in two places, directly under horde/configuration, with administration account. And also in a specific file written in php to describe the mail database connection

Modification of the php file of imp to access the mail database : > gedit /etc/horde/imp/servers.php

A connection to data is made throw a “servers”, so the first operation is to comment all the “$servers[“

Add a the source to connect to the mail database.

$servers['cyrus'] = array(   'name' => 'Cyrus IMAP Server',    'server' => '127.0.0.1',    'hordeauth' => true,    'protocol' => 'imap/notls',    'port' => 143,    'maildomain' => domain.com',    'smtphost' => '127.0.0.1',    'smtpport' => 25,    'realm' => ,    'preferred' => ,    'admin' => array( 'params' => array(           'login' => 'administrator',            'password' => '?????TBD????,',            // The 'userhierarchy' parameter defaults to 'user.'            // If you are using a nonstandard hierarchy for personal            // mailboxes, you will need to set it here.            'userhierarchy' => 'user.',            // Although these defaults are normally all that is required,            // you can modify the following parameters from their default            // values.            'protocol' => 'imap/notls',            'hostspec' => 'localhost',            'port' => 143        ) ),   'quota' => array( 'driver' => 'imap', 'params' => array('hide_quota_when_unlimited' => true), ),   'acl' => array( 'driver' => 'rfc2086', ), );

Change under your configuration the following value (http://127.0.0.1/horde/??? 127.0.0.1/horde/???

kronolith configuration
All the information for the diary is stored in the SQL database Change under your configuration the following value (http://127.0.0.1/horde/???

V4

Turba configuration
Turba is a contact database, all the contact will be stored in the LDAP, configuration is done in two places, directly under horde/configuration, with administration account. and also in a specific file written in php to describe the LDAP connection

Modification of the php file of turba to access the contact database (LDAP) : > gedit /etc/horde/turba/sources.php

A connection to data is made throw a “cfgSources”, so the first operation is to comment all the “$cfgSources[“ Add a first source to implement the contact (will be stored as LDAP schema 'turbaContact')

$cfgSources['localldap'] = array(   'title' => _("Shared Directory"),    'type' => 'ldap',    'params' => array( 'server' => 'comp.domain.com', 'port' => 389, 'tls' => true, 'root' => 'dc=domain,dc=com', 'bind_dn' => 'cn=Directory Manager', 'bind_password' => '?????TBD?????,', 'sizelimit' => 200, 'dn' => array('cn'), 'objectclass' => array('top',                              'person',                               'organizationalPerson',                               'inetOrgPerson','turbaContact'), // Add 'turbaContact' to this array if using // 'turbaType' attribute below, and 'calEntry' // if using 'freebusyUrl'. 'scope' => 'one', 'charset' => 'utf-8', // Consult the LDAP schema to verify that all required attributes for // an entry are set and add them if needed. 'checkrequired' => false, // Value used to fill in missing required attributes. 'checkrequired_string' => ' ', // Check LDAP schema for valid syntax. If this is false an address // field is assumed to have postalAddress syntax; otherwise the schema // is consulted for the syntax to use. 'checksyntax' => false, 'version' => 3 ),   'map' => array( '__key' => 'dn', '__uid' => 'uid',

// From horde.schema. Make sure you have 'turbaContact' objectClass // included above: '__type' => 'turbaType', '__members' => 'turbaMembers',

'name' => 'cn', 'lastname' => 'sn', 'email' => 'mail', 'homePhone' => 'homephone', 'workPhone' => 'telephonenumber', 'cellPhone' => 'mobiletelephonenumber', 'homeAddress' => 'homepostaladdress', //       // From rfc2739.schema: 'freebusyUrl' => 'calFBURL', ),   'search' => array( 'name', 'lastname', 'email', 'homePhone', 'workPhone', 'cellPhone', 'homeAddress' ),   'strict' => array( 'dn', ),   'approximate' => array( 'cn', ),   'export' => true,    'browse' => true, );

Add a second source to implement the users of the system (will be stored as LDAP schema ‘initPeople’) $_ldap_uid = Auth::getBareAuth; $_ldap_basedn = 'dc=example,dc=com'; $cfgSources['personal_ldap'] = array(   'title' => _("My Address Book"),    'type' => 'ldap',    'params' => array( 'server' => 'localhost', 'tls' => true, 'root' => 'ou='. $_ldap_uid. ',ou=personal_addressbook,'. $_ldap_basedn, 'bind_dn' => 'uid='. $_ldap_uid. ',ou=People,'. $_ldap_basedn, 'bind_password' => Auth::getCredential('password'), 'dn' => array('uid'), 'objectclass' => array('top',                              'person',                               // 'turbaContact',                               'inetOrgPerson',                               // 'calEntry',                               'organizationalPerson'), 'scope' => 'one', 'charset' => 'utf-8', 'version' => 3 ),   'map' => array( '__key' => 'dn', '__uid' => 'uid',

From horde.schema: // '__type' => 'turbaType', // '__members' => 'turbaMembers',

'name' => 'cn', 'email' => 'mail', 'lastname' => 'sn', 'title' => 'title', 'company' => 'organizationname', 'businessCategory' => 'businesscategory', 'workAddress' => 'postaladdress', 'workPostalCode' => 'postalcode', 'workPhone' => 'telephonenumber', 'fax' => 'facsimiletelephonenumber', 'homeAddress' => 'homepostaladdress', 'homePhone' => 'homephone', 'cellPhone' => 'mobile', 'notes' => 'description',

// Evolution interopt attributes: (those that do not require the       // evolution.schema) 'office' => 'roomNumber', 'department' => 'ou', 'nickname' => 'displayName', 'website' => 'labeledURI',

// These are not stored on the LDAP server. 'pgpPublicKey' => 'object_pgppublickey', 'smimePublicKey' => 'object_smimepublickey',

// From rfc2739.schema: // 'freebusyUrl' => 'calFBURL', ),   'search' => array( 'name', 'email', 'businessCategory', 'title', 'homePhone', 'workPhone', 'cellPhone', 'homeAddress' ),   'strict' => array( 'dn', ),   'approximate' => array( 'cn', ),   'export' => true,    'browse' => true, );

Change if necessary your configuration the following value (http://127.0.0.1/ horde/???) 127.0.0.1/horde/???

Gollem configuration
Gollem is a web-based File Manager, configuration is done in two places, directly under horde/configuration, with administration account. and also in two specific files written in php to describe the file connection

First get this module directly from horde website and install it (no rpm for it) > wget ftp://ftp.horde.org/pub/gollem/gollem-h3-1.1.2.tar.gz > tar -xvf gollem-h3-1.1.2.tar.gz > cd gollem-h3-1.1.2 > mv config /etc/horde/gollem > chown -R apache:apache /etc/horde/gollem > chmod -R 770 /etc/horde/gollem > cd .. > mv gollem-h3-1.1.2 /usr/share/horde/gollem > cd /usr/share/horde/gollem > ln -s ../../../../etc/horde/gollem config

Modification of the php file of gollem to correct the link between configuration and php files : > cp /etc/horde/gollem/prefs.php.dist /etc/horde/gollem/prefs.php > chown -R apache:apache /etc/horde/gollem/prefs.php > gedit /etc/horde/gollem/prefs.php

Change line require_once dirname(__FILE__). '/../lib/Gollem.php'; by require_once '/usr/share/horde/gollem/lib/Gollem.php';

Modification of the php file of gollem to access file data : > cp /etc/horde/gollem/backends.php.dist /etc/horde/gollem/backends.php > chown -R apache:apache /etc/horde/gollem/backends.php > gedit /etc/horde/gollem/backends.php

A connection to data is made throw a “$backends”, so the first operation is to comment all the “$backends“ Add a first source to implement the file system $backends['file'] = array(

'name' => 'Virtual Home Directories',

'driver' => 'file',

'preferred' => 'comp1.domain.com',

'hordeauth' => false,

'params' => array(

// The base location under which the user home directories live.

'vfsroot' => '/home/Horde_vf/',

// The default permissions to set for newly created folders and files.

// 'permissions' => $conf['umask']

),

'loginparams' => array,

'root' => '/',

'home' => Auth::getAuth,

// 'createhome' => false,

// 'filter' => '^regex$',

// 'quota' => false,

'clipboard' => true,

'attributes' => array('type', 'name', 'edit', 'download', 'modified', 'size', 'permission', 'owner', 'group')

);

Change if necessary your configuration the following value (http://127.0.0.1/horde/???)

Ansel configuration
Ansel is a web-based photo manager, configuration is done in one places, directly under horde/configuration, with administration account.

First get this module directly from horde website and install it > wget ftp://ftp.horde.org/pub/ansel/ansel-h3-1.1.2.tar.gz > tar -xvf ansel-h3-1.1.2.tar.gz > cd ansel-h3-1.1.2 > mv config /etc/horde/ansel > chown -R apache:apache /etc/horde/ansel > chmod -R 770 /etc/horde/ansel > cd .. > mv ansel-h3-1.1.2 /usr/share/horde/ansel > cd /usr/share/horde/ansel > ln -s ../../../../etc/horde/ansel config

Change if necessary your configuration the following value (http://127.0.0.1/horde/???)

Add the sql schema for Ansel in the database First get this module directly from horde website and install it > cd /usr/share/horde/ > ./bin/db_migrate ansel

Mnemo configuration
Mnemo is a web-based note, configuration is done directly under horde/configuration, with administration account. But you need first to add the correct field in the SQL database

First get this module directly from horde website and install it (no rpm for it) > wget ftp://ftp.horde.org/pub/mnemo/mnemo-h3-2.2.4.tar.gz > tar -xvf mnemo-h3-2.2.4.tar.gz > cd mnemo-h3-2.2.4 > mv config /etc/horde/mnemo > chown -R apache:apache /etc/horde/mnemo > chmod -R 770 /etc/horde/mnemo > cd .. > mv mnemo-h3-2.2.4 /usr/share/horde/mnemo > cd /usr/share/horde/mnemo > ln -s ../../../../etc/horde/mnemo config

Modification of the php file of mnemo to correct the link between configuration and php files : > cp /etc/horde/mnemo/prefs.php.dist /etc/horde/mnemo/prefs.php > chown -R apache:apache /etc/horde/mnemo/prefs.php > gedit /etc/horde/mnemo/prefs.php

Change line require_once dirname(__FILE__). '/../lib/Mnemo.php'; by require_once '/usr/share/horde/mnemo/lib/Mnemo.php';

Add the field in the SQL database : > cd /usr/share/horde/mnemo/scripts/sql/ > mysql -u root -p horde <mnemo.sql Used password : “Pass-mySql“.

Change if necessary your configuration the following value (http://127.0.0.1/horde/???) 127.0.0.1/horde/???

trean configuration
trean is a Bookmarks managers, configuration is done directly under horde/configuration, with administration account. But you need first to add the correct field in the SQL database

First get this module directly from horde website and install it (no rpm for it) > wget ftp://ftp.horde.org/pub/snaps/latest/trean-FRAMEWORK_3*.tar.gz > tar -xvf trean-FRAMEWORK_3*.tar.gz > cd trean-FRAMEWORK_3 > mv config /etc/horde/trean > chown -R apache:apache /etc/horde/trean > chmod -R 770 /etc/horde/trean > cd .. > mv trean-FRAMEWORK_3 /usr/share/horde/trean > cd /usr/share/horde/trean > ln -s ../../../../etc/horde/trean config

Modification of the php file of horde to add this application in the horde database : > gedit /etc/horde/registry.php

Change line $this->applications['trean'] = array(

'fileroot' => FEDORA_FILEROOT. '/trean',

'webroot' => $this->applications['horde']['webroot']. '/trean',

'name' => _("Bookmarks"),

'status' => 'inactive',

'provides' => 'bookmarks',

'menu_parent' => 'organizing'

);

by $this->applications['ansel'] = array(

'fileroot' => FEDORA_FILEROOT. '/ansel',

'webroot' => $this->applications['horde']['webroot']. '/ansel',

'name' => _("Photos"),

'status' => 'active',

'provides' => 'images',

'menu_parent' => 'website'

); $this->applications['trean'] = array(

'fileroot' => FEDORA_FILEROOT. '/trean',

'webroot' => $this->applications['horde']['webroot']. '/trean',

'name' => _("Bookmarks"),

'status' => 'active',

'provides' => 'bookmarks',

'menu_parent' => 'organizing'

);

Add the field in the SQL database : > cd /usr/share/horde/trean/scripts/sql/ > mysql -u root -p horde <trean.sql Used password : “Pass-mySql“.

Change if necessary your configuration the following value (http://127.0.0.1/horde/???) 127.0.0.1/horde/???

(TBD)