SixthStar’s Carbonio Architectural Style

SixthStar's Carbonio Architectural Style

Fig. 1 shows the internal architecture of Carbonio with all its components.


While all packages are installed on the same node in a Single-Server, in a typical Multi-Server, each of the services depicted by the red boxes (i.e., the Core Components) should be installed on a dedicated node, while the rest (i.e., the Optional Components in the blue boxes) can be combined and installed on any node, including a dedicated one. For example, if Carbonio VideoServer is highly utilised, installing it on a dedicated node may be a good idea, whereas User Management may be deployed on the AppServer node rather than a dedicated node. As an example, in the Installation scenario,We demonstrate how to configure a cluster of six nodes and integrate the various Carbonio roles. A Role is an atomic capability that may be introduced to the Carbonio by adding one or more software packages.

Dependencies are represented in  Fig. 1 by the boxes stacked on top of the bottom one. In other words, all *-UI packages containing the files required to display the Module to users must be installed on the Proxy Node.


-UI packages provide the front-end files to access the service from a browser or mobile app.

The Core Components 
The Core Components are essential because they enable Carbonio’s core features, such as securely sending and receiving e-mails and managing calendars and contacts. They are as follows:
Directory Server

It is used to manage the configuration of the infrastructure and provisioning of users and domains.


The Proxy is indeed a reverse proxy that acts as the central access point to the Email accounts. It also prevents a public, direct access to the AppServers and other backend services.

This node is the only one on which the -UI packages can be installed.


The MTA is the engine room of Carbonio. Its duties include email transfer and forwarding, filtering, and other services to keep email clean and secure.


The Application Server provides the application login to manage the accounts data, e.g., emails, contacts, and calendar appointments. In small environments there can be one or two AppServer nodes, but more can be added to a large or growing infrastructure.

Carbonio Mesh

Carbonio Mesh manages security and provides fault-tolerant routing between nodes of a Multi-Server installation. To operate properly, there must be at least one Carbonio Mesh Server, which ideally should be installed on the Directory-Server Node, while all other nodes must install the Carbonio Mesh Agent.

Carbonio Monitoring

Carbonio Monitoring is the replacement of the previous Logger Role. Compared to the standard  Syslog monitoring system, Carbonio Monitoring is a fully centralised log facility that stores log messages in to a database, allowing therefore an administrator to keep a full history of the events on the system and making the search for past event easier.

It should also be noted that the Proxy and MTA nodes must meet the following characteristics in order to function properly:

  • Both internal and external clients must be able to resolve their hostname.
  • They have a legitimate FQDN as well as PTR, MX, and A records set on the DNS server.
  • They are accessible over the Internet.
Optional Elements
We refer to optional components as all Carbonio roles that provide functionality to the basic components and are represented by orange boxes in Fig. 1. They can be installed on any node in a Multi-Server installation as long as the dependencies are met.
  • Chat. Chat and video call capabilities are available. It includes Chat-UI as well as the AppServer Advanced, which is part of the carbonio-advanced package.
  • Files enable users to save and exchange documents. This role also comprises Files-ui and Files-db, which offer user interface files for Files and scripts to initialise and connect to the Carbonio Files database, respectively.
  • Preview. A job responsible for creating thumbnail pictures of documents in order to preview them.
  • Docs. It is made up of docs-connection, docs-editor, and docs-core, and it enables collaborative editing capabilities.


In Multi-Server installation, there can be only one instance of Docs.

  • DB-connection. This role, which is provided by the packages carbonio-files-db and carbonio-mailbox-db, is responsible for allowing communication between Carbonio and the database. The adoption of Pgpool-II would increase the flexibility and scalability of the DB instance(s) administration.
  • User Administration. It stores the user state (logged in or logged out) as well as user characteristics (for example, which AppServer a user is logged into).
  • VideoServer. It enables video communication and is a required component for the correct usage of video conferencing services.
  • VideoServer Capture. This module enhances the VideoServer’s recording capabilities.
  • The Admin Panel. Carbonio’s basic administrative centre, where you may manage the configuration parameters.


The Logger component, which is based on a cron-based collection of CSV files, has been deprecated. We are working to integrate in Carbonio a metrics-based monitoring system, based on the Prometheus technology.

Mail Protocols Supported
Carbonio is compatible with the following protocols:
  • POP3 and POP3S files
  • SMTP and its encrypted protocols SPTMS (SMTP over TLS/SSL) and SSMTP (SMTP over TLS/SSL)
  • IMAP, as well as its safe protocol IMAP over SSL (IMAPS)