How to install the Kolab groupware suite

Posted by / Oct 2, 2014 / Categories: Productivity

You are probably reading this little documents because you have a desire to adopt some form of groupware for yourself or the organisation you work for. At least this was the case with me.

I had a look at some more or less famous groupware or cloud oriented products that aim to take care of various common core business needs like managing contacts, calendars, exchanging files and other typical office/business oriented activities.

In this little document I not only address the “howto?” but also to a certain extend the “why?” question (starting with the latter).

The products that gravitated into my field of view are:

– SOGo,
– OwnCloud
– Kolab

The first I studied briefly, looked very attractive but in the end I never really tried it. The second I actually installed and use(d). I found it easy to install and use and with the right features. The third I looked at a long time ago and now revisited and decided to stay with.

When I look at these products I not only look at their features but also at the design and constitutive components. I’d like to get a basic understanding of how it all works. This gives me a sense of understanding and some grip on how solid it may be.

Architecture, design and feature wise SOGo looked very attractive although in the end I never came around to using it. OwnCloud had the right features (although not all) and more important for me it was very easy to install and use. One particular aspect was the possibility to encrypt the storage space. The other was the ease of sharing document with fellow users and the outside world.

Finally though I settled on Kolab for various reasons. Kolab development was instigated by the German Federal Office for Information Security (they also use it). I like to believe I am a pretty security conscious individual, so you can maybe imagine why I might want to use this particular product. It naturally has the right features and although maybe a tad complex I like the architecture and scalability. Despite this it was not that difficult to deploy.

After deciding to give Kolab a go I initially landed on this page when looking for instructions.

However I wanted to try a newer version of Kolab (due to the added features) and soon found this which pulls in a somewhat newer version. Together with all other dependencies this is a sizeable chunk of data/packages to download. In my case it was between 300 and 400 MB.

When you follow the instructions on above referenced page you may still encounter some issues (hence my little howto).

The download and install was not really an issue and seemed to work okay. When you monitor (review) the various messages flashing past you might notice that the automatically installed clamav package complains. This can easily be fixed by running freshclam (downloading signatures) and subsequently restarting the clamav daemon.

Some trouble popped up when running the setup-kolab script. It asks passwords for the many different underlying elements and roles. I happened to choose a password with a % sign in it which apparently some part of the system could not deal with (I did not check which part though). So avoid passwords with the % sign in it.

After discovering this problem and choosing another password I re-ran the setup-kolab script. Of course this meant it had already done some configuration before after the first try and had created configuration files and stuff like certificates.

This caused some trouble which was soon side stepped by removing and reinstalling the package for which this was happening.



Finally though the setup script failed when configuring the mysql part of the installation (do a basic mysql configure separately first) while trying to setup the roundcube webmail interface.

It can’t create some mysql tables. Thanks to this website the problem and solution is described in depth I could fix it.

I opted for the first (simplest) way to fix the faulty script named:


Basically there is a nested loop where the loop variable is reused and causes the problem. The solution is to use a different loop variable in the inner loop. For convenience I have included both the original Python script and the modified one (remember to rename the corrected script without the _JBR suffix).

After fixing the script I opted for doing a complete reinstall of all the packages needed by Kolab although I believe it may not actually be necessary. I just did not want to risk any half configured parts being in the way of the current installation. Only later I determined that the setup-kolab script allows you to configure the different parts separately (setup-kolab help)

Naturally after a complete reinstall you will loose the roundcube setup script so you have to save it some where and copy it
to the


directory before running the overall setup-kolab script.

After finally successfully installing and setting up Kolab it is time to login and start creating user accounts.

The initial way to do this is listed in the Kolab documentation but can be a bit confusing to noobs (like me).

You are supported to login to the WAP on http:///kolab-webadmin with the user “cn=Directory Manager” and the password provided during setup-kolab (“LDAP Directory Manager”)

What is meant here is that you literally have to type:

cn=Directory Manager

at the username prompt (i.e. including the cn= part). Once logged in you can create an administrative user and give him the role “kolab-admin”.

Next I started to create some regular user accounts and discovered that Kolab automates choice of email addresses based on what you enter for the users contact details. This is all very nice (and clever) for big organisations and so on but if you are a small operation like me you may like to change this to something simpler. This is especially true if you need to migrate (mail) accounts from systems which may not be compatible with the email names that Kolab generates.

I added to /etc/kolab.conf

  daemon_rcpt_policy = False

just below the


tag/line and further on in the same file below my domain section I replaced:

  primary_mail = %(givenname)s.%(surname)s@%(domain)s


  primary_mail = %(givenname)s@%(domain)s

and added:

  policy_uid = %(givenname)s.lower()


Since completing this howto the problem with the roundcube script has been remedied and submitted to the git repository. It will
undoubtedly soon end up in the various distro packages.

About the author
Customer contributed article by Jan Rhebergen / @JayBeRayBearGun