Architecture of Carbonio CE

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

_images/ce-architecture.png

Fig. 1 Simplified architecture of Carbonio CE.

While in Single-Server all packages are installed on the same node, 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 all the other (i.e., the Optional Components in the orange boxes) can be combined and installed on any node, even on dedicated one. For example, User Management can be installed on the AppServer node instead of on a dedicated node. In the Multi-Server Installation scenario we use as example, we show how to set up a cluster of six nodes and combine the various Carbonio CE’s roles. A Role is a functionality that is considered atomic and can be added to the Carbonio CE by installing one or more software packages.

In Fig. 1, dependencies are denoted by the boxes piled on top of the bottom one. In other words, all the *-UI packages, which contain the files necessary to show the Module to the users, must be installed on the Proxy Node.

Hint

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

A special case is represented by the Postgres/DB-Connection role. While Carbonio CE can be installed to communicate directly with a Postgres database, it is suggested to install a middleware (PgPool-II) in order to be independent of the underlying database(s) and be able to scale without the need to configure multiple Postgres instances or even a Postgres cluster.

Core Components

The Core Components are required because they provide the basic functionalities of Carbonio CE: to allow users to securely send and receive e-mails and to manage their calendars and contacts. They are:

Directory Server

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

Proxy

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.

MTA

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.

AppServer

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.

Note also that the Proxy and MTA nodes must satisfy the following requirements to work properly:

  • their hostname must be resolved from both internal and external clients

  • they have valid FQDN and PTR, MX, and A records configured in the DNS server

  • they are reachable from the Internet

Optional Components

With optional components we denote all those Carbonio roles that add functionalities to the core components and are denoted by orange boxes in Fig. 1. In a Multi-Server installation they can be installed on any node, provided the dependencies are respected.

  • Files-CE. Allows users to store and share documents. This role also includes Files-ui and Files-db, that provide user interface files for Files-CE and script to initialise the Carbonio Files database and connections to it, respectively, and storages-CE

  • DB-connection. Provided by packages carbonio-files-db and carbonio-mailbox-db, this role has the responsibility to allow communication between Carbonio CE and the database. The use of Pgpool-II would improve flexibility and scalability in the management of the DB instance(s).

  • Preview-CE. A role to create thumbnailed images of documents to preview them

  • Docs-CE. Consists of docs-connection-CE, docs-editor, and docs-core; it provides the collaborative editing functionalities.

  • User Management. It registers the user status (logged in or logged out) and user attributes (e.g., on which AppServer a user is logged in).

  • Logger. It provides a centralised log service for all Roles installed. It is also important to highlight that there must be a unique Logger in a Multi-Server installation.

Supported Mail Protocols

Carbonio CE supports the following protocols:

  • POP3 and POP3S

  • SMTP and its secure protocols SSMTP and SPTMS (SMTP over TLS/SSL)

  • IMAP and its secure protocol IMAPS (IMAP over SSL)