Conoce paso a paso como instalar tu propio servidor de correo electrónico con Zextras Carbonio CE 25.x en Ubuntu 24.04

Zextras Carbonio CE es una plataforma de colaboración y gestión de correo electrónico de código abierto que permite a las organizaciones implementar su propio servidor de correo electrónico, herramientas de productividad y colaboración. Ofrece funcionalidades como correo electrónico, calendario, gestión de contactos, tareas, chat y videollamdas, todo integrado en un entorno seguro y flexible.

Beneficios Clave:

  • Seguridad y control: Al alojarlo en sus propios servidores, las organizaciones pueden garantizar la privacidad, seguridad y soberanía de los datos, cumpliendo con normativas de protección de datos.
  • Costos reducidos: Carbonio CE permite evitar costos de licencias y servicios en la nube, haciendo más accesible la implementación de herramientas de colaboración.
  • Personalización: Las organizaciones pueden adaptar la plataforma según sus necesidades específicas, integrando funciones adicionales o personalizando la interfaz web con la imagen institucional.
  • Escalabilidad: Carbonio CE se adapta al crecimiento de la organización, permitiendo escalar de forma vertical u horizontal para soportar una mayor cantidad de usuarios o agregar nuevas funcionalidades sin complicaciones.
  • Colaboración eficiente: Carbonio CE cuenta con herramientas de edición de documentos en línea, chat y videollamadas integradas, que permiten una mejor comunicación y colaboración entre equipos, aumentando su productividad y eficiencia

En esta primera entrada te explicaremos paso a paso como instalar los componentes esenciales de Zextras Carbonio CE 25.x. Antes de comenzar con la instalación de Carbonio CE, es fundamental preparar correctamente el entorno. A continuación, se detallan los requisitos mínimos y recomendados para su implementación:

🔧 Requisitos de Hardware

Para la instalación de los componentes esenciales de Carbonio CE en un único servidor (Sigle Server) se requiere contar con un servidor con las siguientes características:

  • CPU: Procesador Intel/AMD de 64 bits, mínimo 4 núcleos (se recomienda 8 núcleos o más)
  • RAM: Mínimo 16 GB
  • Disco: Al menos 50 GB para el sistema operativo y Carbonio CE.

🖥️ Requisitos de Sistema Operativo

Carbonio CE es compatible con diversas distribuciones Linux, sin embargo, esta guía está enfocada en una instalación sobre Ubuntu Server 24.04 LTS, utilizando la versión completa del sistema (no se recomienda el uso de imágenes “minimized”). Asegúrate de que el sistema cumpla con las siguientes condiciones antes de iniciar la instalación:

  • Distribución recomendada: Ubuntu Server 24.04 LTS (64 bits), instalación estándar.
  • No usar: Imágenes “minimized” o instalaciones personalizadas que omitan paquetes esenciales.

⚙️ Preparación del sistema operativo

1. Configurar una dirección IP estática

Primero configuraremos el servidor con una dirección IP estática, para ello, edita el archivo de configuración de red:

nano /etc/netplan/50-cloud-init.yaml

Agrega el siguiente contenido:

network:
  version: 2
  ethernets:
    ens192:
      addresses:
      - "192.168.3.34/24"
      nameservers:
        addresses:
        - 8.8.8.8
        search:
        - novatiecuador.com
      routes:
      - to: "default"
        via: "192.168.3.254"

Recuerda ajustar el nombre de la interfaz, la dirección IP y el servidor DNS de acuerdo a la red que manejes.

Aplica la configuración realizada:

netplan apply

2. Definir el nombre de host y deshabilitar IPv6

Define un FQDN (nombre de dominio completo) para el servidor:

hostnamectl set-hostname correo.novatiecuador.com

Edita el archivo de hosts:

nano /etc/hosts

Actualiza el contenido con la dirección IP local de nuestro servidor, seguido del nombre de host+dominio y al final el nombre de host

127.0.0.1       localhost
192.168.3.34    correo.novatiecuador.com        correo

Zextras recomienda deshabilitar IPv6, para ello, en el mismo archivo de hosts, comenta todas las referencias a IPv6, deberías tener un archivo similar al siguiente:

127.0.0.1       localhost
192.168.3.34    correo.novatiecuador.com        correo

# The following lines are desirable for IPv6 capable hosts
#::1     ip6-localhost ip6-loopback
#fe00::0 ip6-localnet
#ff00::0 ip6-mcastprefix
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters

Para deshabilitar IPv6 en el sistema y que sea persistente, crea el siguiente archivo:

nano /etc/sysctl.d/99-ipv6-disable.conf

Agrega el siguiente contenido:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

En Ubuntu Server 24.04, aunque deshabilitemos IPv6 con sysctl, las interfaces activas siguen levantando direcciones IPv6 link-local.

La opción link-local: [] en Netplan desactiva la creación automática de direcciones link-local en la interfaz.

Agrega la siguiente línea en el archivo de configuración de red:

link-local: []

Deberias un tener un archivo similar al siguiente:

nano /etc/netplan/50-cloud-init.yaml
network:
  version: 2
  ethernets:
    ens192:
      addresses:
      - "192.168.3.34/24"
      nameservers:
        addresses:
        - 8.8.8.8
        search:
        - novatiecuador.com
      routes:
      - to: "default"
        via: "192.168.3.254"
      link-local: []

Aplica la configuración realizada:

netplan apply

Reinicia el sistema para verificar los cambios:

reboot

3. Configurar locales en ingles

Carbonio CE requiere estrictamente en_US.UTF-8 como configuración regional predeterminada del sistema; una configuración regional diferente puede provocar problemas inesperados y que los servicios no funcionen correctamente.

Nos aseguramos de que tengamos instalado el paquete locales:

apt install locales

Genera el locale requerido para Carbonio CE:

locale-gen en_US.UTF-8

Edita el archivo de configuración de locale:

nano /etc/default/locale

Agrega el siguiente contenido:

LANG="en_US.UTF-8"
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Verificamos y aplicamos los cambios realizados:

source /etc/default/locale

4. Instalación de Servidor DNS

Carbonio CE requiere un DNS funcional para resolver correctamente el nombre de dominio y el registro MX. Para nuestra configuración usaremos la aplicación Bind9 como servidor DNS, muy conveniente para entornos empresariales ya que ofrece mejor rendimiento, seguridad y estabilidad..

Instala el paquete de Bind9:

apt install bind9

Edita el archivo de configuración de opciones:

nano /etc/bind/named.conf.options

Agrega el siguiente contenido:

options {
        directory "/var/cache/bind";

        recursion yes;
        allow-query { localhost; 192.168.3.0/24; };
        allow-transfer { none; };
        listen-on { 192.168.3.34; };
        forwarders {
                8.8.8.8;
                1.1.1.1;
        };

        dnssec-validation auto;

        listen-on-v6 { any; };
};

Ajusta las zonas de red y la dirección IP apuntando a la de tu servidor Carbonio.

Edita el archivo de configuración de zonas:

nano /etc/bind/named.conf.local

Agrega el siguiente contenido al final:

//Definicion de zona de busqueda directa para el dominio novatiecuador.com
zone "novatiecuador.com" {
        type master;
        file "/var/cache/bind/db.novatiecuador.com";
};

Crea el archivo de zona:

nano /var/cache/bind/db.novatiecuador.com

Agrega el siguiente contenido:

;BIND Zona de Busqueda Directa para el dominio novatiecuador.com

$TTL 86400      ; 2 d
@               IN      SOA     novatiecuador.com. root.novatiecuador.com. (
                                2025112701 ; serial
                                28800      ; refresh (8 horas)
                                7200       ; retry (2 horas)
                                24191200   ; expire (4 semanas)
                                10800      ; Negative Cache TTL
                                )

                        NS      dns.novatiecuador.com.
@                       MX  10  correo.novatiecuador.com.

dns             IN      A       192.168.3.34
correo          IN      A       192.168.3.34

Ajusta los registros A y MX para tu dominio de modo que apunte a la IP de tu servidor Carbonio.

Reinicia el servicio Bind9:

systemctl restart bind9

Edita el archivo de configuración de red, de modo que la configuración DNS ahora utilice a la dirección IP de nuestro servidor Carbonio:

nano /etc/netplan/50-cloud-init.yaml
network:
  version: 2
  ethernets:
    ens192:
      addresses:
      - "192.168.3.34/24"
      nameservers:
        addresses:
        - 192.168.3.34
        search:
        - novatiecuador.com
      routes:
      - to: "default"
        via: "192.168.3.254"
      link-local: []

Aplica la configuración:

netplan apply

Edita el archivo de configuración de resolución de nombres:

nano /etc/systemd/resolved.conf

Agregamos en el valor del DNS la dirección IP de nuestro servidor Carbonio:

[Resolve]
...
DNS=192.168.3.34
FallbackDNS=8.8.8.8 1.1.1.1

Reinicia el servicio systemd-resolved

systemctl restart systemd-resolved

5. Comprobación del DNS

Una vez instalado y configurado Bind9, debemos validar que nuestro servidor resuelve correctamente los nombres y registros MX del dominio.

Verifica que el servidor se encuentre con la configuración de resolución de nombres apuntando al servidor Carbonio:

resolvectl status

Global
           Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
    resolv.conf mode: stub
  Current DNS Server: 192.168.3.34
         DNS Servers: 192.168.3.34
Fallback DNS Servers: 8.8.8.8 1.1.1.1

Link 2 (ens192)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
       DNS Servers: 192.168.3.34
        DNS Domain: novatiecuador.com

Comprueba el registro MX:

dig MX novatiecuador.com

; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> MX novatiecuador.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49460
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;novatiecuador.com.		IN	MX

;; ANSWER SECTION:
novatiecuador.com.	86400	IN	MX	10 correo.novatiecuador.com.

;; ADDITIONAL SECTION:
correo.novatiecuador.com. 86400	IN	A	192.168.3.34

;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Nov 27 12:31:09 -05 2025
;; MSG SIZE  rcvd: 85

Comprueba el registro A:

dig correo.novatiecuador.com

; <<>> DiG 9.18.39-0ubuntu0.24.04.2-Ubuntu <<>> correo.novatiecuador.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44652
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;correo.novatiecuador.com.	IN	A

;; ANSWER SECTION:
correo.novatiecuador.com. 0	IN	A	192.168.3.34

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Nov 27 12:32:23 -05 2025
;; MSG SIZE  rcvd: 69

Con las pruebas realizadas, verificamos que el servidor DNS resuelve correctamente los registros MX y A, para tu dominio y apuntando a la IP del servidor Carbonio.

6. Instalación de PostgreSQL 16

Antes de proceder con la instalación de Carbonio CE, es indispensable contar con una base de datos PostgreSQL 16.

Configura el repositorio oficial de PostgreSQL:

echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
wget -O- "https://www.postgresql.org/media/keys/ACCC4CF8.asc" | \
gpg --dearmor | sudo tee /usr/share/keyrings/postgres.gpg > \
/dev/null
chmod 644 /usr/share/keyrings/postgres.gpg
sed -i 's/deb/deb [signed-by=\/usr\/share\/keyrings\/postgres.gpg] /' /etc/apt/sources.list.d/pgdg.list

Instala el paquete PostgreSQL 16:

apt update && apt install postgresql-16

Define una contraseña segura para el usuario administrativo que usará Carbonio:

read -s -p "Insert Password:" DB_ADM_PWD

Cuando se te solicite, introduce la contraseña segura: se almacenará en una variable denominada $DB_ADM_PWD que se podrá utilizar durante todo el procedimiento.

Crea el usuario administrativo para PostgreSQL:

su - postgres -c "psql --command=\"CREATE ROLE carbonio_adm WITH LOGIN SUPERUSER encrypted password '$DB_ADM_PWD';\""

Crea la base de datos:

su - postgres -c "psql --command=\"CREATE DATABASE carbonio_adm owner carbonio_adm;\""

Ajusta los parametros globales de PostgreSQL:

su - postgres -c "psql --command=\"ALTER SYSTEM SET listen_addresses TO '*';\""
su - postgres -c "psql --command=\"ALTER SYSTEM SET max_connections = 500;\""
su - postgres -c "psql --command=\"ALTER SYSTEM SET shared_buffers = 5000;\""

Edita el archivo de control de accesos:

nano /etc/postgresql/16/main/pg_hba.conf

Agrega la subred o la dirección IP del servidor Carbonio para evitar accesos no deseados:

# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             192.168.3.0/24          md5
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

Aplica los cambios reiniciando el servicio de postgresql:

systemctl restart postgresql

7. Configuración del repositorio de Zextras Carbonio CE

Antes de instalar los paquetes de Carbonio CE, debemos configurar el repositorio oficial de Zextras. Este paso asegura que el sistema pueda descargar las versiones correctas y actualizadas de todos los componentes.

Configura el repositorio oficial de Carbonio CE:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/zextras.gpg] https://repo.zextras.io/release/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/zextras.list
wget -O- "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x5dc7680bc4378c471a7fa80f52fd40243e584a21" | gpg --dearmor | sudo tee /usr/share/keyrings/zextras.gpg > /dev/null
chmod 644 /usr/share/keyrings/zextras.gpg

Recarga los repositorios:

apt update

Con el repositorio de Carbonio CE configurado y el sistema operativo preparado, ya tenemos el entorno listo para iniciar la instalación de los paquetes de Carbonio CE.

🌐 Instalación de Carbonio CE 25.x en Ubuntu 24.04

En esta guía nos enfocaremos en los componentes esenciales para el servicio de correo electrónico con Carbonio CE , aquellos que constituyen el núcleo del sistema y que deben estar presentes en cualquier despliegue inicial.

Componentes a instalar:

Mesh & Directory

Paquetes:

  • service-discover-server
  • carbonio-directory-server
  • carbonio-message-broker
  • carbonio-user-management
Database

Paquetes:

  • carbonio-files-db
  • carbonio-mailbox-db
  • carbonio-docs-connector-db
  • carbonio-tasks-db
  • carbonio-message-dispatcher-db
  • carbonio-ws-collaboration-db
Proxy

Paquetes:

  • carbonio-proxy
  • carbonio-webui
  • carbonio-files-ui
  • carbonio-tasks-ui
  • carbonio-ws-collaboration-ui
  • carbonio-catalog
  • carbonio-files-public-folder-ui
MTA AV/AS

Paquetes:

  • carbonio-mta
Mailstore & Provisioning

Paquetes:

  • carbonio-appserver
  • carbonio-storages-ce

Después de configurar los repositorios, la instalación de Carbonio CE requiere ejecutar algunos comandos.

Actualiza el sistema y sus repositorios:

apt update && apt upgrade

Instala los paquetes correspondientes:

apt install service-discover-server \
carbonio-directory-server carbonio-message-broker \
carbonio-user-management \
carbonio-files-db carbonio-mailbox-db \
carbonio-docs-connector-db carbonio-tasks-db \
carbonio-message-dispatcher-db \
carbonio-ws-collaboration-db \
carbonio-proxy carbonio-webui \
carbonio-files-ui carbonio-tasks-ui \
carbonio-ws-collaboration-ui  carbonio-catalog \
carbonio-files-public-folder-ui \
carbonio-mta \
carbonio-appserver carbonio-storages-ce

Finalizada la instalación de los paquetes, comienza la instalación y configuración de Carbonio CE:

carbonio-bootstrap

Deberías ver en pantalla un contenido similar al siguiente:

Configura correctamente la zona horaria. Escribe la opción 1 correspondiente a Common Configuration:

Si visualizas que el valor en la opción de TimeZone no corresponde a tu Zona Horaria, escribe la opción 6 y selecciona el valor adecuado. Para este caso la zona horaria es América/Bogotá:

Una vez establecida la Zona Horaria, escribe ‘r’ para regresar al menú anterior:

Para aplicar y continuar con la configuración escribe ‘y’. El proceso continuará hasta completarse, y presiona Enter para continuar con la configuración de Carbonio Mesh.

Carbonio Mesh es necesario para permitir la comunicación entre Carbonio CE y sus componentes. La configuración se genera de forma interactiva mediante el siguiente comando:

service-discover setup-wizard

Se te solicitará introducir lo siguiente:

  • La dirección IP y la máscara de red de nuestro servidor.
  • Una contraseña para el servicio de Carbonio Mesh (Carbonio Mesh secret).

Una vez colocados los datos, completa la instalación de Carbonio Mesh mediante el siguiente comando:

pending-setups -a

Se te solicitará introducir la contraseña que estableciste para el servicio de Carbonio Mesh:

Después de instalar los componentes básicos, es necesario inicializar las bases de datos asociadas a cada servicio. Este proceso se realiza con el usuario administrador de PostgreSQL que definimos previamente.

Inicializa las bases de datos:

Mailbox
PGPASSWORD=$DB_ADM_PWD carbonio-mailbox-db-bootstrap carbonio_adm 127.0.0.1
Carbonio Docs
PGPASSWORD=$DB_ADM_PWD carbonio-docs-connector-db-bootstrap carbonio_adm 127.0.0.1
Carbonio Files
PGPASSWORD=$DB_ADM_PWD carbonio-files-db-bootstrap carbonio_adm 127.0.0.1
Carbonio Tasks
PGPASSWORD=$DB_ADM_PWD carbonio-tasks-db-bootstrap carbonio_adm 127.0.0.1
Chats
PGPASSWORD=$DB_ADM_PWD carbonio-ws-collaboration-db-bootstrap  carbonio_adm 127.0.0.1
Message Dispatcher
PGPASSWORD=$DB_ADM_PWD carbonio-message-dispatcher-db-bootstrap carbonio_adm 127.0.0.1

🔎 Verificación del estado de los servicios de Carbonio CE

Una vez completada la instalación y el bootstrap de los componentes básicos, es fundamental comprobar que todos los servicios se encuentran activos y funcionando correctamente

En las versiones de Carbonio CE para Ubuntu 24.04, ahora los servicios se gestionan bajo systemd.

Verifica el estado de los servicios:

systemctl status carbonio-*

Carbonio introduce cuatro objetivos de systemd dedicados que agrupan los servicios por función. Puedes gestionar estos servicios de la siguiente manera:

systemctl restart carbonio-directory-server.target
systemctl restart carbonio-appserver.target
systemctl restart carbonio-proxy.target
systemctl restart carbonio-mta.target

Verifica la versión de Carbonio CE

su - zextras -c 'zmcontrol -v'

Carbonio Release 25.9.0

Verifica el estado del servidor manejado por Carbonio Mesh. En el campo Status se debe mostrar el valor alive:

consul members

Node                             Address            Status  Type    Build   Protocol  DC   Partition  Segment
server-correo-novatiecuador-com  192.168.3.34:8301  alive   server  1.19.1  2         dc1  default    <all>

Verifica el estado de la comunicación entre los servicios de Carbonio CE:

systemctl status service-discover

Si todas las comprobaciones anteriores se encuentran sin problemas, recomendamos realizar un último reinicio del servidor:

reboot

Con la verificación de los servicios completada, confirmamos que la instalación básica de Carbonio CE se encuentra operativa y preparada para ofrecer sus funcionalidades principales.

💻 Acceso a la interfaz web de Carbonio CE

El siguiente paso es establecer una contraseña al usuario administrador predeterminado zextras mediante la línea de comandos, y luego validar el acceso desde el navegador.

Asigna una contraseña segura para el usuario zextras:

su - zextras -c "carbonio prov setpassword zextras@novatiecuador.com micontraseñasegura"

Accede a la interfaz web de administración, recuerda usar tu propio FQDN o IP:

https://correo.novatiecuador.com:6071

Accede a la interfaz web de usuario o Webmail, recuerda usar tu propio FQDN o IP:

https://correo.novatiecuador.com

Con el acceso a la interfaz web, concluimos exitosamente la instalación de los componentes esenciales de Zextras Carbonio CE en Ubuntu 24.04.

¿Te gusta este post? Es solo un ejemplo de cómo podemos ayudar a tu empresa…

Comparte:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *