Skip to Content

Kolab / Horde Workshop

This past weekend I helped put on a workshop for the Calgary Linux Users Group. We covered how to install the Kolab Email Server and the Horde Framework for web based email and groupware services. It took a fair bit more effort to prep for this than I thought it would - afterall Kolab is a fairly fast install. And horde isn't toooo difficult to install, though I don't think it's quite as simple as installing a windows application.

The tricky part was trying to install Horde on the same computer that Kolab was installed on. If you're not familiar with Kolab, it is basically a couple of scripts that installs a number of server packages, all of which contribute to providing an email server. The scripts are smart enough to do all the configuration for you, after you answer a few simple questions. The Apache webserver, and the PHP extensions (via mod_php) are installed and configured specifically for Kolab. Unfortunately the version of PHP installed does not include support for database access (via MySQL, or PostgreSQL). Horde requires this database access. In a perfect world, Horde would be able to fully integrate with Kolab, and not necessarily need a separate database. But we're not there yet. So, the challenge is to install Horde on a web server that has PHP with database support, yet still install on the same physical box as Kolab.

Now, there's always more than one way to do something. And I'm sure there are people out there that know more about Kolab or Horde than I do and can make this happen easily. But, this workshop was only a day long and covered both of these packages, so we decided to find a way to make this work with the official release packages. Luckily, Apache (and Linux in general) is very flexible.

We came up with one approach for the workshop, but found another, simpler way as we were covering the topic in the workshop. The first approach was to use IP aliasing (assigning two IP addresses to one network card), and installing Apache/PHP on the server in the usual way (i.e. in addition to the Kolab install). Then tell both Apache servers to listen on one of the assigned IP addresses (but not the same one for both). This method did work but might cause routing problems.

The simpler way we found doesn't need the IP aliasing. It appears that Kolab has no need to service any web requests on port 80, but does need to handle secured web requests on port 443. So, instead of messing with different IP addresses, it's much simpler to just remove the "Listen 80" line from Kolab's Apache configuration (which is usually found at /kolab/etc/apache/apache.conf). Then as long as the non-Kolab Apache is not configured to listen on port 443, everything should work fine. Unfortunately this means that SSL cannot be used, except for the Kolab administration pages. But if you are willing to spend the time learning more about how to configure Apache, even this can be done.

The last time I tried out Horde prior to this was a few years ago. At that time you had to edit ALL the config files by hand. The documentation was pretty good, but it was still pretty complex. It's nice to see that the install process has gotten simpler, but there's still a lot of manual steps needed. Right from getting the files, to copying the *.conf.dist files to *.conf (for every module), to manually running the various SQL scripts for the database, and assigning file permissions - all BEFORE loading the test web page that tells you if you have any problems before starting the configuration steps. These first steps are pretty simple, but it seems to me this is a task screaming for automation. Perhaps if I find some idle time one day...

Horde can make greater use of Kolab's services than we configured it for. Such as storing contact info in the LDAP database, or using Kolab/LDAP authentication (instead of simple IMAP authentication). From what we saw while prepping for the workshop, this greater integration has some issues yet. So it was decided to simply treat the Kolab server as a remote IMAP server. This works fine for most cases, but of course it'll all depend on your own specific needs. If you just want a web mail system as easily as possible, then this is a great solution.

Instead of regurgitating the setup steps here, take a look at the handout document I did up. Just ignore the bit about IP aliasing - especially if you're not putting Horde on the Kolab server.

These workshops are fun, and I'd encourage everyone to take part in them, or better yet - run one. It's an excellent way to reinforce what you know, but also share your experiences. You don't need to do a professional lesson type thing. It could be as casual as a group of friends (or like minded people) getting together over beer and pizza and hacking away at some task you all have an interest in. If you happen to have some knowledge/experience at this task, then share what you know. To me, THIS is what the open source community is all about - sharing knowledge and experience among friends and colleagues.