Roundcube es un cliente de correo electrónico de código abierto basado en navegador para IMAP. Ha ganado popularidad por admitir ACL y utilizar AJAX (Asynchronous JavaScript and XML). Cuenta con excelentes características y funcionalidades de extremo a extremo como la gestión de correo electrónico, MIME soporte y manipulación de carpetas, por nombrar algunas. Además, Roundcube ofrece búsqueda de mensajes, corrector ortográfico, calendarios y gestión de contactos de forma fluida. Por encima de todo, cuenta con un repositorio de complementos robusto y opciones de personalización adicionales en comparación con otros clientes populares basados en navegador.
Roundcube es un MUA. A diferencia de un MTA, necesitarás un servicio que gestione tu correo electrónico, preferiblemente utilizando tu servidor de correo. Consulta nuestro tutorial de Configuración del Servidor de Correo para añadir el servidor de correo de tu elección.
Cuando envías un correo electrónico, el MUA lo transfiere a su servidor MTA utilizando SMTP. Después de unos saltos, el MTA receptor recibe el correo electrónico y lo transfiere a su MDA utilizando IMAP. Por último, el receptor visualiza el correo electrónico utilizando el MUA.
Comprendamos estos términos:
- MUA: Un agente de usuario de correo es una interfaz que permite la interacción del usuario para ver y enviar correos electrónicos.
- MTA: Un agente de transferencia de correo transfiere el correo electrónico del remitente al receptor.
- SMTP: El Protocolo Simple de Transferencia de Correo es un protocolo que el MUA utiliza para enviar correos electrónicos al MTA.
- MDA: Todos los correos electrónicos enviados desde el MTA se reciben y almacenan en el agente de entrega de correo.
- IMAP: El Protocolo de Acceso a Mensajes de Internet es un protocolo que los MDA utilizan para entregar el correo al MUA.
En este tutorial, te guiaremos a través de los pasos para instalar un cliente de webmail con Roundcube en Ubuntu 20.04.
¡Empecemos!
Requisitos previos
Para seguir este tutorial, necesitarás lo siguiente:
- La última versión de Ubuntu instalada en tu sistema.
- Los usuarios del sistema deben tener privilegios de sudo y un cortafuegos.
- Además, puedes aprovechar iptables para configurar cortafuegos en tu sistema.
- Una pila LAMP.
- Configura esto siguiendo el Cómo configurar la pila LAMP
- Un servidor de correo electrónico basado en IMAP.
Paso 1: Instalar extensiones y dependencias
Antes de comenzar, actualicemos los repositorios para evitar conflictos de software:
|
1 |
sudo apt update |
A continuación, instalaremos las dependencias de Roundcube y configuraremos PHP. Utiliza el siguiente comando para instalar las extensiones y librerías de PHP:
|
1 |
sudo apt-get install php-xml php-mbstring php-intl php-zip php-pear zip unzip git composer |
Por defecto, algunas de las librerías de PHP están deshabilitadas. Necesitamos habilitar esas librerías navegando al archivo php.ini del servidor ubicado en /etc/php/7.0/apache2/php.ini. Abre el archivo php.ini utilizando el editor de texto nano:
|
1 |
sudo nano /etc/php/7.0/apache2/php.ini |
A diferencia de las opciones de comentarios más comunes que comienzan con un hashtag ( #), utilizamos un punto y coma ( ;) para comentar y descomentar líneas. Añade un punto y coma al principio para comentar una línea. Del mismo modo, elimina un punto y coma para descomentar una línea.
Veamos la sección que contiene líneas comentadas que comienzan con extension=. Elimina los puntos y comas para descomentar php_mbstring.dll y php_xmlrpc.dll las extensiones:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
. . . ;extension=php_interbase.dll ;extension=php_ldap.dll extension=php_mbstring.dll ;extension=php_exif.dll ; Debe estar después de mbstring ya que depende de elloit ;extension=php_mysqli.dll . . . ;extension=php_sqlite3.dll ;extension=php_tidy.dll extension=php_xmlrpc.dll ;extension=php_xsl.dll . . . |
Además, añade la extension=dom.so al final del bloque de extensiones:
|
1 2 3 4 5 |
. . . extension=php_xmlrpc.dll ;extensión=php_xsl.dll extensión=dom.so . . . |
- Modificar archivos:
- Cambie el date.timezone:
Vaya a la opción de configuración, navegue hasta date.timezone, y descoméntelo. A continuación, añada su zona horaria utilizando comillas. Consulte la página de zonas horarias de PHP para ver cómo se ve la zona horaria formateada en el archivo php.ini . Por ejemplo, si es de Europa, su archivo se verá así:
|
1 2 3 4 5 6 |
. . . [Date] ; Define la zona horaria predeterminada utilizada por las funciones de fecha ; http://php.net/date.timezone date.timezone = "Europe/Moscow" . . . |
-
- Modifique el archivo upload_max_filesize :
A continuación, navegue hasta la configuración upload_max_filesize . Por defecto, verá el límite máximo establecido en 2 MB. Según sus necesidades, puede aumentar el tamaño máximo del archivo tanto como desee. Sin embargo, la mayoría de los servidores de correo electrónico limitan el tamaño total de los archivos adjuntos hasta 10 MB. En esta guía, mantendremos el tamaño máximo en 13 MB para que varios usuarios puedan añadir archivos adjuntos al mismo tiempo:
|
1 2 3 4 5 |
. . . ; Tamaño máximo permitido para archivos subidos. ; http://php.net/upload-max-filesize upload_max_filesize = 13M . . . |
-
- Modifique el archivo post_max_size :
Ahora, navegue para buscar post_max_size. A diferencia de la configuración upload_max_filesize que se aplica a los archivos adjuntos, post_max_size se aplica al tamaño de todo el correo electrónico (incluidos los archivos adjuntos). Establezcamos nuestro post_max_size en un valor más alto para evitar bloqueos:
|
1 2 3 4 5 6 7 |
. . . ; Tamaño máximo de datos POST que PHP aceptaráaccept. ; Su valor puede ser 0 para deshabilitar el límite. Se ignora si la lectura de datos POST ; está deshabilitada a través de enable_post_data_reading. ; http://php.net/post-max-size post_max_size = 20M . . . |
-
- Establezca el valor de func_overload :
Finalmente, busque mbstring.func_overload = 0 y descoméntelo. Además, asegúrese de que su valor esté establecido en null para que admita funciones de cadena multibyte:
|
1 2 3 4 |
. . . . . . mbstring.func_overload = 0 . . . |
Guarde todas las modificaciones y luego cierre el archivo. Nuestro servidor está configurado con la pila LAMP, las dependencias de Roundcube y la configuración de PHP requerida. En el siguiente paso, vamos a descargar el software Roundcube, instalarlo y configurarlo.
Paso 2: Descargar Roundcube
Vaya a la página de descargas de Roundcube, elija la sección Stable version y busque el Complete package. Luego, haga clic derecho en el botón Download y seleccione Copiar dirección de enlace. Usando la dirección con wget, descargue el tarball de Roundcube en el servidor:
|
1 |
wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz |
Después de eso, deberá descomprimir el archivo de Roundcube:
|
1 |
wget tar -xvzf roundcubemail-1.5.2-complete.tar.gz |
Los argumentos utilizados pueden sonar confusos, especialmente si es completamente nuevo. Aquí tiene una explicación de lo que significa cada indicador:
- x: Significa extraer.
-
v: Significa detallado (verbose).
- Informa a tar que imprima la ruta y los nombres de los archivos extraídos.
-
z: Informa a tar que elimine el contenedor
tar y descomprima el archivo usando gzip.
- La extensión del archivo gzip comprimido tendrá .gz al final.
- f: Significa archivo (file).
Omita el / final en el directorio porque estamos moviendo y renombrando todo el directorio, y no solo su contenido. Ahora, movamos el directorio descomprimido a /var/www y renombrémoslo como roundcube:
|
1 |
sudo mv roundcubemail-1.5.2 /var/www/roundcube |
Establezca los permisos para que Apache cree y edite los archivos de configuración y de registro. Luego, cambie el propietario y el grupo a www-data. Además, asegúrese de permitir los permisos de lectura y escritura para el propietario y el grupo:
|
1 |
sudo chown -R www-data:www-data /var/www/roundcube/ |
|
1 |
sudo chmod 775 /var/www/roundcube/temp/ /var/www/roundcube/logs/ |
Aunque hemos descargado el código de Roundcube y establecido los permisos necesarios, nuestra instalación aún está incompleta. Todavía queda por hacer la conexión de Roundcube a nuestra base de datos a través de la interfaz gráfica de Roundcube. Antes de continuar, necesitamos actualizar Apache y su configuración para informar la ubicación base de Roundcube.
Paso 3: Configuración y preparación de Apache
En este paso, editaremos el archivo de host virtual para configurar Apache. Usando el alojamiento virtual de Apache, alojaremos múltiples sitios en un solo servidor. Aunque Apache aloje un solo sitio, es menos desordenado y más sencillo usar un archivo de configuración de host virtual en comparación con editar la configuración general de Apache. Para agregar una capa adicional de seguridad, considere proteger Apache con Let’s Encrypt.
Cada .conf archivo en el /etc/apache2/sites-available/ representa un sitio diferente. Creemos un archivo de host virtual aquí para Roundcube e informemos a Apache para que esté disponible para el navegador.
Primero, copie el archivo de configuración predeterminado para usarlo como punto de partida para el nuevo archivo:
|
1 |
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/roundcube.conf |
Abra el archivo usando el nano editor de texto:
|
1 |
sudo nano /etc/apache2/sites-available/roundcube.conf |
Hay varios cambios que tendremos que modificar. Repasemos cada uno de ellos y luego proporcionemos el archivo completo para copiar y pegar.
Primero, cambie las siguientes directivas en el host VirtualBlock existente:
-
ServerName: Informa a Apache que elija el dominio.
- Si está utilizando un solo servidor, entonces este ServerName será la dirección IP o el nombre de dominio de su servidor.
-
DocumentRoot: Cuando entra el tráfico, define la ruta a donde enviarlo.
- En nuestro tutorial, enviaremos el tráfico a Roundcube en /var/www/roundcube.
- ServerAdmin: Si surge un problema con Apache, ServerAdmin especifica una dirección de correo electrónico de contacto.
-
ErrorLog y CustomLog: Define dónde guardar los registros de conexión exitosa y los registros de errores para este sitio.
- Utilice nombres específicos para definir los registros de errores de modo que, si hay algún problema específico del sitio, se detecte sin esfuerzo.
Luego, agregará un nuevo bloque Directory que informa a Apache qué hacer con el directorio de Roundcube. El Directory consta de dos palabras, donde la primera palabra de cada línea es el nombre de la configuración seguido de las opciones de configuración reales.
- Options -Indexes: Informa a Apache que muestre una advertencia si encuentra que falta un archivo index.html o index.php . De forma predeterminada, muestra el contenido del directorio.
- AllowOverride All: Informa a Apache que si se detecta un archivo local .htaccess , este debe anular la configuración global.
- Order allow,deny: Indica a Apache que compare el acceso del cliente al sitio y deniegue los que no coincidan.
- allow from all: Define el tipo de clientes permitidos.
Una vez que haya realizado estos cambios, verá el archivo de la siguiente manera:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<VirtualHost *:80> ServerName your_server_ip_or_domain DocumentRoot /var/www/roundcube ServerAdmin paul@demo.com ErrorLog ${APACHE_LOG_DIR}/roundcube-error.log CustomLog ${APACHE_LOG_DIR}/roundcube-access.log combined <Directory /var/www/roundcube> Options -Indexes AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> |
Guarde todos los cambios y cierre el archivo. Ahora, solicitemos a Apache que deje de alojar el sitio predeterminado:
|
1 |
sudo a2dissite 000-default |
Después de eso, le indicaremos a Apache que comience a alojar el sitio de Roundcube en su lugar. Al habilitar el sitio, no incluya el .conf porque el a2ensite requiere el nombre del archivo sin extensión:
|
1 |
sudo a2ensite roundcube |
A continuación, ponga en ON el mod_rewrite módulo de Apache:
|
1 |
sudo a2enmod rewrite |
Finalmente, reinicie Apache para habilitar la accesibilidad de la instalación de Roundcube:
|
1 |
sudo apache2ctl restart |
En el último paso, necesitamos configurar la base de datos para que Roundcube pueda almacenar y administrar sus datos específicos de la aplicación.
Paso 4: Configuración e instalación de MySQL
Intente acceder a su servidor utilizando la dirección IP o el nombre de dominio. Verá que aparece un error de configuración en la página. Aquí, Roundcube busca un archivo generado durante la instalación de la configuración, pero nuestra instalación de configuración está incompleta. Antes de configurar nuestra configuración, preparemos nuestra base de datos.
- Conectarse a MySQL: Conectémonos a la consola interactiva de MySQL utilizando el nombre de usuario y la contraseña:
Una vez que ejecute el comando anterior, se le pedirá que se autentique con la contraseña de root que creó al instalar MySQL.1mysql -u root -p - Crear base de datos y usuario: Ahora que ha iniciado sesión correctamente, creemos una base de datos y un usuario de base de datos. Después de eso, otorgaremos permisos al usuario para ejecutar comandos en nuestra nueva base de datos.
- Crear la base de datos: Utilice el siguiente comando para crear una base de datos llamada
roundcubemail. A continuación, proporcione opciones de base de datos como el conjunto de caracteres a utilizar
utf8:
MySQL ofrece una seguridad sólida y protección avanzada. Define un usuario por su nombre y el origen de la conexión. El comando anterior crea un usuario llamado roundcube y define al usuario para conectarse desde localhost.1mysql> CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */; - Cambiar el nombre de la base de datos: Cambiemos el nombre del usuario y modifiquemos nuestra contraseña:
1mysql> CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'password'; - Establecer permisos: Permita a los usuarios de roundcube todos los permisos en la base de datos
roundcubemail y sus tablas:
Guarde sus cambios y salga de la consola interactiva de MySQL:1mysql> GRANT ALL PRIVILEGES ON roundcubemail.* to 'roundcube'@'localhost';
12mysql> FLUSH PRIVILEGES;mysql> EXIT;
Nuestro siguiente paso es configurar la estructura de la base de datos que ayuda a Roundcube a guardar toda la información. Roundcube viene con un archivo de base de datos que configura los datos automáticamente, lo que requeriría esfuerzos extenuantes para configurar manualmente.
Usando el siguiente comando, MySQL utilizará nuestro usuario recién creado para leer un archivo /var/www/roundcube/SQL/mysql.initial.sql. Además, aplicará la configuración a la base de datos roundcubemail:
|
1 |
mysql -u roundcube -p roundcubemail < /var/www/roundcube/SQL/mysql.initial.sql |
Ahora, se le pedirá que ingrese la contraseña del usuario roundcube. Nuestra configuración de la base de datos prepara el uso de Roundcube y nos permite verificar los permisos correctos. Si todos los pasos se realizaron correctamente, no habrá comentarios y luego volverá a su símbolo del sistema. En el siguiente paso, le indicaremos a Roundcube nuestra configuración de correo electrónico y completaremos la instalación.
Paso 5: Instalación y configuraciones de Roundcube
Si intenta acceder a su instalación de Roundcube ahora, obtendrá una página de error. Visite http://your_server_ip_or_domain/installer para completar la instalación.
Si la configuración se realiza correctamente, verá un OK a la derecha de cada elemento de línea. Sin embargo, es posible que no vea el OK verde en la configuración opcional de LDAP en MySQL. Si ve el mensaje NO DISPONIBLE al lado de cualquier otra línea, tiene que instalar estas dependencias no disponibles. Si se le pasó descargar alguna de las dependencias, puede navegar a la URL y descargarla de inmediato.
Una vez realizada la configuración, desplácese hacia abajo y haga clic en el botón SIGUIENTE . Vamos a ver cómo generar el archivo de configuración de Roundcube. Eche un vistazo a las partes del formulario que necesitamos modificar.
- Configuración general
Hay algunas personalizaciones y algunos ajustes generales que modificaremos en la sección de configuración General:
- ip_check: Es una opción de configuración de seguridad y verifica la IP del cliente en la autorización de la sesión.
- product_name: Cambie el nombre del producto como desee. Este nombre mapea “Roundcube” en el texto y se reemplaza por este nombre en su lugar.
- support_url: Soporte en la instalación de Roundcube. Si no tiene un sitio de soporte técnico dedicado, prefiera usar una dirección de correo electrónico como walker:paul@demo.com.
- skin_logo: Reemplace el logotipo de Roundcube con skin_logo. Para habilitar HTTPS, elija una imagen de URL HTTPS (178px por 47px).
Deje los demás ajustes con sus valores predeterminados.
- Registro & depuración: Vamos con las opciones predeterminadas.
- Configuración de la base de datos: En lugar de usar su correo explícitamente, Roundcube utiliza MySQL para almacenar la información para ejecutar el cliente web. Aquí, debemos informar a Roundcube para que acceda a la base de datos que hemos configurado en el Paso 4. Utilice las credenciales de la base de datos que hemos creado previamente:
- Base de datos: MySQL
- Servidor: localhost
- Nombre de la base de datos: roundcubemail
- Usuario: roundcube
- Contraseña:
demo12345@
- Utilice la contraseña que definió que hemos configurado en el Paso 4.
- Db_prefix: Esto es opcional a menos que esté utilizando una base de datos compartida con otras aplicaciones.
- Modificación de IMAP: Configuremos los ajustes de IMAP y SMTP para su servidor de correo electrónico. Como este tutorial se centra en el uso de Gmail como ejemplo, utilizaremos la configuración de Gmail en nuestros ajustes de IMAP. Sin embargo, si decide optar por otros proveedores de servicios como Yahoo u Outlook, debe utilizar sus respectivas configuraciones. Muchos proveedores de correo electrónico admiten conexiones con o sin cifrado. Normalice el uso de las URL y puertos SSL IMAP/SMTP para evitar el uso de conexiones no seguras.
- default_host: ssl://imap.gmail.com
- default_port: 993
- auto_create_user:
Sí ☑
- Si esto está desmarcado, Roundcube no creará un usuario en su propia base de datos y le impedirá iniciar sesión.
- Campos *_mbox: Mantenga los valores predeterminados.
- Puede actualizar esto más tarde en la interfaz de usuario de Roundcube.
- Modificación de SMTP: El SMTP server es una parte integral del correo electrónico que se utiliza para enviar correos. Al igual que en la sección del servidor IMAP, utilizaremos la URL y el puerto SSL. Si no tiene experiencia en el uso de servidores SMTP, siga las SMTP best practices para obtener más información sobre este tipo de servidores. Aquí estamos usando Gmail como nuestro ejemplo:
- campo smtp_server: ssl://smtp.gmail.com
- campo smtp_port: 465
- SMTP e IMAP son dos servicios diferentes, por lo tanto, ambos necesitan un nombre de usuario y una contraseña. Sin embargo, Roundcube nos permite usar las credenciales de IMAP, por lo que no es necesario volver a crearlas. Deje los campos debajo de smtp_user/smtp_pass en blanco y marque la casilla junto a Usar el nombre de usuario y la contraseña de IMAP actuales para la autenticación SMTP.
- smtp_log: Sí ☑
- Modificación de la configuración de pantalla & preferencias de usuario: Vamos con la configuración de pantalla y las preferencias de usuario predeterminadas. Si decide personalizar su instalación de Roundcube, haga clic en el enlace RFC1766 en la página de configuración y actualice el campo language manualmente.
- Plugins: Roundcube ofrece soporte para plugins que añade seguridad adicional. Los plugins son opcionales, sin embargo, puede aprovecharlos para facilitar su trabajo. Echemos un vistazo a la lista de los plugins más utilizados:
- archive: Este plugin proporciona un botón Archivo que es similar a cómo funciona Gmail.
- emoticons: Esto permite el uso de emoticonos en los correos electrónicos.
- enigma: Facilita el uso del cifrado de correo electrónico GPG.
- filesystem_attachments: Permite guardar archivos adjuntos en el servidor de Roundcube temporalmente al guardar un borrador de correo electrónico.
- hide_blockquote: Este complemento oculta la parte citada de los correos electrónicos respondidos para mantener la interfaz de usuario limpia.
- identity_select: Permite al usuario seleccionar múltiples direcciones de correo electrónico al redactar un correo electrónico.
- markasjunk: Este complemento permite marcar un correo electrónico como spam y moverlo a la carpeta de Spam.
- newmail_notifier: Le avisa de nuevos correos electrónicos utilizando el sistema de notificación del navegador.
Presione el UPDATE CONFIG botón para guardar su configuración. En el último paso, probaremos la configuración de Roundcube para asegurarnos de que todo funcione correctamente.
Paso 6: Probar la configuración de Roundcube
Una vez que actualice la configuración, la página se actualizará y aparecerá un cuadro de información amarillo en la parte superior de la página que dice que The config file was saved successfully into the RCMAIL_CONFIG_DIR directorio de su instalación de Roundcube.
Luego, haga clic en el CONTINUE botón para probar su configuración. De manera similar a la página de verificación de dependencias, verá un marcador verde OK en cada línea, siempre que no haya errores. Si ve algún error, regrese y vuelva a verificar sus entradas.
Introduzca su nombre de usuario y contraseña de IMAP y SMTP en las secciones Test SMTP config y Test IMAP config respectivamente para probar el resto de la configuración. Del mismo modo, haga clic en Send test email y Check login. Si ha seguido todos los pasos correctamente, la página se actualizará y verá el OK verde debajo de la sección probada.
Una vez que haya verificado que tanto la conexión SMTP como la IMAP funcionan bien, el siguiente paso es eliminar el directorio del instalador usando SSH. Eliminar el directorio del instalador es una forma segura de evitar que otros generen una nueva configuración y anulen los ajustes correctos:
|
1 |
sudo rm -rf /var/www/roundcube/installer/ |
Finalmente, puede ir a la instancia de Roundcube usando la IP de su servidor y verificar su correo electrónico.
Conclusión
En este tutorial, hemos aprendido a instalar un cliente de correo web usando Roundcube en Ubuntu 20.04. Además de los pasos descritos anteriormente, existen otras opciones de seguridad como el soporte HTTPS y el cifrado GPG que debe considerar agregar. Asuma la responsabilidad de proteger sus servidores utilizando medidas de seguridad robustas.
Además, hay muchos otros materiales de aprendizaje sobre Redis y PHP a los que puede acceder desde nuestros blogs:
- Cómo instalar y asegurar Redis en Ubuntu 18.04
- Cómo instalar phpBB en Ubuntu 20.04
- Cómo instalar y asegurar phpMyAdmin en Ubuntu 18.04
- Implementar una aplicación PHP en un clúster de Kubernetes con Ubuntu 18.04
¡Feliz computación!
Comentarios
Aún no hay comentarios. Sea el primero.