Instalar Roundcube en Debian

Cómo Instalar y Configurar Roundcube en Debian (Guía Completa 2026)

 Cómo Instalar y Configurar Roundcube en Debian (Guía Completa 2026)

📘 Este artículo complementa a nuestra Guía paso a paso para instalar y configurar un servidor de correo en Debian, donde cubrimos el stack completo (Postfix + Dovecot + Roundcube). Si aún no tienes el servidor de correo funcionando, empieza por esa guía. Este artículo profundiza en Roundcube específicamente: instalación, seguridad, plugins, multi-dominio y troubleshooting.

Introducción

Roundcube es el webmail open source más usado del mundo con Postfix y Dovecot. Interfaz moderna, ligera, extensible con plugins, y compatible con IMAP/SMTP. Si tienes tu propio servidor de correo, Roundcube es la forma más cómoda de acceder a él desde cualquier navegador.

En 2026, Roundcube es la elección por defecto para:

  • Servidores de correo auto-hospedados (self-hosted).
  • PYMES que quieren control total sobre su correo.
  • Entusiastas que quieren privacidad.
  • Sysadmins que gestionan múltiples dominios.

En esta guía completa vas a aprender:

  • Qué es Roundcube y sus ventajas.
  • Requisitos previos (Postfix, Dovecot, MariaDB, Nginx).
  • Instalación paso a paso en Debian 12.
  • Configuración con config.inc.php.
  • Nginx + SSL con Let’s Encrypt.
  • Integración con IMAP y SMTP.
  • Seguridad: fail2ban, HTTPS, 2FA, sesiones.
  • Plugins esenciales y cómo instalarlos.
  • Múltiples dominios con Roundcube.
  • Optimización y rendimiento.
  • Troubleshooting de errores comunes.
  • FAQ con las preguntas más frecuentes.

Si empiezas desde cero con el correo, consulta primero nuestra Guía de servidor de correo en Debian y nuestra Guía de servidor de correo con ClamAV y SpamAssassin.


Índice de contenidos

  1. ¿Qué es Roundcube?
  2. Requisitos previos
  3. Instalación en Debian 12
  4. Configuración básica
  5. Nginx + SSL
  6. IMAP y SMTP
  7. Seguridad
  8. Plugins esenciales
  9. Múltiples dominios
  10. Optimización
  11. Troubleshooting
  12. FAQ
  13. Conclusión

1. ¿Qué es Roundcube?

Roundcube es un cliente de correo web (webmail) escrito en PHP, con interfaz moderna y soporte para IMAP/SMTP.

1.1 Características principales

  • Interfaz moderna y responsiva.
  • Compatible con IMAP y SMTP.
  • Soporte para múltiples identidades.
  • Gestión de contactos (CardDAV).
  • Calendario (a través de plugins).
  • Filtros de correo (ManageSieve).
  • Cifrado PGP (plugin).
  • Multi-idioma (más de 80 idiomas).
  • Extensible con +200 plugins.
  • Compatible con MariaDB, PostgreSQL, SQLite.

1.2 Ventajas de Roundcube

  • Open source (GPL).
  • Gratis.
  • Ligero.
  • Moderno.
  • Seguro.
  • Comunidad activa.
  • Integración con Postfix/Dovecot.

1.3 Roundcube vs otras alternativas

WebmailVentajasInconvenientes
RoundcubeLigero, moderno, pluginsMenos features que suite completas
SnappyMailMás rápido, modernoComunidad más pequeña
RainLoopFácil instalaciónDesarrollo estancado
SquirrelMailClásicoObsoleto, feo
HordeSuite completaMuy pesado
Nextcloud MailIntegrado en NextcloudRequiere Nextcloud

Conclusión: Roundcube es la mejor opción para la mayoría de casos.

1.4 Versiones actuales

  • Roundcube 1.6.x (estable, 2024-2026).
  • Roundcube 1.7.x (en desarrollo).

Recomendación: usa la última versión estable.

Consulta Guía Completa de Servidores para el contexto general.


2. Requisitos previos

Antes de instalar Roundcube, necesitas tener funcionando:

2.1 Servidor de correo

  • Postfix (SMTP).
  • Dovecot (IMAP/POP3).
  • Usuario del sistema para el correo.
  • DNS configurado (MX, SPF, DKIM, DMARC).

Si no lo tienes, empieza por nuestra Guía de servidor de correo en Debian.

2.2 Servidor web

  • Nginx (recomendado).
  • O Apache.
  • Certificado SSL (Let’s Encrypt).

Consulta Guía de Nginx y Guía de SSL en Nginx.

2.3 Base de datos

  • MariaDB o MySQL (recomendado).
  • O PostgreSQL.
  • O SQLite (solo para pruebas).

Consulta Cómo instalar MariaDB.

2.4 PHP

  • PHP 8.2+ (obligatorio).
  • Extensiones: php-imap, php-mbstring, php-xml, php-zip, php-gd, php-intl, php-curl.

2.5 Sistema operativo

  • Debian 12 (Bookworm) — recomendado.
  • Debian 11 (Bullseye) — funciona pero LTS.
  • Debian 13 (Trixie) — si ya está disponible.

Nota sobre versiones:

  • Debian 11: paquetes más antiguos, PHP 7.4.
  • Debian 12: PHP 8.2, paquetes actualizados.
  • Debian 13: PHP 8.3+, última versión.

Este artículo se centra en Debian 12. Los comandos funcionan en Debian 11 con ajustes mínimos.


3. Instalación en Debian 12

3.1 Actualizar el sistema

sudo apt update
sudo apt full-upgrade -y

3.2 Instalar paquetes base

sudo apt install -y \
    nginx \
    mariadb-server \
    php-fpm php-cli php-mysql php-imap php-mbstring \
    php-xml php-zip php-gd php-intl php-curl php-json \
    roundcube roundcube-core roundcube-mysql \
    roundcube-plugins roundcube-plugins-extra \
    certbot python3-certbot-nginx \
    unzip wget

Explicación:

  • roundcube: paquete principal.
  • roundcube-core: núcleo.
  • roundcube-mysql: driver MySQL.
  • roundcube-plugins: plugins oficiales.
  • php-imap: extensión IMAP (¡crítica!).

3.3 Configurar MariaDB

Asegurar MariaDB:

sudo mysql_secure_installation

Crear base de datos y usuario:

sudo mysql -u root -p
CREATE DATABASE roundcube DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'PasswordSeguro123!';
GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Importar el esquema:

sudo mysql -u roundcube -p roundcube < /usr/share/dbconfig-common/data/roundcube/install/mysql

O si usas el paquete:

sudo dpkg-reconfigure roundcube-core

Te pedirá:

  • Host: localhost.
  • Base de datos: roundcube.
  • Usuario: roundcube.
  • Contraseña: la que pusiste.

Verificar:

sudo mysql -u roundcube -p roundcube -e "SHOW TABLES;"

Deberías ver tablas como users, session, contacts…

3.4 Verificar instalación

dpkg -l | grep roundcube

Deberías ver:

ii  roundcube              1.6.x
ii  roundcube-core         1.6.x
ii  roundcube-mysql        1.6.x
ii  roundcube-plugins      1.6.x

3.5 Ubicación de Roundcube

Con el paquete de Debian, Roundcube se instala en:

/usr/share/roundcube/

Y su configuración en:

/etc/roundcube/

Consulta Guía Completa de Linux para gestión de paquetes.


4. Configuración básica

4.1 Archivo principal de configuración

Edita /etc/roundcube/config.inc.php:

sudo nano /etc/roundcube/config.inc.php

4.2 Configuración mínima

<?php
$config = [];

// Base de datos
$config['db_dsnw'] = 'mysql://roundcube:PasswordSeguro123!@localhost/roundcube';

// IMAP
$config['imap_host'] = 'ssl://localhost:993';
$config['imap_conn_options'] = [
    'ssl' => [
        'verify_peer'       => false,
        'verify_peer_name'  => false,
        'allow_self_signed' => true,
    ],
];

// SMTP
$config['smtp_host'] = 'ssl://localhost:465';
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['smtp_conn_options'] = [
    'ssl' => [
        'verify_peer'       => false,
        'verify_peer_name'  => false,
        'allow_self_signed' => true,
    ],
];

// Seguridad
$config['des_key'] = 'tu-des-key-aleatorio-32-chars-minimo';

// Interfaz
$config['language'] = 'es_ES';
$config['skin'] = 'elastic';

// Product name
$config['product_name'] = 'Mi Webmail';

// Timezone
$config['timezone'] = 'Europe/Madrid';

// Logs
$config['log_driver'] = 'file';
$config['log_dir'] = '/var/log/roundcube/';
$config['debug_level'] = 1;

// Sesiones
$config['session_lifetime'] = 30;  // minutos

// Seguridad adicional
$config['enable_installer'] = false;  // ¡Crítico!
$config['ip_check'] = true;
$config['referer_check'] = true;

4.3 Generar des_key

openssl rand -base64 32

Copia el resultado y pégalo en $config['des_key'].

4.4 Configurar permisos

sudo mkdir -p /var/log/roundcube
sudo chown www-data:www-data /var/log/roundcube

sudo chown www-data:www-data /etc/roundcube/config.inc.php
sudo chmod 640 /etc/roundcube/config.inc.php

sudo chown -R www-data:www-data /var/lib/roundcube/

4.5 Verificar sintaxis PHP

php -l /etc/roundcube/config.inc.php

Debería decir:

No syntax errors detected

5. Nginx + SSL

5.1 Configurar Nginx

Crea /etc/nginx/sites-available/roundcube:

server {
    listen 80;
    server_name webmail.tudominio.com;
    
    # Redirigir a HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name webmail.tudominio.com;

    # SSL (Certbot lo rellena)
    ssl_certificate /etc/letsencrypt/live/webmail.tudominio.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/webmail.tudominio.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;

    # Seguridad
    add_header Strict-Transport-Security "max-age=31536000" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;

    # Root
    root /var/lib/roundcube/public_html;
    index index.php;

    # Logs
    access_log /var/log/nginx/roundcube.access.log;
    error_log /var/log/nginx/roundcube.error.log;

    # Tamaño máximo de subida
    client_max_body_size 50M;

    # Location principal
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # PHP
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 300;
    }

    # Bloquear archivos sensibles
    location ~ /\. {
        deny all;
    }
    location ~ ^/(config|temp|logs)/ {
        deny all;
    }
    location ~ /README|INSTALL|LICENSE|CHANGELOG|UPGRADING {
        deny all;
    }
    location ~ /composer\.(json|lock) {
        deny all;
    }
}

5.2 Activar el sitio

sudo ln -s /etc/nginx/sites-available/roundcube /etc/nginx/sites-enabled/
sudo nginx -t

Si todo está OK:

sudo systemctl reload nginx

5.3 Obtener certificado SSL

sudo certbot --nginx -d webmail.tudominio.com

Certbot:

  1. Verifica el dominio.
  2. Genera el certificado.
  3. Modifica la configuración de Nginx.
  4. Programa la renovación automática.

Accede ahora a: https://webmail.tudominio.com

Consulta Guía completa para configurar SSL en Nginx para más detalle.

5.4 Configurar DNS

Asegúrate de que el DNS apunta a tu servidor:

webmail.tudominio.com.  A   IP-DEL-SERVIDOR

Consulta Guía Completa de Redes para más sobre DNS.


6. IMAP y SMTP

6.1 Configuración de IMAP

En config.inc.php:

// IMAP con SSL
$config['imap_host'] = 'ssl://localhost:993';

// O IMAP con STARTTLS
// $config['imap_host'] = 'tls://localhost:143';

// Autenticación
$config['imap_auth_type'] = null;  // Autodetect

// Timeout
$config['imap_timeout'] = 60;

// Opciones SSL
$config['imap_conn_options'] = [
    'ssl' => [
        'verify_peer'       => false,
        'verify_peer_name'  => false,
        'allow_self_signed' => true,
    ],
];

6.2 Configuración de SMTP

En config.inc.php:

// SMTP con SSL
$config['smtp_host'] = 'ssl://localhost:465';

// O SMTP con STARTTLS
// $config['smtp_host'] = 'tls://localhost:587';

// Autenticación (usa las credenciales del usuario)
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';

// Timeout
$config['smtp_timeout'] = 60;

// Opciones SSL
$config['smtp_conn_options'] = [
    'ssl' => [
        'verify_peer'       => false,
        'verify_peer_name'  => false,
        'allow_self_signed' => true,
    ],
];

6.3 Verificar Dovecot

Comprobar que Dovecot escucha:

sudo ss -tulpn | grep -E '993|143|465|587'

Deberías ver:

tcp   LISTEN  0  100  0.0.0.0:993  0.0.0.0:*  users:(("dovecot",...))
tcp   LISTEN  0  100  0.0.0.0:143  0.0.0.0:*  users:(("dovecot",...))

Verificar certificado SSL:

sudo openssl s_client -connect localhost:993 -quiet

Si conecta, Dovecot está bien configurado.

6.4 Probar con openssl s_client

# IMAP
openssl s_client -connect localhost:993 -crlf
# Escribe: a LOGIN usuario contraseña

# SMTP
openssl s_client -connect localhost:465 -crlf
# Escribe: EHLO localhost

Consulta Guía de servidor de correo en Debian para la configuración completa del stack.


7. Seguridad

7.1 Principios básicos

  1. Solo HTTPS.
  2. Autenticación obligatoria.
  3. Deshabilitar el instalador.
  4. Sesiones seguras.
  5. Fail2ban.
  6. Cabeceras de seguridad.

7.2 Deshabilitar el instalador

⚠️ CRÍTICO: después de instalar, deshabilita el instalador web.

En config.inc.php:

$config['enable_installer'] = false;

O elimina la carpeta del instalador:

sudo rm -rf /var/lib/roundcube/public_html/installer/

Consulta Guía Completa de Ciberseguridad para más capas de seguridad.

7.3 Configurar sesiones

// Timeout de sesión (minutos)
$config['session_lifetime'] = 30;

// Verificación de IP
$config['ip_check'] = true;

// Verificación de referer
$config['referer_check'] = true;

// Cookie segura
$config['session_storage'] = 'db';
$config['cookie_secure'] = true;
$config['cookie_httponly'] = true;
$config['cookie_samesite'] = 'Lax';

7.4 Contraseñas robustas

  • Mínimo 12 caracteres.
  • Combinación de mayúsculas, minúsculas, números, símbolos.
  • Sin reutilización.

Consulta Buenas prácticas en contraseñas y 2FA.

7.5 Fail2ban para Roundcube

Crear filtro /etc/fail2ban/filter.d/roundcube.conf:

[Definition]
failregex = ^<HOST> .* "POST /?_task=login.*" 401
            ^<HOST> .* "POST /?_task=login.*" 403
ignoreregex =

Crear jail /etc/fail2ban/jail.d/roundcube.conf:

[roundcube]
enabled = true
port = http,https
filter = roundcube
logpath = /var/log/nginx/roundcube.access.log
maxretry = 5
bantime = 3600
findtime = 600

Reiniciar:

sudo systemctl restart fail2ban
sudo fail2ban-client status roundcube

Consulta Cómo configurar y usar Fail2ban.

7.6 2FA con TOTP

Roundcube tiene un plugin oficial: twofactor_gauthenticator.

Instalar:

cd /var/lib/roundcube/plugins
sudo git clone https://github.com/alexandregz/twofactor_gauthenticator.git

Activar en config.inc.php:

$config['plugins'][] = 'twofactor_gauthenticator';
$config['twofactor_gauthenticator']['force_enrollment'] = false;

Reiniciar:

sudo systemctl restart nginx

Consulta La evolución de los sistemas de autenticación.

7.7 Cabeceras de seguridad

Ya incluidas en la configuración de Nginx:

  • HSTS: fuerza HTTPS.
  • X-Frame-Options: previene clickjacking.
  • X-Content-Type-Options: previene MIME sniffing.
  • CSP: política de contenido (opcional).

Consulta Cómo implementar el protocolo HTTPS correctamente.

7.8 Firewall

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 25/tcp
sudo ufw allow 465/tcp
sudo ufw allow 587/tcp
sudo ufw allow 143/tcp
sudo ufw allow 993/tcp
sudo ufw enable

Consulta Guía para configurar firewall en Debian y Cómo configurar firewall en Linux.


8. Plugins esenciales

Roundcube viene con muchos plugins, pero estos son los imprescindibles:

8.1 Activar plugins

En config.inc.php:

$config['plugins'] = [
    'archive',
    'zipdownload',
    'markasjunk',
    'password',
    'managesieve',
    'carddav',
    'enigma',
    'twofactor_gauthenticator',
];

8.2 Plugins recomendados

Archive:

  • Archivar correos con un clic.

Zipdownload:

  • Descargar adjuntos múltiples como ZIP.

Mark as Junk:

  • Marcar como spam (requiere integración con SpamAssassin).

Password:

  • Permite a los usuarios cambiar su contraseña.

ManageSieve:

  • Gestionar filtros de correo (requiere Dovecot con ManageSieve).

CardDAV:

  • Sincronizar contactos con CardDAV.

Enigma:

  • Cifrado PGP/GPG.

Two-factor_gauthenticator:

  • Autenticación de dos factores (TOTP).

8.3 Instalar plugins adicionales

Desde GitHub:

cd /var/lib/roundcube/plugins
sudo git clone https://github.com/usuario/plugin-name.git
sudo chown -R www-data:www-data plugin-name

Activar en config.inc.php:

$config['plugins'][] = 'plugin-name';

Reiniciar:

sudo systemctl reload nginx

8.4 Repositorio de plugins

8.5 Plugins útiles adicionales

  • contextmenu: menú contextual.
  • identity_switch: cambiar identidad rápido.
  • keyboard_shortcuts: atajos de teclado.
  • html5_notifier: notificaciones de escritorio.
  • message_highlight: resaltado de mensajes.
  • show_password: ver contraseña.

9. Múltiples dominios

Si gestionas varios dominios en tu servidor de correo, Roundcube los soporta.

9.1 Configuración básica

En config.inc.php:

// Permitir login con email completo
$config['username_domain'] = false;

// O especificar dominios
// $config['username_domain'] = 'tudominio.com';

// Mostrar dominio en login
$config['login_username_filter'] = 'email';

// Ocultar dominio si es único
// $config['login_username_filter'] = 'username';

9.2 Configurar Dovecot para múltiples dominios

Dovecot debe tener configurados los dominios:

# /etc/dovecot/dovecot.conf
auth_username_format = %Ln
mail_location = maildir:/var/mail/%d/%n/Maildir

%d = dominio, %n = usuario.

Consulta Guía de servidor de correo.

9.3 Interfaz multi-dominio

Roundcube permite:

  • Un login para todos los dominios.
  • Interfaz única.
  • Identidades múltiples (por usuario).

9.4 Alias y cuentas adicionales

Configura Postfix para aceptar múltiples dominios:

# /etc/postfix/main.cf
mydestination = localhost
virtual_mailbox_domains = tudominio1.com, tudominio2.com
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox

Consulta Guía Completa de Redes para más sobre DNS.


10. Optimización

10.1 Caché de PHP

OPcache viene con PHP. Verifica:

php -m | grep -i opcache

Ajustes recomendados en /etc/php/8.2/fpm/conf.d/10-opcache.ini:

opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.revalidate_freq=2
opcache.validate_timestamps=1

Reiniciar:

sudo systemctl restart php8.2-fpm

10.2 Cachear sesiones en Redis

Instalar Redis:

sudo apt install redis-server php-redis

Configurar en config.inc.php:

$config['session_storage'] = 'redis';
$config['redis_host'] = 'localhost';
$config['redis_port'] = 6379;
$config['redis_db'] = 1;

Ventajas: más rápido, menos carga en MariaDB.

Consulta Optimización de servidores Linux.

10.3 Optimizar Nginx

Ajustes en /etc/nginx/nginx.conf:

worker_processes auto;
worker_connections 1024;

gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1000;

client_max_body_size 50M;
client_body_timeout 60s;
keepalive_timeout 65;

Consulta Configurar y optimizar servidor web Nginx.

10.4 Imágenes

Habilitar caché de imágenes:

En config.inc.php:

$config['enable_caching'] = true;
$config['message_cache_lifetime'] = '10d';
$config['messages_cache'] = true;

10.5 Backups

Backup de Roundcube:

# Base de datos
mysqldump -u roundcube -p roundcube > roundcube-backup-$(date +%F).sql

# Configuración
sudo tar -czf roundcube-config-$(date +%F).tar.gz /etc/roundcube/

Automatizar con cron:

0 3 * * * /root/backup-roundcube.sh

Consulta La importancia de los backups.


11. Troubleshooting

11.1 «Connection to storage server failed»

Causas:

  • Dovecot no funciona.
  • Configuración IMAP incorrecta.

Solución:

sudo systemctl status dovecot
sudo tail -f /var/log/mail.log

Verificar imap_host:

$config['imap_host'] = 'ssl://localhost:993';

11.2 «SMTP Error: Connection refused»

Causas:

  • Postfix no funciona.
  • Puerto bloqueado.
  • Configuración SMTP incorrecta.

Solución:

sudo systemctl status postfix
sudo ss -tulpn | grep -E '465|587'

Verificar smtp_host:

$config['smtp_host'] = 'ssl://localhost:465';

11.3 «Login failed»

Causas:

  • Credenciales incorrectas.
  • Dovecot mal configurado.
  • Formato de usuario incorrecto.

Solución:

Verificar formato del usuario:

# Si tus usuarios son "usuario@dominio.com"
$config['username_domain'] = false;

# Si son solo "usuario"
$config['username_domain'] = 'tudominio.com';

Probar IMAP manualmente:

openssl s_client -connect localhost:993 -crlf
a LOGIN usuario@tudominio.com password

11.4 «Unable to connect to database»

Causas:

  • MariaDB caída.
  • Credenciales incorrectas.
  • Base de datos no creada.

Solución:

sudo systemctl status mariadb
sudo mysql -u roundcube -p roundcube -e "SELECT 1;"

11.5 Página en blanco

Causas:

  • Error PHP.
  • Permisos incorrectos.
  • Falta de extensión PHP.

Solución:

sudo tail -f /var/log/nginx/roundcube.error.log
sudo tail -f /var/log/roundcube/errors.log
sudo php -l /etc/roundcube/config.inc.php

Verificar permisos:

sudo chown -R www-data:www-data /var/lib/roundcube/
sudo chown www-data:www-data /etc/roundcube/config.inc.php

11.6 «Session expired»

Causas:

  • Timeout muy corto.
  • Cookies mal configuradas.

Solución:

$config['session_lifetime'] = 60;
$config['cookie_secure'] = true;
$config['cookie_samesite'] = 'Lax';

11.7 SSL certificate error

Causas:

  • Certificado caducado.
  • Configuración incorrecta.

Solución:

sudo certbot renew --dry-run
sudo certbot certificates

11.8 «Internal Server Error»

Causas:

  • Error en configuración.
  • Permisos.

Solución:

sudo tail -f /var/log/nginx/roundcube.error.log
sudo systemctl status php8.2-fpm

11.9 «Cannot connect to IMAP server»

Causas:

  • Dovecot escucha en otro puerto.
  • Firewall bloquea.

Solución:

sudo ss -tulpn | grep dovecot
sudo ufw status

11.10 Emails no llegan

Causas:

  • SPF/DKIM/DMARC mal configurados.
  • Postfix mal configurado.
  • DNS incorrecto.

Solución:

# Verificar registros DNS
dig TXT tudominio.com
dig MX tudominio.com

# Verificar Postfix
sudo postfix check
sudo tail -f /var/log/mail.log

Consulta Guía de servidor de correo.

11.11 Rounded no arranca tras actualización

Solución:

sudo apt update
sudo apt upgrade roundcube roundcube-core
sudo systemctl restart nginx php8.2-fpm

11.12 «The installer is still enabled»

Solución:

$config['enable_installer'] = false;

O elimina la carpeta:

sudo rm -rf /var/lib/roundcube/public_html/installer/

12. FAQ

¿Qué es Roundcube?

Roundcube es un cliente de correo web (webmail) open source escrito en PHP. Permite acceder a un servidor IMAP/SMTP desde el navegador con una interfaz moderna.

Uso típico: webmail para servidores Postfix/Dovecot auto-hospedados.

¿Roundcube es gratis?

Sí. Roundcube es open source bajo licencia GPL. No hay coste de licencia.

Costes posibles: servidor, dominio, certificado SSL (Let’s Encrypt es gratis).

¿Necesito un servidor de correo para usar Roundcube?

Sí. Roundcube es solo el cliente web. Necesitas:

  • Postfix o Exim (SMTP).
  • Dovecot o Courier (IMAP).
  • Base de datos (MariaDB).

Consulta Guía de servidor de correo en Debian.

¿Roundcube o SnappyMail?

  • Roundcube: más maduro, más plugins, comunidad más grande.
  • SnappyMail: más rápido, interfaz más moderna.

Recomendación: Roundcube para uso general; SnappyMail si priorizas rendimiento.

¿Cómo instalo plugins en Roundcube?

  1. Descargar el plugin desde GitHub o el repositorio oficial.
  2. Copiar a /var/lib/roundcube/plugins/.
  3. Permisos:
sudo chown -R www-data:www-data /var/lib/roundcube/plugins/nombre-plugin
  1. Activar en config.inc.php:
$config['plugins'][] = 'nombre-plugin';
  1. Reiniciar:
sudo systemctl reload nginx

¿Cómo hago backup de Roundcube?

Backup completo:

# Base de datos
mysqldump -u roundcube -p roundcube > roundcube-db-$(date +%F).sql

# Configuración
sudo tar -czf roundcube-config-$(date +%F).tar.gz /etc/roundcube/

# Plugins
sudo tar -czf roundcube-plugins-$(date +%F).tar.gz /var/lib/roundcube/plugins/

Automatizar con cron:

0 3 * * * /root/backup-roundcube.sh

Consulta La importancia de los backups.

¿Puedo tener múltiples dominios en Roundcube?

Sí. Configura:

$config['username_domain'] = false;

Y en Dovecot, configura los dominios virtuales.

¿Cómo cambio el idioma de Roundcube?

En config.inc.php:

$config['language'] = 'es_ES';

O permite que el usuario lo cambie desde la interfaz.

¿Cómo aseguro Roundcube?

Checklist mínimo:

  1. HTTPS obligatorio.
  2. Deshabilitar instalador.
  3. Fail2ban.
  4. 2FA (plugin).
  5. Sesiones con timeout.
  6. Contraseñas robustas.
  7. Firewall restrictivo.
  8. Actualizaciones al día.

Consulta Guía Completa de Ciberseguridad.

¿Roundcube soporta PGP?

Sí, con el plugin Enigma.

$config['plugins'][] = 'enigma';

Requisitos: GnuPG instalado en el servidor.

¿Cómo actualizo Roundcube?

sudo apt update
sudo apt upgrade roundcube roundcube-core roundcube-plugins
sudo systemctl restart nginx php8.2-fpm

Antes de actualizar: haz backup.

¿Cuántos usuarios puede manejar Roundcube?

Miles, sin problema. El límite lo pone el servidor de correo (Postfix, Dovecot) y el hardware.

Configuración optimizada: Redis para sesiones, OPcache, Nginx con worker_processes auto.

¿Qué base de datos recomiendas?

MariaDB es la opción más común y probada.

Alternativas:

  • PostgreSQL: también soportado.
  • SQLite: solo para pruebas.

Consulta Cómo instalar MariaDB.

¿Cómo migro Roundcube a otro servidor?

  1. Backup completo:
mysqldump -u roundcube -p roundcube > roundcube-db.sql
sudo tar -czf roundcube-config.tar.gz /etc/roundcube/
  1. Copiar al nuevo servidor.
  2. Restaurar:
mysql -u roundcube -p roundcube < roundcube-db.sql
sudo tar -xzf roundcube-config.tar.gz -C /
  1. Reiniciar:
sudo systemctl restart nginx php8.2-fpm

¿Roundcube afecta al SEO?

No directamente. Roundcube es una herramienta interna para gestionar tu correo, no una web pública.

Consejo: si usas webmail.tudominio.com, márcalo como noindex para que no aparezca en Google.


13. Conclusión

Roundcube es la solución más completa, segura y extensible para montar un webmail sobre un servidor de correo auto-hospedado. Con una configuración adecuada, tienes una alternativa gratuita a Gmail o Outlook con control total sobre tus datos.

Puntos clave:

  1. Instalación sencilla en Debian 12.
  2. Integración con Postfix y Dovecot.
  3. Configuración segura con HTTPS, fail2ban y 2FA.
  4. Plugins para ampliar funcionalidades.
  5. Soporte multi-dominio.
  6. Optimización con Redis y OPcache.
  7. Troubleshooting de errores comunes.
  8. Mantenimiento con backups regulares.

Si quieres seguir aprendiendo:

Deja un comentario