Protección de su servidor de correo administrado por ISPConfig 3 con un certificado Let’s Encrypt SSL válido

Captura de pantalla de verificación SSL

Si está ejecutando su propio servidor de correo, es una buena práctica conectarse a él de forma segura con una conexión SSL/TLS. Necesitará un certificado válido para estas conexiones seguras. En este tutorial, configuraremos un certificado Let’s Encrypt para nuestro servidor de correo que se renueve automáticamente.

Este tutorial utiliza certificados emitidos por acme.sh.

Nota para ISPConfig 3.2: ISPConfig 3.2 puede crear un certificado Let’s Encrypt SSL válido para el nombre de host del servidor automáticamente durante la instalación, que también se utiliza para el servidor de correo. No es necesario crear manualmente un certificado SSL de Let’s Encrypt como se describe aquí en los sistemas ISPConfig 3.2, a menos que necesite diferentes nombres de dominio en el certificado SSL junto al nombre de host del servidor.

Requisitos previos

  • Su servidor debe instalarse de acuerdo con el tutorial de Perfect Server para su sistema operativo.
  • Asegúrese de haber iniciado sesión como usuario raíz.

Empezando

Usaré los siguientes nombres de host para mi servidor de correo: mail.example.com, smtp.example.com, imap.example.com.

Reemplace todos los nombres de host subrayados en rojo en este tutorial con los suyos propios.

Cree los registros DNS para su(s) nombre(s) de host, para que apunten a su servidor. Estos deben ser registros A (y eventualmente AAAA). Luego, en la interfaz de ISPConfig, vaya a la pestaña Sitios.

Emisión del certificado

En Sitios, haga clic en «Agregar nuevo sitio web». Establezca mail.example.com como dominio. Deshabilite el subdominio automático y marque la casilla de verificación Let’s Encrypt.

Después de esto, puede agregar sus otros nombres de host como dominios de alias, yendo a la lista de dominios de alias y haciendo clic en «Agregar nuevo dominio de alias». Seleccione smtp.example.com como dominio y mail.example.com como sitio web principal. Deshabilite Auto-Subdominio y guarde el nuevo registro. Repita esto para eventuales otros nombres de host.

Verifique que el certificado esté en su lugar. Puedes hacer esto con una herramienta como https://www.sslshopper.com/ssl-checker.html

Debería verse algo como esto:

Captura de pantalla de verificación SSL

Si los nombres de host aparecen en la lista y no hay otros errores, puede continuar. De lo contrario, verifique los errores y resuélvalos antes de continuar.

Reemplazar el certificado con el certificado de Let’s Encrypt

Ahora podemos reemplazar el certificado actual con su certificado de confianza. Inicie sesión en su servidor y ejecute estos comandos:

(reemplace mail.example.com con el nombre de host que usó para el sitio web)

cd /etc/postfix/
mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak
mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak
ln -s /root/.acme.sh/mail.example.com/fullchain.cer smtpd.cert
ln -s /root/.acme.sh/mail.example.com/mail.example.com.key smtpd.key
systemctl restart postfix
systemctl restart dovecot

El certificado ahora debe usarse para su servidor Postfix y Dovecot. ¡Pero aún no hemos terminado! El certificado de Let’s Encrypt se renueva cada 60 días, por lo que deberíamos automatizar el proceso de reemplazo del certificado en el futuro, para que no te olvides de él.

Configurar un script de renovación automática

Abra un nuevo archivo de secuencia de comandos:

nano /etc/init.d/le_mailserver_restart.sh

Pegue esto en ese archivo:

#!/bin/sh
### BEGIN INIT INFO
# Provides: LE MAILSERVER CERT AUTO UPDATER
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: LE MAILSERVER CERT AUTO UPDATER
# Description: Restart mail server automatically when a new Let's Encrypt certificate is issued.
### END INIT INFO
systemctl restart postfix
systemctl restart dovecot

Haga que el script sea ejecutable:

chmod +x /etc/init.d/le_mailserver_restart.sh

Para activar automáticamente este script en la renovación, usaremos systemd.Advertisement

Cree y abra el nuevo servicio systemd:

nano /etc/systemd/system/le-mailserver-restart.service

Pegue esto en ese archivo:

[Unit] 
Description="Run script to restart Postfix and Dovecot after the certificate has been renewed"
[Service]
ExecStart=/etc/init.d/le_mailserver_restart.sh

Guarde y cierre este archivo. Luego cree y abra el nuevo archivo de ruta systemd:

nano /etc/systemd/system/le-mailserver-restart.path

Pegue esto en ese archivo y reemplace mail.example.com con el nombre de host que usó:

[Unit]
Description="Monitor the mailserver certificate files to trigger a e-mail services restart after the certificates has been renewed"
[Path]
PathModified=/root/.acme.sh/mail.example.com/
Unit=le-mailserver-restart.service

[Install]
WantedBy=multi-user.target

Guarde y cierre este archivo. Luego inicie el servicio y actívelo para que se ejecute al inicio: Anuncio

systemctl start le-mailserver-restart.path

Y habilitarlo para que se ejecute en el inicio:

systemctl enable le-mailserver-restart.path

¡Y hemos terminado!

¿No funciona?

Una vez tuve un problema con esto, porque Let’s Encrypt usó uno de los dominios de alias como dominio principal. Puede encontrar el dominio principal en la herramienta SSL mencionada anteriormente como «Nombre común» o enumerando el contenido de /root/acme.sh/ para ver cuál de los dominios (alias) tiene una carpeta allí.

1 respuesta

  1. Cesar dice:

    hola consulta, esto seria para un solo dominio, si tengo varios clientes en el ISPConfig para los demás dominios no va a funcionar por mas que haga el certificado para el dominio principal no? grzcias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *