Architecture of Carbonio
Fig. 1 shows the internal architecture of Carbonio with all its components.
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 blue boxes) can be combined and installed on any node, even on a dedicated one. For example, if Carbonio VideoServer is heavily used, it could be a good idea to install it on a dedicated node, while 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’s roles. A Role is a functionality that is considered atomic and can be added to the Carbonio 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
which contain the files necessary to show the Module to the 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.
A special case is represented by the Postgres/DB-Connection role. While Carbonio 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.
The Core Components are required because they provide the basic functionalities of Carbonio: to allow users to securely send and receive e-mails and to manage their calendars and contacts. They are:
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
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 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
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.
Chat. Provides the chat and video call functionalities. It includes Chat-UI and the AppServer Advanced, the latter provided by the carbonio-advanced package.
Files. Allows users to store and share documents. This role also includes Files-ui and Files-db, that provide user interface files for Files and script to initialise the Carbonio Files database and connections to it, respectively.
Preview. A role to create thumbnailed images of documents to preview them
Docs. Consists of docs-connection, docs-editor, and docs-core; it provides the collaborative editing functionalities.
DB-connection. Provided by packages carbonio-files-db and carbonio-mailbox-db, this role has the responsibility to allow communication between Carbonio and the database. The use of Pgpool-II would improve flexibility and scalability in the management of the DB instance(s).
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.
VideoServer. It provides video communication capabilities and is a necessary component for the proper use of videoconferencing service.
VideoServer Recording. This modules adds recording abilities to the VideoServer.
Admin Panel. The core administration centre in which to manage the configuration options of Carbonio
Supported Mail Protocols
Carbonio 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)