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.