Grommunio - ArchWiki

Jump to content
Toggle the table of contents

# Grommunio

1 language

- 日本語

From ArchWiki

This article or section is a candidate for moving to User:Mfulz/Grommunio.

Notes: No improvement since flagged. (Discuss in Talk:Grommunio)

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Not a single AUR package works, overuse of newlines, etc… (Discuss in Talk:Grommunio)

Grommunio is a digital communication and collaboration software suite. It is build up from a set of different components.

This guide will guide through the basic installation and configuration of the different components to get a working setup.

It tries to fill some gaps, that made the initial start quite difficult and explains which component is working together with other ones.

## Installation

This chapter will guide through the basic installation of the required packages. It will give a rough overview on what we want to achieve and how to get there.

### Overview

We assume that we want to have a single node server, that will host all the components we need.
For this we assume that the server has a mta setup and configured (ae. postfix) and further a working mysql database (ae. mariadb)
Optional there should be a directory server (openldap or ActiveDirectory) available. This is not needed to follow this guide but highly recommended to get a complete picture.

### Packages

This is an list of the grommunio packages that needs to.be installed:

Package list
Package | Description
--- | ---
vmimeAUR | C++ library for working with RFC-822 and MIME messages
vmime-libonlyAUR | C++ library for working with RFC-822 and MIME messages. This one just containes the so files and can be used to install parallel with other ones (ae. Kopano libvmime) to help with migration and / or simultaneous installations
libexmdbppAUR | C++ implementation of the exmdb wire protocol
grommunio-mapi-headersAUR[broken link: package not found] | PHP mapi headers used in various applications
gromoxAUR[broken link: package not found] | Central groupware server component
grommunio-syncAUR[broken link: package not found] | ActiveSync synchronisation service
grommunio-webAUR[broken link: package not found] | Web application for users
grommunio-admin-apiAUR[broken link: package not found] | Central administration API component
grommunio-admin-webAUR[broken link: package not found] | Web application for administrators
grommunio-configsAUR[broken link: package not found] | Basic set of configuration files for nginx
grommunio-admin-configsAUR[broken link: package not found] | Basic set of configuration files for nginx (admin part)
grommunio-indexAUR[broken link: package not found] | Indexing service for the web application

## Configuration

This chapter will guide through the initial configuration to get everything up and running.
It is highly recommended to read / follow the official guide along which is the basis for all the tasks that are following.

### General information

There will be multiple system user accounts created and used that will separate the needed permissions regarding their needs.
This will be described in more detail during this guide, but for now the following explanation should give a rough overview.

Users / Groups
Name | Type | Description
--- | --- | ---
grommunio | User | Administration API user
gromox | User | Service user for the core services
gromoxcf | Group | Group that can read core config files
gromoxss | Group | Group that can access shared resources (in this case zcore socket)

There are more users / groups used by single services to separate and limit the access to the minimum needed ones. Further some users (like http used by nginx) will be added to some groups to be able to access the needed resources (ae. php-fpm sockets).

### Database

The first step is to create a database and a user for grommunio and adjust the configuration file. Therefore connect to your database and create a db and user for your setup. The following example is using mariadb as backend.

    $ mariadb -u root -p
    $ CREATE DATABASE `grommuniodb`;
    $ GRANT ALL ON `grommuniodb`.* TO 'grommunio'@'localhost' IDENTIFIED BY 'super-secrect-password';
    $ FLUSH PRIVILEGES;
    $ quit;

After creating the user, we'll edit the file mysql_adaptor.cfg from the gromox package and change the values to our db ones.

    $ vim /etc/gromox/mysql_adaptor.cfg

    mysql_username=grommunio
    mysql_password=super-secret-password
    mysql_dbname=grommuniodb
    schema_upgrade=host:your.mailserver.dom

The schema_upgrade is not required for a single node setup. It is only needed to have one master updating database schema and tell the nodes which one is in charge.

The next step is to create the initial tables by issuing the gromox-dbop command:

    $ gromox-dbop -C
    dbop: Creating admin_roles
    dbop: Creating associations
    dbop: Creating configs
    dbop: Creating domains
    dbop: Creating forwards
    dbop: Creating groups
    dbop: Creating options
    dbop: Creating orgs
    dbop: Creating specifieds
    dbop: Creating users
    dbop: Creating aliases
    dbop: Creating mlists
    dbop: Creating user_properties
    dbop: Creating admin_role_permission_relation
    dbop: Creating admin_user_role_relation
    dbop: Creating classes
    dbop: Creating fetchmail
    dbop: Creating secondary_store_hints
    dbop: Creating user_devices
    dbop: Creating user_device_history
    dbop: Creating task_queue
    dbop: Creating servers
    dbop: Creating orgparam
    dbop: Creating altnames

### event / timer

gromox-event is a notification daemon for an interprocess channel between gromox-imap/gromox-midb. The config file is '/etc/gromox/timer.cfg' and just contains the state path adopted to my setup:

    timer_state_path=/var/lib/grommunio/gromox/timer.txt

gromox-timer is an at(1)/atd(8)-like daemon for delayed delivery. There is no explicit configuration delivered for this service.

The timer service listens on port 6666 and the event service on port 33333.

For all possible configuration directives you can refer to their man pages: event and timer

Now we enable and start these services:

    $ systemctl enable --now gromox-event
    $ systemctl enable --now gromox-timer

Category:

- Groupware

Hidden categories:

- Pages or sections flagged with Template:Move
- Pages or sections flagged with Template:Style
- Pages with broken package links