Architecture of Carbonio CE

Architecture of Carbonio CE

The internal architecture of Carbonio CE is depicted in Fig. 1 along with each component.


In a typical Multi-Server, each of the services represented by the red boxes (i.e., the Core Components) should be installed on a dedicated node, while all the others (i.e., the Optional Components in the orange boxes) can be combined and installed on any node, even on a dedicated one. This contrasts with Single-Server, where all packages are installed on the same node. Instead of using a separate node, User Management might be put on the AppServer node. We demonstrate how to build up a cluster of six nodes and merge the various responsibilities played by Carbonio CE in the Multi-Server Installation scenario we use as an example. One or more software packages can be installed on the Carbonio CE to add a Role, which is a capability that is regarded as atomic.

Dependencies are represented in Fig. 1 by the boxes stacked on top of each other. In other words, the Proxy Node must have all *-UI packages installed, which contain the files required to allow users to see the Module.


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

The Postgres/DB-Connection role serves as an example of a specific situation. Although Carbonio CE may be set up to connect to a Postgres database directly, it is advised to set up a middleware (PgPool-II) in order to be independent of the underlying database or databases and be able to grow without having to set up numerous Postgres instances or even a Postgres cluster.

Core Elements

The Core Components are necessary for Carbonio CE’s fundamental features, including the ability for users to securely send and receive emails as well as manage their calendars and contacts. 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 CE. 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.

Also keep in mind that for the Proxy and MTA nodes to function successfully, they must fulfil the following requirements:

  • both internal and exterior clients must be able to resolve their hostname.
  • they have setup the DNS server with proper FQDN, PTR, MX, and A records.
  • They may be reached via the Internet.
Alternative Parts

With optional components, we refer to all Carbonio roles that, as indicated by the orange boxes in Fig. 1, add features to the fundamental components. They can be installed on any node in a Multi-Server installation as long as the requirements are honoured.

  • Files-CE. gives users the ability to exchange and save documents. Additionally, Files-ui, Files-db, and Storages-CE play a part in this function by providing user interface files for Files-CE and scripts that initialise the Carbonio Files database and connections to it, respectively.


    Storages-CE must be unique in a Carbonio CE installation.

  • DB-connection. This function has the job of enabling communication between Carbonio CE and the database, which is provided by the packages carbonio-files-db and carbonio-mailbox-db. The administration of the DB instance(s) would be more adaptable and scalable with the usage of Pgpool-II.
  • Create thumbnail pictures of documents with the Preview-CE role.
  • Docs-CE. features collaborative editing and is made up of docs-connection-CE, docs-editor, and docs-core.


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

  • User Control. It registers user characteristics (such as which AppServer a user is logged in on) and user status (logged in or out).
  • The admin panel. The primary administrative hub where Carbonio CE configuration choices are managed


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

Compatible Mail Protocols

There are several protocols that Carbonio CE supports.

  • POP3, POP3S
  • The secure protocols of SMTP SPTMS (SMTP over TLS/SSL) and SSMTP
  • The secure protocol of IMAP IMAP over SSL, or IMAPS