Configuración de ISPConfig Perfect Multiserver en Ubuntu 20.04 y Debian 10
5 Instalar el segundo servidor de correo
Inicia sesión como root o ejecuta
su -
para convertirte en usuario root en tu servidor antes de proceder. IMPORTANTE: Debes utilizar ‘su -‘ y no sólo ‘su’, de lo contrario tu variable PATH será configurada erróneamente por Debian.
5.1 Configurar el nombre de host
El nombre de host de tu servidor debe ser un subdominio como «mx2.ejemplo.com». No utilices 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 la configuración de tu correo. En primer lugar, debes comprobar el nombre de host en/etc/hosts y cambiarlo cuando sea necesario. La línea debería ser «Dirección IP – espacio – nombre de host completo incluyendo el dominio – espacio – parte del subdominio». Para nuestro nombre de host mx2.ejemplo.com, el archivo deberá tener este aspecto:
nano /etc/hosts
127.0.0.1 localhost.localdomain localhost
# This line should be changed on every node to the correct servername:
127.0.1.1 mx2.example.com mx2
# These lines are the same on every node: 10.0.64.12 panel.example.com panel
10.0.64.13 web01.example.com web01
10.0.64.14 mx1.example.com mx1
10.0.64.15 mx2.example.com mx2
10.0.64.16 ns1.example.com ns1
10.0.64.17 ns2.example.com ns2
10.0.64.18 webmail.example.com webmail # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Como puedes ver, hemos añadido también los nombres de host de nuestros otros servidores, para que puedan comunicarse posteriormente a través de la red interna.
A continuación, edita el archivo /etc/hostname:
nano /etc/hostname
En nuestro caso, sólo contendrá la parte del subdominio:
mx2
Por último, reinicia el servidor para aplicar el cambio:
systemctl reboot
Vuelve a entrar y comprueba si el nombre de host es ahora correcto con estos comandos:
hostname
hostname -f
El resultado será el siguiente:
root@mx2:~$ hostname
mx2
root@mx2:~$ hostname -f
mx2.example.com
5.2 Instalar 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ás:
WARNING! This script will reconfigure your complete server!
It should be run on a freshly installed server and all current configuration that you have done will most likely be lost!
Type 'yes' if you really want to continue:
Responde «sí» y pulsa enter. Ahora se iniciará el instalador.
Cuando termine la instalación y configuración de los paquetes, se mostrará la contraseña de root para MySQL en mx2. Anótala (junto con el nombre del servidor, para evitar confusiones posteriores).
Ahora tendremos que responder a algunas preguntas, ya que estamos utilizando el modo interactivo. Esto es necesario porque este servidor se añadirá a tu configuración multiservidor.
[INFO] Installing ISPConfig3.
[INFO] Your MySQL root password is: kl3994aMsfkkeE
--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------
>> Initial configuration
Operating System: Debian 10.0 (Buster) or compatible
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.
Select language (en,de) [en]: <-- Hit enter
Installation mode (standard,expert) [standard]: <-- expert
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [mx2.example.com]: <-- Hit Enter
MySQL server hostname [localhost]: <-- Hit Enter
MySQL server port [3306]: <-- Hit Enter
MySQL root username [root]: <-- Hit Enter
MySQL root password []: <-- Enter the MySQL password the script just gave you
MySQL database to create [dbispconfig]: <-- Hit Enter
MySQL charset [utf8]: <-- Hit Enter
The next two questions are about the internal ISPConfig database user and password.
It is recommended to accept the defaults which are 'ispconfig' as username and a random password.
If you use a different password, use only numbers and chars for the password.
ISPConfig mysql database username [ispconfig]: <-- Hit Enter
ISPConfig mysql database password [aakl203920459853sak20284204]: <-- Hit Enter
Shall this server join an existing ISPConfig multiserver setup (y,n) [n]: <-- y
MySQL master server hostname []: <-- panel.example.com
MySQL master server port []: <-- Hit Enter
MySQL master server root username [root]: <-- Hit Enter
MySQL master server root password []: <-- the password you gave the external root user on the master server.
MySQL master server database name [dbispconfig]: <-- Hit Enter
Adding ISPConfig server record to database.
Configure Mail (y,n) [y]: <-- Hit enter
Configuring Postgrey
Configuring Postfix
Generating a RSA private key
......................................................................++++
....................++++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: <-- Hit enter
State or Province Name (full name) [Some-State]: <-- Hit enter
Locality Name (eg, city) []: <-- Hit enter
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Hit enter
Organizational Unit Name (eg, section) []: <-- Hit enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Hit enter
Email Address []: <-- Hit enter
[WARN] autodetect for Mailman failed
Force configure Mailman (y,n) [n]: <-- Hit enter
Skipping Mailman
Configuring Dovecot
Creating new DHParams file, this takes several minutes. Do not interrupt the script.
Configuring Spamassassin
[WARN] autodetect for Amavisd failed
Force configure Amavisd (y,n) [n]: <-- Hit enter
Skipping Amavisd
Configuring Rspamd
Configuring Getmail
Configuring Jailkit
Configuring Pureftpd
Configure DNS Server (y,n) [y]: <-- n
The Web Server option has to be enabled when you want run a web server or when this node shall host the ISPConfig interface.
Configure Web Server (y,n) [y]: <-- Hit enter
Configuring Apache
Configuring vlogger
[WARN] autodetect for OpenVZ failed
Force configure OpenVZ (y,n) [n]: <-- Hit Enter
Skipping OpenVZ
Configure Firewall Server (y,n) [y]: <-- Hit Enter
Configuring Ubuntu Firewall
[WARN] autodetect for Metronome XMPP Server failed
Force configure Metronome XMPP Server (y,n) [n]: <-- Hit Enter
Skipping Metronome XMPP Server
Configuring Fail2ban
Install ISPConfig Web Interface (y,n) [n]: <-- Hit Enter
Do you want to create SSL certs for your server? (y,n) [y]: <-- Hit Enter
Checking / creating certificate for mx2.example.com
Using certificate path /etc/letsencrypt/live/mx2.example.com
Using apache for certificate validation
Symlink ISPConfig SSL certs to Postfix? (y,n) [y]: <-- Hit Enter
Symlink ISPConfig SSL certs to Pure-FTPd? Creating dhparam file may take some time. (y,n) [y]: <-- Hit Enter
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
......................+...........................................+...............
Configuring Apps vhost
Configuring DBServer
Installing ISPConfig crontab
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.
[INFO] Adding php versions to ISPConfig.
[INFO] Checking all services are running.
[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] Installation ready.
[INFO] Your MySQL root password is: kl3994aMsfkkeE
[INFO] Warning: Please delete the log files in /tmp/ispconfig-ai/var/log/setup-* once you don't need them anymore because they contain your passwords!
5.3 Configurar la replicación para Dovecot
Vamos a utilizar dsync para sincronizar los correos electrónicos entre mx1 y mx2, por redundancia.
Las configuraciones personalizadas para dovecot tienen que ser almacenadas en /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master para que no las pierdas al actualizar ISPConfig.
nano /usr/local/ispconfig/server/conf-custom/install/dovecot_custom.conf.master
Pon lo siguiente ahí:
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
# Replicator process should be started at startup, so it can start replicating users immediately:
service replicator {
process_min_avail = 1
}
# The mail processes need to have access to the replication-notify fifo and socket.
service aggregator {
fifo_listener replication-notify-fifo {
user = vmail
mode = 0666
}
unix_listener replication-notify {
user = vmail
mode = 0666
}
}
# Enable doveadm replicator commands
service replicator {
unix_listener replicator-doveadm {
mode = 0666
}
}
# Create a listener for doveadm-server
service doveadm {
user = vmail
inet_listener {
port = 12345
ssl = yes
}
}
service config {
unix_listener config {
user = vmail
}
}
plugin {
mail_replica = tcps:mx1.example.com
}
Sustituye el doveadm_password por tu propia contraseña – haz que sea una cadena larga y aleatoria por razones de seguridad. Tiene que ser la misma en ambos servidores.
Sustituye
mail_replica = tcps:mx1.example.com
por tu propio nombre de host de mx1.
Para aplicar estos cambios, copia el archivo en la carpeta de dovecot y reinicia 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
5.4 Configurar la sincronización para Rspamd
Rspamd tiene una bonita interfaz web. Vamos a configurar nuestros servidores como vecinos para que puedas ver la configuración, las estadísticas y otros datos en un solo panel.
nano /usr/local/ispconfig/server/conf-custom/install/rspamd_options.inc.master
Añade estas líneas:
# Configuration from the ISPConfig template (must be updated if there are changes) # Addrs local to this server. local_addrs = [ "127.0.0.0/8", "::1", ]; # This list is generated by ISPConfig, place custom addresses/networks in local_networks.inc. local_networks = "/etc/rspamd/local.d/local_networks.inc"; dns { nameserver = ["127.0.0.1:53:10"]; } # Custom configuration: neighbours { mx1 { host = "https://mx1.example.com:443"; path = "/rspamd/"; } mx2 { host = "https://mx2.example.com:443"; path = "/rspamd/"; } } # Last updated: 19-01-2022
Sustituye los nombres de host por los nombres correctos de tu servidor de correo principal y secundario. Esta configuración debe actualizarse si la plantilla cambia, así que asegúrate de comprobarlo cuando actualices ISPConfig.
Ahora vamos a añadir un sitio web para este servidor en ISPConfig. Ve a Sitios -> Añadir nuevo sitio web y añade el sitio web «mx2.ejemplo.com». Asegúrate de que lo creas en el servidor correcto (mx2.ejemplo.com). Desactiva el auto-subdominio, y activa SSL + Let’s Encrypt. Luego, ve a opciones y pega 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.example.com
Sustituye mx1.ejemplo.com por el nombre del servidor de nombres secundario.
Por último, tenemos que habilitar algunos módulos de Apache y reiniciar nuestros servicios:
a2enmod proxy_balancer proxy_http
systemctl restart rspamd
systemctl restart apache2
Ahora vamos a establecer una contraseña para la UI de Rspamd en MX1, que utilizaremos como UI web para nuestro cluster de Rspamd.
Entra en ISPConfig como administrador y ve a Sistema -> Configuración del Servidor -> mx1.ejemplo.com -> Correo -> Contraseña Rspamd.
Introduce una nueva contraseña y haz clic en guardar. Luego ve a Sistema -> Configuración del Servidor -> mx2.ejemplo.com -> Correo -> Contraseña Rspamd e introduce la misma contraseña allí. Espera a que se propaguen los cambios. Cuando esté hecho, podrás entrar en Rspamd con tu contraseña en https://mx1.example.com/rspamd/ en tu navegador.
5.5 Asegurar el servidor de correo con un certificado SSL válido
Para que la configuración de DSYNC y Roundcube funcione, necesitas tener un certificado SSL válido para los nombres de host utilizados. Este certificado no puede ser autofirmado. Si vas a utilizar 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 instalarlo, sigue esta guía para configurar un certificado válido para tu servidor de correo: https://www.howtoforge.com/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-certificate/
5.6 Configurar el cortafuegos
Entra en la UI de ISPConfig, y ve a Sistema -> Cortafuegos. Luego haz clic en «Añadir nuevo registro de cortafuegos».
Asegúrate de que seleccionas el servidor correcto. Para nuestro servidor de correo, tenemos que abrir los siguientes puertos:
TCP:
22,25,80,110,143,443,465,587,993,995
No hay que abrir ningún puerto UDP a través de la UI.
También vamos a abrir el puerto 3306, que se utiliza para MySQL, y el puerto 12345, que se utiliza para dsync, pero sólo desde nuestra red local por razones de seguridad. Para ello, ejecuta el siguiente comando desde la CLI, después de que se propague el cambio desde el panel de ISPConfig (cuando desaparezca el punto rojo):
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
5.7 Reflejar MX2 desde MX1 en ISPConfig
Para terminar la configuración, tienes que habilitar el mirroring entre mx1 y mx2. Para ello, entra en ISPConfig, ve a Sistema -> mx2.ejemplo.com -> «Es espejo del Servidor». Selecciona mx1.ejemplo.com y haz clic en guardar.
Nuestro servidor de correo secundario ya está instalado. En el siguiente paso, instalaremos el servidor DNS principal.