Servidor de correo · 11 min read · Sep 22, 2025
Configuración Perfecta de Multiserver ISPConfig en Ubuntu 20.04 y Debian 10 - Página 4

5 Instalando el segundo 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.
5.1 Configurar el nombre de host
El nombre de host de su servidor debe ser un subdominio como “mx2.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 del subdominio”. Para nuestro nombre de host mx2.ejemplo.com, el archivo debe verse así:
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
# Esta línea debe cambiarse en cada nodo al nombre de servidor correcto:
127.0.1.1 mx2.ejemplo.com mx2
# 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-allroutersComo 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/hostnameDeberá contener solo la parte del subdominio, en nuestro caso:
mx2Finalmente, reinicie el servidor para aplicar el cambio:
systemctl rebootInicie sesión nuevamente y verifique si el nombre de host es correcto ahora con estos comandos:
hostname
hostname -fLa salida debe ser así:
root@mx2:~$ hostname
mx2
root@mx2:~$ hostname -f
mx2.ejemplo.com5.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 --interactiveDespués de un tiempo, verá:
¡ADVERTENCIA! Este script reconfigurará su servidor completo!
¡Debe 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 mx2. 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 agregará 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 [mx2.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 el 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á
en 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 desee ejecutar un servidor web o cuando este nodo deba 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 Cortafuegos (s,n) [s]: <-- Presione Enter
Configurando Cortafuegos de Ubuntu
[ADVERTENCIA] autodetección para el Servidor XMPP Metronome falló
Forzar configurar el Servidor XMPP Metronome (s,n) [n]: <-- Presione Enter
Saltar el Servidor XMPP Metronome
Configurando Fail2ban
Instalar la 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 mx2.ejemplo.com
Usando ruta de certificado /etc/letsencrypt/live/mx2.ejemplo.com
Usando apache para validación de 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 funcionamiento.
[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: ¡Elimine los archivos de registro en /tmp/ispconfig-ai/var/log/setup-* una vez que ya no los necesite porque contienen sus contraseñas! 5.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.masterPonga 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-mx2
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 el servidor doveadm
service doveadm {
user = vmail
inet_listener {
port = 12345
ssl = yes
}
}
service config {
unix_listener config {
user = vmail
}
}
plugin {
mail_replica = tcps:mx1.ejemplo.com
}Reemplace doveadm_password con su propia contraseña: hágala una cadena larga y aleatoria por razones de seguridad. Debe ser la misma en ambos servidores.
Reemplace
mail_replica = tcps:mx1.ejemplo.comcon su propio nombre de host de mx1.
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 dovecot5.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.masterAgregue 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-2022Reemplace 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 “mx2.ejemplo.com”. Asegúrese de crear esto en el servidor correcto (mx2.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://mx1.ejemplo.comReemplace mx1.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 apache2Ahora vamos a establecer una contraseña para la interfaz de Rspamd en MX1, que usaremos como interfaz web para nuestro clúster de Rspamd.
Inicie sesión en ISPConfig como administrador y vaya a Sistema -> Configuración del servidor -> mx1.ejemplo.com -> Correo -> Contraseña de Rspamd.
Ingrese una nueva contraseña y haga clic en guardar. Luego, vaya a Sistema -> Configuración del servidor -> mx2.ejemplo.com -> Correo -> Contraseña de Rspamd e ingrese la misma contraseña allí. Espere hasta que los cambios se propaguen. Cuando haya terminado, puede iniciar sesión en Rspamd con su contraseña en https://mx1.ejemplo.com/rspamd/ en su navegador.
5.5 Asegurando el servidor de correo con un certificado SSL válido
Para una configuración de DSYNC y Roundcube que funcione, 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/
5.6 Configurando el cortafuegos
Inicie sesión en la interfaz de ISPConfig y vaya a Sistema -> Cortafuegos. Luego haga clic en “Agregar nuevo registro de cortafuegos”.
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,995No 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 tcp5.7 Reflejando MX2 desde MX1 en ISPConfig
Para finalizar la configuración, debe habilitar la reflexión entre mx1 y mx2. Para hacer esto, inicie sesión en ISPConfig, vaya a Sistema -> mx2.ejemplo.com -> “Es espejo del servidor”. Seleccione mx1.ejemplo.com y haga clic en guardar.
Nuestro servidor de correo secundario ahora está instalado. En el siguiente paso, instalaremos el servidor DNS principal.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.