Being an all open source company with a team spread across cities, e-mail and chat isn’t all we need – some groupware is in order. With our close relationship to customers from the public sector, Kolab was on top of our list. So we created our own installation of a Kolab 2.2 server a few years ago.
With its monolithic structure (Kolab was designed to run its own versions of the various components like Postfix, Cyrus IMAP, openLDAP and so on) the installer was (and is) designed with an all-on-a-single-host approach in mind.
One of the included components (although from a separate project) is Horde, the open-source webmail client framework.Our first attempt to create a separate install on a web server outside the internal network seemed promising, but was substituted by a mail-only client (SquirrelMail) due to increasing performance problems. Another attempt with a new Horde release (v1.2.9) was usable, but we didn’t find the time to submerge far enough to get the Kolab integration add-on configured.
After a few years and an increase in team size and requirements towards groupware functionality, I drew the short straw a few weeks ago and started a new attempt at installing Horde: This time version 4, this time with Kolab integration right “on board”.
For the better part of a month I’ve been trying to get Horde4 up & running and I must say, this is not the way I’d like it to be. (I’ve since had been in contact with the developer – the integration is not yet finished – what I’m facing are still beta code problems. Watch out for version 4.1, which is the current target version for a working Kolab integration!)
To sum up all those hours and late nights: Horde4 does need PHP 5.3 (unlike the test page suggests) and once you start using Kolab back-ends, you’d better get the configuration right or you’ll be fighting PHP errors to no end.
Unfortunately, the web-only configuration interface is not ready in Horde4, so in addition to the parts you can do there you’ll need to configure some back-ends, too. But there’s light at the end of the tunnel: For the final code, there’s a special Horde4/Kolab-webmail bundle planned, which will make standard integration much easier.
Just for reference, here’s the list of essential config changes in the main Horde4 config file (config/conf.php from you installation root) as we’ve deducted from our tests:
// $conf[‘auth’][‘params’][‘app’] = ‘imp’;
// $conf[‘auth’][‘driver’] = ‘application’;
$conf[‘auth’][‘driver’] = ‘kolab’;// $conf[‘prefs’][‘params’][‘driverconfig’] = ‘horde’;
// $conf[‘prefs’][‘driver’] = ‘Sql’;
$conf[‘prefs’][‘driver’] = ‘KolabImap’;// $conf[‘datatree’][‘driver’] = ‘null’;
$conf[‘datatree’][‘params’][‘driverconfig’] = ‘horde’;
$conf[‘datatree’][‘driver’] = ‘sql’;// $conf[‘share’][‘driver’] = ‘Sqlng’;
$conf[‘share’][‘driver’] = ‘Kolab’;// $conf[‘accounts’][‘driver’] = ‘null’;
$conf[‘accounts’][‘params’][‘attr’] = ‘uid’;
$conf[‘accounts’][‘params’][‘strip’] = true;
$conf[‘accounts’][‘driver’] = ‘kolab’;// $conf[‘kolab’][‘enabled’] = false;
$conf[‘kolab’][‘ldap’][‘server’] = ‘ldapserver.ourdomain.com’;
$conf[‘kolab’][‘ldap’][‘port’] = 389;
$conf[‘kolab’][‘ldap’][‘basedn’] = ‘dc=ourdomain,dc=com’;
$conf[‘kolab’][‘ldap’][‘phpdn’] = ‘someneatdn’;
$conf[‘kolab’][‘ldap’][‘phppw’] = ‘someneatpassword’;
$conf[‘kolab’][‘imap’][‘server’] = ‘imapserver.ourdomain.com’;
$conf[‘kolab’][‘imap’][‘port’] = 143;
$conf[‘kolab’][‘imap’][‘sieveport’] = 2000;
$conf[‘kolab’][‘imap’][‘maildomain’] = ‘ourdomain.com’;
$conf[‘kolab’][‘imap’][‘cache_folders’] = false;
$conf[‘kolab’][‘smtp’][‘server’] = ‘smtpserver.ourdomain.com’;
$conf[‘kolab’][‘smtp’][‘port’] = 25;
$conf[‘kolab’][‘freebusy’][‘server’] = ‘https://kolabserver.ourdomain.com/freebusy’;
$conf[‘kolab’][‘enabled’] = true;
Please note that we use different LDAP- and SMTP servers (than simply the Kolab server) at the location where the Horde4 is served. There’s some preliminary config stuff for the later Kolab-integrated bundle which assumes all is on a single server – go have a look, especially at the configured backends, which you will need on top of the changes above. We’ve set up backends for IMP, Ingo and Turba, Ingo was changed to employ the Kolab driver, as was Turba.
What do you get after all this setup work? We still see many problems that we’re trying to work out, both on our own and with the help of the Horde developers. Webmail works, but for us, neither calendar nor address book nor to-do list integration does. Sometimes not even for a users’ own files – and shared resources are definitely a problem. It all may boil down to some trouble with IMAP server access, we’re seeing many error messages when annotations are to be set, but it may be a bunch of different problems and missing functionality as well. YMMV.