Skip to main content

Instalar Iredmail Cluster

Para Instalar iRedMail, lo primero que deberemos hacer es preparar el servidor

Preparación del servidor

Servicio NTP

Instalaremos y configuraremos el servicio NTP como se explica aquí Configurar NTP en Debian

Nombre del host

Es imprescindible que el host tenga un nombre canónico que resuelva correctamente para que el servicio de correo funcione. Para comprobarlo, ejecutaremos

hostname -f

Devolverá un valor que debe ser el nombre de la máquina:

mail.ateinco.es

Si no devuelve un nombre de dominio completo, deberemos editar el fichero /etc/hosts

nano /etc/hosts

Por ejemplo si tenemos en el archivo /etc/hosts lo siguiente:

127.0.0.1       localhost.localdomain       localhost

Deberemos de modificarlo para que aparezca de la siguiente forma

21.85.189.77    mail.ateinco.es             mail
127.0.0.1       localhost.localdomain       localhost
::1             localhost6.localdomain6	    localhost6

Balanceador para Galera

Necesitaremos instalar un balanceador para que los diferentes nodos de iRedMail, puedan acceder a cualquiera de los servidores de Base de Datos, hay que recordar, que en la configuración, el servidor de Base de Datos a la que apuntará nuestra instalación de iRedMail será la IP del balanceador (Zevenet, HaProxy, Barracuda, etc)

Balanceador para RoundCube, SOGo, iRedAdmin

Necesitaremos instalar un balanceador para que los servicios que dependen de nginx (RoundCube, SOGo, iRedAdmin) o los servicios como IMAP, SMTP o POP3 puedan ser accesibles desde una IP que luego distribuya a cada uno de los nodos

Instalar iRedMail

Instalar con una BBDD Externa

Instalaremos un servidor de MariaDB o un Galera Cluster de MariaDB


Inicialización de la BBDD

Crearemos un usuario que se utilizará durante la instalación. Para ello hacemos login en MariaDB

root@mail:~# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 1883
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Y ejecutamos los siguientes comandos

GRANT ALL PRIVILEGES ON *.* TO 'admin_iredmail'@'%' IDENTIFIED BY 'la_password_que_almacenaremos' WITH GRANT OPTION;
FLUSH PRIVILEGES;
FLUSH HOSTS;
set global innodb_force_primary_key = 0;

Descarga de iRedMail

Instalamos el bzip2 que necesitaremos para descomprimir el iRedMail

apt-get install bzip2

Nos movemos a la carpeta root

cd /root

Descargamos y descomprimimos el iRedMail (en el ejemplo usamos la versión 0.9.9, deberemos de escoger la mas moderna.

wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.9.tar.bz2
tar xjf iRedMail

Instalación en el primer nodo

Vamos a la carpeta del iRedMail, y ejecutamos el siguiente comando

USE_EXISTING_MYSQL='YES' \
    MYSQL_SERVER_ADDRESS='192.168.250.193' \
    MYSQL_SERVER_PORT='3306' \
    MYSQL_ROOT_USER='instalar' \
    MYSQL_ROOT_PASSWD='la_password_que_almacenaremos' \
    MYSQL_GRANT_HOST='%' \
    bash iRedMail.sh

Una vez realizado esto, tendremos el iRedMail instalado en el primer nodo, ahora realizaremos un backup de la configuración de este iRedMail que se encuentra en /root/iRedMail-0.9.9 el archivo se llama config el contenido de dicho archivo será parecido a este

export STORAGE_BASE_DIR='/var/vmail'
export WEB_SERVER='NGINX'
export BACKEND_ORIG='MARIADB'
export BACKEND='MYSQL'
export VMAIL_DB_BIND_PASSWD='yLqcXdByOCLwpX4QTesAjr1J5iq2Rn1'
export VMAIL_DB_ADMIN_PASSWD='JF3ffrmR2PbNcu6us2QIIPSbERlV4N1'
export MLMMJADMIN_API_AUTH_TOKEN='ImIUhBZT2ao3BFjjadBNjMJry1NrdO1'
export NETDATA_DB_PASSWD='RUEUyKajMR7Gak8rPjusj7V416nl5W1'
export MYSQL_ROOT_PASSWD='la_password_que_almacenaremos'
export FIRST_DOMAIN='ateinco.es'
export DOMAIN_ADMIN_PASSWD_PLAIN='la_password_del_postmaster'
export USE_IREDADMIN='YES'
export USE_ROUNDCUBE='YES'
export USE_SOGO='YES'
export USE_NETDATA='YES'
export USE_FAIL2BAN='YES'
export AMAVISD_DB_PASSWD='fbYo1C1MREBGaZutqzIzaufFayN2gZ1'
export IREDADMIN_DB_PASSWD='dT1ncixK4vj9f52PzRasiBJEezlv6h1'
export RCM_DB_PASSWD='4tnn37hzrsJzLWJSvzx1WCtPaSvlQC1'
export SOGO_DB_PASSWD='dR7tSorn6saREaEY39Qp3ZQvfc5tvZ1'
export SOGO_SIEVE_MASTER_PASSWD='owYE3LQdExTjTBGd9gnGjNpwUkj0tK1'
export IREDAPD_DB_PASSWD='iTGNks97Q2iUgOgRS3NEoMCudvKRCA1'
#EOF

Instalar el resto de los nodos

Debemos de ejecutar los mismos pasos: Instalamos el bzip2 que necesitaremos para descomprimir el iRedMail

apt-get install bzip2

Nos movemos a la carpeta root

cd /root

Descargamos y descomprimimos el iRedMail (en el ejemplo usamos la versión 0.9.9, deberemos de escoger la mas moderna.

wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.9.tar.bz2
tar xjf iRedMail

Y a continuación copiamos el fichero config, que hemos recuperado el primer nodo en la carpeta /root/iRedMail-0.9.9

Ejecutamos el siguiente comando NOTA cuidado con la línea INITIALIZE_SQL_DATA=NO ES MUY IMPORTANTE, ya que si no, nos borrará todo loa que había en la base de datos, y fallará la instalación.

USE_EXISTING_MYSQL='YES' \
    MYSQL_SERVER_ADDRESS='192.168.250.40' \
    MYSQL_SERVER_PORT='3306' \
    MYSQL_ROOT_USER='instalar' \
    MYSQL_ROOT_PASSWD='la_password_que_almacenaremos' \
    MYSQL_GRANT_HOST='%' \
    INITIALIZE_SQL_DATA=NO \	
    bash iRedMail.sh

Al arrancar nos dirá que iRedMail ya está instalado, que si queremos usar la configuración previamente almacenada, a lo que diremos que sí.


Solución de problemas

Si por lo que sea, hemos cometido algún error, podemos reiniciar la instalación, para lo que previamente habrá que borrar las tablas que se han creado y empezar desde el principio en el primer nodo. Por los ue nos conectaremos al MySQL y ejecutaremos

DROP DATABASE amavisd;
DROP DATABASE iredadmin;
DROP DATABASE iredapd;
DROP DATABASE roundcubemail;
DROP DATABASE sogo;
DROP DATABASE vmail;
DROP USER 'amavisd'@'%';
DROP USER 'iredadmin'@'%';
DROP USER 'iredapd'@'%';
DROP USER 'roundcube'@'%';
DROP USER 'sogo'@'%';
DROP USER 'vmail'@'%';
DROP USER 'vmailadmin'@'%';
SELECT host,User FROM mysql.user;
delete from user where user='admin_iredmail' and host='%';

Y desde aquí volveremos a crear el usuario, ejecutamos los siguientes comandos

GRANT ALL PRIVILEGES ON *.* TO 'admin_iredmail'@'%' IDENTIFIED BY 'la_password_que_almacenaremos' WITH GRANT OPTION;
FLUSH PRIVILEGES;
FLUSH HOSTS;
set global innodb_force_primary_key = 0;

Y podemos empezar de nuevo el proceso.

Otras Configuraciones

Para que iRedMail funcione en este entorno, si vamos a usar un balanceador para los servicios https (iredadmin, roundcube, Solo, etc) deberemos de configurar algunos parámetros como el servicio de memcached, la ubicación de los adjuntos, etc.

https://docs.iredmail.org/haproxy.keepalived.glusterfs.html