Horde

Status

17.06.2007: I no longer use any of the Horde web applications, therefore I do not update this page any longer. Nevertheless, I think the project is pretty cool and I might come back to it one day, so I keep this page around for possible future reference.


Debian packages

The following Debian packages need to be installed:

imp4
turba2
kronolith2
nag2

All these packages are for Horde web applications. The basic Horde package(s) are installed as automatic dependencies.


Configuration

File system modifications

Later, during Web configuration, some files in /etc/horde are going to be modified, therefore these files need to be writable by the user www-data.

for application in horde3 imp4 turba2 kronolith2 nag2
do
  cd /etc/horde/$application
  touch conf.php.bak
  chown www-data conf.php conf.php.bak
done


MySQL

According to the documentation of Horde, the following directory should exist and contains the SQL scripts necessary to create the required database tables:

/usr/share/horde3/scripts/sql

For some reason, the Debian packages do not contains this directory. I had to manually download and install the following SQL script files:

http://cvs.horde.org/horde/scripts/sql/create.mysql.sql
http://cvs.horde.org/nag/scripts/sql/nag.sql
http://cvs.horde.org/kronolith/scripts/sql/kronolith.mysql.sql

Notes:

  • the script create.mysql.sql creates the database horde as well as the user that will be used to access the database; before executing the script, load it in an editor and change the password
  • execute the other scripts while having selected the database horde (i.e. say "use horde;")


PHP configuration

imp requires the PHP module IMAP. Although the module's Debian package is installed as a dependency, the module itself is not activated. This has to be done manually.

Edit the file

/etc/php4/apache/php.ini

and add the following line at the end

extension=imap.so


Finally, restart Apache to activate the module:

apachectl stop
apachectl start


Apache integration

Add the following block to the Apache configuration (/etc/apache2/conf.d/osgiliath.conf on my system):

Alias /horde3/ /usr/share/horde3/
<Directory /usr/share/horde3/>
  Require all granted
  Options FollowSymLinks Includes
  <IfModule mod_php4.c>
    php_admin_flag engine on
    php_value upload_max_filesize 10M
  </IfModule>
</Directory>


Obviously, Apache needs to be restarted now:

apache2ctl graceful


Configure the IMP application

The following file needs to be modified

/etc/horde/imp4/servers.php

All existing example configurations must be commented. Instead, the following new configuration needs to be inserted. Notes:

  • most of the settings can be copied from the IMAP example configuration
  • important settings are the folders and protocol options (the latter because we might wish to change it to something else than "no TLS" in the future)
$servers['imap_osgiliath'] = array(
    'name' => 'osgiliath IMAP server',
    'server' => 'localhost',
    'hordeauth' => false,
    'protocol' => 'imap/notls',
    'port' => 143,
    'folders' => 'INBOX.',
    'namespace' => '',
    'maildomain' => 'example.com',
    'smtphost' => 'localhost',
    'smtpport' => 25,
    'realm' => '',
    'preferred' => '',
    'dotfiles' => false,
    'hierarchies' => array()
);


Configure the Turba application

The following file needs to be modified

/etc/horde/turba2/sources.php

All existing example configurations must be commented. Instead, the following new configuration needs to be inserted. Notes:

  • most of the settings can be copied from the LDAP example configuration
  • important settings are the folders and protocol options (the latter because we might wish to change it to something else than "no TLS" in the future)
      $uid = Auth::getBareAuth();
      $basedn = 'dc=herzbube,dc=ch';
      $cfgSources['ldap_osgiliath'] = array(
          'title' => _("osgiliath LDAP server"),
          'type' => 'ldap',
          'params' => array(
              'server' => 'localhost',
              'tls' => false,
              'root' => 'ou=addressbook,' . $basedn,
              'bind_dn' => 'cn=' . $uid . ',ou=users,' . $basedn,
              'bind_password' => Auth::getCredential('password'),
              'dn' => array('cn', 'uid'),
              'objectclass' => array('top',
                                     'person',
                                     'inetOrgPerson',
                                     // 'calEntry',
                                     'organizationalPerson'),
              'charset' => 'utf-8',
              'version' => 3
          ),
          'map' => array(
              '__key' => 'dn',
              'name' => 'cn',
              'firstname' => 'givenName',
              'lastname' => 'sn',
              'email' => 'mail',
              'homeStreet' => 'street',
              'homePostalCode' => 'postalCode',
              'homeCity' => 'l',
              'homePhone' => 'homePhone',
              'workPhone' => 'workPhone',
              'cellPhone' => 'mobile',
              'fax' => 'workFax',
              'notes' => 'description',
              'website' => 'homepage',
              'nickname' => 'nickName',
              // These are not stored on the LDAP server.
              'pgpPublicKey' => 'object_pgppublickey',
              'smimePublicKey' => 'object_smimepublickey'
          ),
          'search' => array(
              'name',
              'email',
              'homeStreet',
              'homeCity'
          ),
          'strict' => array(
              'dn',
          ),
          'public' => true,
          'readonly' => true,
          'admin' => array($uid),
          'export' => true
      );


Web browser configuration

Point your web browser at

http://osgiliath/horde3/

The errors displayed in the left sidebar can be safely ignored (they refer to /etc/horde/imp4/prefs.php).

Horde's standard configuration is to automatically log you in as Administrator. This allows you to immediately start changing the configuration:

  • select Administration (in the top right corner) -> Setup -> Horde (from the list of applications)
  • on the following screen, a gazillion options are available for configuration, distributed across several tabs; for starters, it is Ok to click the link "Generate Horde configuration"

As an alternative, the following settings can be made right now:

  • General
    • Cookie path = /horde3
  • Authentication
    • Administrator user = patrick
    • Backend to use for authentication = Let a horde application do it
    • Application = imp
  • Preference System
    • Driver = SQL Database (so that users can change their preferences)
  • DataTree System
    • Backend = SQL Database (is used by the Nag application, possibly also by others)
  • Problem Reporting
    • Email = herzbube@herzbube.ch


The IMP application can now be configured in the same way as the Horde application:

  • External Utilities and Menu
    • GPG path = /usr/bin/gpg
    • Location of root certificates bundle = ???
  • Mail Server
  • Cache Folder List = yes (the effect of this is: if a client other than IMP changes the folder list while you are logged in to IMP, the change will be shown by IMP only after you log out and log back in)
  • Mailbox and Fetchmail
    • Display Colors for Messages from other accounts = yes
  • Other settings
    • Mail Logging = false


Thurba application:

  • Name of client addressbook = ldap_osgiliath (or whatever was chosen as the key in sources.php)
  • Cache results = true


Nag application

  • No changes necessary, defaults are OK


Kronolith application

  • Server name from which emails are sent = herzbube.ch
  • Email address from which emails are sent = kronolith@herzbube.ch