Servidor de correo · 10 min read · Sep 22, 2025

Configuración perfecta de multiserver ISPConfig en Ubuntu 20.04 y Debian 10 - Página 3

4 Instalando el primer servidor de correo

Inicie sesión como root o ejecute

su -

para convertirse en el usuario root en su servidor antes de continuar. IMPORTANTE: Debe usar ‘su -‘ y no solo ‘su’, de lo contrario, su variable PATH se configurará incorrectamente por Debian.

4.1 Configurar el nombre de host

El nombre de host de su servidor debe ser un subdominio como “mx1.ejemplo.com”. No use un nombre de dominio sin una parte de subdominio como “ejemplo.com” como nombre de host, ya que esto causará problemas más adelante con su configuración de correo. Primero, debe verificar el nombre de host en /etc/hosts y cambiarlo cuando sea necesario. La línea debe ser: “Dirección IP - espacio - nombre de host completo incl. dominio - espacio - parte de subdominio”. Para nuestro nombre de host mx1.ejemplo.com, el archivo debe verse así:

nano /etc/hosts
127.0.0.1 localhost.localdomain   localhost  
# Esta línea debe cambiarse en cada nodo al nombre de servidor correcto:  
127.0.1.1 mx1.ejemplo.com mx1  
# Estas líneas son las mismas en cada nodo:
10.0.64.12 panel.ejemplo.com panel  
10.0.64.13 web01.ejemplo.com web01  
10.0.64.14 mx1.ejemplo.com mx1  
10.0.64.15 mx2.ejemplo.com mx2  
10.0.64.16 ns1.ejemplo.com ns1  
10.0.64.17 ns2.ejemplo.com ns2  
10.0.64.18 webmail.ejemplo.com webmail

# Las siguientes líneas son deseables para hosts compatibles con IPv6
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Como puede ver, también agregamos los nombres de host de nuestros otros servidores para que puedan comunicarse a través de la red interna más tarde.

Luego edite el archivo /etc/hostname:

nano /etc/hostname

Deberá contener solo la parte del subdominio, en nuestro caso:

mx1

Finalmente, reinicie el servidor para aplicar el cambio:

systemctl reboot

Inicie sesión nuevamente y verifique si el nombre de host es correcto ahora con estos comandos:

hostname  
hostname -f

La salida debe ser así:

root@mx1:~$ hostname  
mx1  
root@mx1:~$ hostname -f  
mx1.ejemplo.com

4.2 Instalando ISPConfig

Ahora podemos ejecutar el autoinstalador para todos los paquetes e ISPConfig:

wget -O - https://get.ispconfig.org | sh -s -- --no-dns --no-roundcube --no-mailman --use-php=system --use-unbound --interactive

Después de un tiempo, verá:

¡ADVERTENCIA! Este script reconfigurará su servidor completo!  
¡Debería ejecutarse en un servidor recién instalado y toda la configuración actual que haya realizado probablemente se perderá!  
Escriba 'sí' si realmente desea continuar:

Responda “sí” y presione enter. El instalador comenzará ahora.

Cuando la instalación y configuración de los paquetes esté completa, se mostrará la contraseña de root para MySQL en mx1. Anote esto (junto con el nombre del servidor, para evitar confusiones más tarde).

Ahora tendremos que responder algunas preguntas ya que estamos usando el modo interactivo. Esto es necesario ya que este servidor se añadirá a su configuración de multiserver.

[INFO] Instalando ISPConfig3.  
[INFO] Su contraseña de root de MySQL es: kl3994aMsfkkeE  
  
  
--------------------------------------------------------------------------------  
 _____ ___________   _____              __ _          ____  
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \  
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /  
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |  
  |_| |_|\__/ / |     | \__/\ (_) | | | | | | (_| | ___\ \  
  \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/  
                                                  __/ |  
                                                  |___/   
--------------------------------------------------------------------------------  
  
>> Configuración inicial   
  
Sistema Operativo: Debian 10.0 (Buster) o compatible  
  
    A continuación habrá algunas preguntas para la configuración primaria, así que tenga cuidado.  
    Los valores predeterminados están entre [corchetes] y se pueden aceptar con .  
    Escriba "salir" (sin las comillas) para detener el instalador.  
  
  
Seleccione el idioma (en,de) [en]: <-- Presione enter  
  
Modo de instalación (estándar, experto) [estándar]: <-- experto  
  
Nombre de host completamente calificado (FQDN) del servidor, por ejemplo server1.dominio.tld  [mx1.ejemplo.com]: <-- Presione Enter  
  
Nombre de host del servidor MySQL [localhost]: <-- Presione Enter  
  
Puerto del servidor MySQL [3306]: <-- Presione Enter  
  
Nombre de usuario root de MySQL [root]: <-- Presione Enter  
  
Contraseña root de MySQL []: <-- Ingrese la contraseña de MySQL que el script le acaba de dar  
  
Base de datos MySQL a crear [dbispconfig]: <-- Presione Enter  
  
Conjunto de caracteres MySQL [utf8]: <-- Presione Enter  
  
Las siguientes dos preguntas son sobre el usuario y la contraseña de la base de datos interna de ISPConfig.  
Se recomienda aceptar los valores predeterminados que son 'ispconfig' como nombre de usuario y una contraseña aleatoria.  
Si usa una contraseña diferente, use solo números y caracteres para la contraseña.  
  
Nombre de usuario de la base de datos mysql de ISPConfig [ispconfig]: <-- Presione Enter  
  
Contraseña de la base de datos mysql de ISPConfig [aakl203920459853sak20284204]: <-- Presione Enter  
  
¿Debería este servidor unirse a una configuración de multiserver ISPConfig existente (s,n) [n]: <-- s  
  
Nombre de host del servidor maestro MySQL []: <-- panel.ejemplo.com  
  
Puerto del servidor maestro MySQL []: <-- Presione Enter  
  
Nombre de usuario root del servidor maestro MySQL [root]: <-- Presione Enter  
  
Contraseña root del servidor maestro MySQL []: <-- la contraseña que le dio al usuario root externo en el servidor maestro.  
  
Nombre de la base de datos del servidor maestro MySQL [dbispconfig]: <-- Presione Enter  
  
Agregando registro del servidor ISPConfig a la base de datos.  
  
Configurar Correo (s,n) [s]: <-- Presione enter  
  
Configurando Postgrey  
Configurando Postfix  
Generando una clave privada RSA  
......................................................................++++  
....................++++  
escribiendo nueva clave privada en 'smtpd.key'  
-----  
Está a punto de ser preguntado para ingresar información que se incorporará  
 a su solicitud de certificado.  
Lo que está a punto de ingresar es lo que se llama un Nombre Distinguido o DN.  
Hay bastantes campos, pero puede dejar algunos en blanco  
Para algunos campos habrá un valor predeterminado,  
Si ingresa '.', el campo quedará en blanco.  
-----  
Nombre del país (código de 2 letras) [AU]: <-- Presione enter  
Nombre del estado o provincia (nombre completo) [Some-State]: <-- Presione enter  
Nombre de la localidad (por ejemplo, ciudad) []: <-- Presione enter  
Nombre de la organización (por ejemplo, empresa) [Internet Widgits Pty Ltd]: <-- Presione enter  
Nombre de la unidad organizativa (por ejemplo, sección) []: <-- Presione enter  
Nombre común (por ejemplo, FQDN del servidor o SU nombre) []: <-- Presione enter  
Dirección de correo electrónico []: <-- Presione enter  
[ADVERTENCIA] autodetección para Mailman falló  
Forzar configurar Mailman (s,n) [n]: <-- Presione enter  
  
Saltar Mailman  
  
Configurando Dovecot  
Creando nuevo archivo DHParams, esto toma varios minutos. No interrumpa el script.  
Configurando Spamassassin  
[ADVERTENCIA] autodetección para Amavisd falló  
Forzar configurar Amavisd (s,n) [n]: <-- Presione enter  
  
Saltar Amavisd  
  
Configurando Rspamd  
Configurando Getmail  
Configurando Jailkit  
Configurando Pureftpd  
Configurar Servidor DNS (s,n) [s]: <-- n  
  
La opción del Servidor Web debe estar habilitada cuando desea ejecutar un servidor web o cuando este nodo debe alojar la interfaz de ISPConfig.  
Configurar Servidor Web (s,n) [s]: <-- Presione enter  
  
Configurando Apache  
Configurando vlogger  
[ADVERTENCIA] autodetección para OpenVZ falló  
Forzar configurar OpenVZ (s,n) [n]: <-- Presione Enter  
  
Saltar OpenVZ  
  
Configurar Servidor Firewall (s,n) [s]: <-- Presione Enter  
  
Configurando Firewall de Ubuntu  
[ADVERTENCIA] autodetección para Metronome XMPP Server falló  
Forzar configurar Metronome XMPP Server (s,n) [n]: <-- Presione Enter  
  
Saltar Metronome XMPP Server  
  
Configurando Fail2ban  
Instalar Interfaz Web de ISPConfig (s,n) [n]: <-- Presione Enter  
  
¿Desea crear certificados SSL para su servidor? (s,n) [s]: <-- Presione Enter  
  
Verificando / creando certificado para mx1.ejemplo.com  
Usando ruta del certificado /etc/letsencrypt/live/mx1.ejemplo.com  
Usando apache para la validación del certificado  
¿Crear enlace simbólico de los certificados SSL de ISPConfig a Postfix? (s,n) [s]: <-- Presione Enter  
  
¿Crear enlace simbólico de los certificados SSL de ISPConfig a Pure-FTPd? Crear el archivo dhparam puede tardar un tiempo. (s,n) [s]: <-- Presione Enter  
  
Generando parámetros DH, primo seguro de 2048 bits, generador 2  
Esto tomará mucho tiempo  
......................+...........................................+...............  
Configurando vhost de Apps  
Configurando DBServer  
Instalando crontab de ISPConfig  
no crontab para getmail  
Detectando direcciones IP  
Reiniciando servicios ...  
Instalación completada.  
[INFO] Agregando versiones de php a ISPConfig.  
[INFO] Verificando que todos los servicios estén en ejecución.  
[INFO] mysql: OK  
[INFO] clamav-daemon: OK  
[INFO] postfix: OK  
[INFO] bind9: OK  
[INFO] pureftpd: OK  
[INFO] apache2: OK  
[INFO] rspamd: OK  
[INFO] redis-server: OK  
[INFO] dovecot: OK  
[INFO] Instalación lista.  
[INFO] Su contraseña de root de MySQL es: kl3994aMsfkkeE  
[INFO] Advertencia: ¡Por favor elimine los archivos de registro en /tmp/ispconfig-ai/var/log/setup-* una vez que ya no los necesite porque contienen sus contraseñas!

4.3 Configurando la replicación para Dovecot

Vamos a usar dsync para sincronizar los correos electrónicos entre mx1 y mx2, para redundancia.

La configuración personalizada para dovecot debe almacenarse en /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master para que no las pierda al actualizar ISPConfig.

nano /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master

Ponga lo siguiente allí:

protocol imap {  
 mail_plugins = $mail_plugins quota imap_quota notify replication  
}  
protocol pop3 {  
 mail_plugins = $mail_plugins quota notify replication  
}  
protocol lda {  
 mail_plugins = $mail_plugins sieve quota notify replication  
}  
protocol lmtp {  
 mail_plugins = $mail_plugins sieve quota notify replication  
}  
doveadm_password = /(:&p-J:4e%?\@Q-;VSE#3Dmfm[fVK&r-mx1  
doveadm_port = 12345  
replication_max_conns = 50  
  
ssl_client_ca_dir = /etc/ssl/certs  
  
# El proceso replicador debe iniciarse al inicio, para que pueda comenzar a replicar usuarios de inmediato:  
service replicator {  
 process_min_avail = 1  
}  
  
# Los procesos de correo necesitan tener acceso a la fifo de notificación de replicación y al socket.  
service aggregator {  
    fifo_listener replication-notify-fifo {  
        user = vmail  
        mode = 0666  
    }  
  
    unix_listener replication-notify {  
        user = vmail  
        mode = 0666  
    }  
}  
  
# Habilitar comandos de replicador doveadm  
service replicator {  
    unix_listener replicator-doveadm {  
        mode = 0666  
    }  
}  
  
# Crear un listener para doveadm-server  
service doveadm {  
    user = vmail  
    inet_listener {  
        port = 12345  
        ssl = yes  
    }  
}  
service config {  
    unix_listener config {  
        user = vmail  
    }  
}  
  
plugin {  
    mail_replica = tcps:mx2.ejemplo.com  
}

Reemplace doveadm_password con su propia contraseña: hágala una cadena larga y aleatoria por razones de seguridad.

Reemplace

mail_replica = tcps:mx2.ejemplo.com

con su propio nombre de host de mx2.

Para aplicar estos cambios, copie el archivo a la carpeta dovecot y reinicie dovecot:

cp /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master /etc/dovecot/conf.d/99-ispconfig-custom-config.conf  
systemctl restart dovecot

4.4 Configurando la sincronización para Rspamd

Rspamd tiene una bonita interfaz web. Vamos a configurar nuestros servidores como vecinos para que pueda ver la configuración, estadísticas y otros datos en un solo panel.

nano /usr/local/ispconfig/server/conf-custom/install/rspamd_options.inc.master

Agregue estas líneas:

# Configuración de la plantilla ISPConfig (debe actualizarse si hay cambios)
# Direcciones locales a este servidor.
local_addrs = [
    "127.0.0.0/8",
    "::1",
  ];

# Esta lista es generada por ISPConfig, coloque direcciones/redes personalizadas en local_networks.inc.
local_networks = "/etc/rspamd/local.d/local_networks.inc";

dns {
    nameserver = ["127.0.0.1:53:10"];
}

# Configuración personalizada:
neighbours {
    mx1 {
        host = "https://mx1.ejemplo.com:443";
        path = "/rspamd/";
    }
    mx2 { 
        host = "https://mx2.ejemplo.com:443";
        path = "/rspamd/";
    }
}
# Última actualización: 19-01-2022

Reemplace los nombres de host con los nombres de host correctos para su servidor de correo principal y secundario. Esta configuración debe actualizarse si cambia la plantilla, así que asegúrese de verificar esto al actualizar ISPConfig.

Ahora vamos a agregar un sitio web para este servidor en ISPConfig. Vaya a Sitios -> Agregar nuevo sitio web y agregue el sitio web “mx1.ejemplo.com”. Asegúrese de crear esto en el servidor correcto (mx1.ejemplo.com). Desactive el subdominio automático y habilite SSL + Let’s Encrypt. Luego, vaya a opciones y pegue esto en la sección de directivas de Apache:

RewriteEngine On  
RewriteRule ^/rspamd$ /rspamd/ [R,L]  
RewriteRule ^/rspamd/(.*) http://127.0.0.1:11334/$1 [P]  
Header set Access-Control-Allow-Origin https://mx2.ejemplo.com

Reemplace mx2.ejemplo.com con el nombre de host del servidor de nombres secundario.

Por último, debemos habilitar algunos módulos de Apache y reiniciar nuestros servicios:

a2enmod proxy_balancer proxy_http  
systemctl restart rspamd  
systemctl restart apache2

4.5 Asegurando el servidor de correo con un certificado SSL válido

Para un funcionamiento correcto de DSYNC y la configuración de Roundcube, necesita tener un certificado SSL válido para los nombres de host utilizados. Este certificado no puede ser autofirmado. Si va a usar nombres de host adicionales para este servidor, como imap.ejemplo.com y smtp.ejemplo.com, o si el instalador no pudo crear un certificado válido al instalar, siga esta guía para configurar un certificado válido para su servidor de correo: https://www.howtoforge.com/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-certificate/

4.6 Configurando el firewall

Lo último que queda por hacer es configurar nuestro firewall.

Inicie sesión en la interfaz de ISPConfig y vaya a Sistema -> Firewall. Luego haga clic en “Agregar nuevo registro de firewall”.

Asegúrese de seleccionar el servidor correcto. Para nuestro servidor de correo, debemos abrir los siguientes puertos:

TCP:

22,25,80,110,143,443,465,587,993,995

No se deben abrir puertos UDP a través de la interfaz.

También vamos a abrir el puerto 3306, que se utiliza para MySQL, y el puerto 12345, que se utiliza para dsync, pero solo desde nuestra red local por razones de seguridad. Para hacerlo, ejecute el siguiente comando desde la CLI, después de que el cambio desde el panel de ISPConfig se haya propagado (cuando el punto rojo haya desaparecido):

ufw allow from 10.0.64.0/24 to any port 3306 proto tcp  
ufw allow from 10.0.64.0/24 to any port 12345 proto tcp
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.