System Overview

An overview diagram

Kolab is a Groupware system consisting of the following functional components:

  • IMAP Server (Dovecot): Used for email but also calendar/tasks/addressbooks/notes and files (unless stored in seafile).
  • MTA (Postfix)
  • Webclient (Roundcube)
  • ActiveSync protocol bridge (Syncroton)
  • DAV protocol bridge (iRony)
  • Autoconfig provider (kolab-autoconf)
  • File API via WOPI (chwala): Used by roundcube/collabora to access files in IMAP and Seafile.
  • IMAP filtering proxy (Guam): To remove groupware folders from regular IMAP clients.
  • Apache to run Roundcube/Syncroton/iRony/kolab-autoconf
  • NGINX as a proxy

Kolab further integrates with

  • Mattermost: As a chat solution that is integrated via iframe in roundcube.
  • Collabora: For collaborative editing and editing of word documents from roundcube.
  • Seafile: As an alternative file-storage backend.

Dovecot/Guam

When Kolab is installed dovecot is reconfigured to listen on ports 9993/9143, and Guam takes it’s place on ports 993/143, and forwards all connections to dovecot (while filtering out groupware folders).

Other modifications to dovecot include:

  • Folders are not placed below INBOX
  • A “Other Users” and “Public” namespace is set up for shared and public folders.

Roundcube/iRony/chwala/Synchroton

These components are all php applications served by apache.

Their configuration can be found under /etc/roundcubemail/ and logfiles are found under /var/log/$componentname.

NGINX

NGINX is used to proxy requests for activesync/autoconfig/dav on the primary domain to the webmail domain (which is where we have syncroton/iRony/kolab-autoconf running).

/etc/nginx/plesk.conf.d/vhosts/$domain.conf

#extension kolab begin
location /Microsoft-Server-ActiveSync {
    proxy_pass https://127.0.0.1:7081;
    proxy_set_header Host webmail.$host;
    ...
}

location ~* ^/autodiscover/autodiscover.xml {
...
location ~* ^/(\.well-known/autoconfig/|)mail/config-v1.1.xml {
...
location ~* ^/\.well-known/(caldav|carddav) {
...
location /iRony {
...
#extension kolab end

To regenerate these files plesk sbin httpdmng –reconfigure-all can be used.

APACHE

Apache is used to run syncroton/iRony/kolab-autoconf on the webmail domain.

The configuration is in:

/etc/httpd/conf/plesk.conf.d/webmails/$domain_webmail.conf

Generated from:
/usr/local/psa/admin/conf/templates/custom/webmail/roundcube.php

To regenerate these files plesk sbin httpdmng --reconfigure-all can be used.

PHP Support

Kolab has compiled php modules, and thus requires packages installed that are compatible with the php version that is in use.

You can see which php handler is used in the apache webmail configuration file:

/etc/httpd/conf/plesk.conf.d/webmails/$domain_webmail.conf

    <IfModule mod_fcgid.c>
            FcgidInitialEnv PP_CUSTOM_PHP_CGI_INDEX "plesk-php73-fastcgi"
            FcgidInitialEnv PP_CUSTOM_PHP_INI "/etc/roundcubemail/php.ini"
            FcgidMaxRequestLen 134217728

Since this file is generated (see above under Apache), it will always pick the highest available php handler for which the packages are installed.

The compiled modules are made available through the following packages:

  • plesk-php73-kolab
  • plesk-php73-kolabformat

Php packages are automatically installed for all currently installed php versions, if new php versions are installed later on you have to install the additional kolab-php packages via the extension.

Extension Service Plan Permissions

All extensions are managed via permissions on the service plan. Seafile/Mattermost/Collabora have a single permissions, Plesk Premium Email has two, one for the free version and one for the full version.

Plesk Premium Email integrations and freemium configuration

The integration with Plesk Premium Email is automatically enabled when PPE and Seafile/Mattermost/Collabora is enabled for a subscription.

The integration is enabled by writing a file to:

/etc/roundcubemail/webmail.$domain/

containing the necessary configuration.

Similarly a freemium domain is configured by writing the following file (if absent, all features are enabled):

/etc/roundcubemail/webmail.$domain/freemium.inc.php