Servidor de correo · 4 min read · Sep 08, 2025

Asegurando tu servidor de correo gestionado por ISPConfig 3 con un certificado SSL válido de Let's Encrypt

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

Advertencia: Este tutorial se basa en este tutorial: https://www.howtoforge.com/tutorial/securing-ispconfig-3-with-a-free-lets-encrypt-ssl-certificate/ pero modificado para que tengas un certificado separado para tu servidor de correo y el panel de control. Si has seguido ese tutorial antes, este tutorial podría romper tu configuración.

Este tutorial utiliza certificados emitidos por acme.sh. Si estás usando certbot, sigue este tutorial en su lugar: https://www.howtoforge.com/community/threads/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-ssl-certificate-certbot.86372/

Nota para ISPConfig 3.2: ISPConfig 3.2 puede crear un certificado SSL válido de Let’s Encrypt 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 sistemas ISPConfig 3.2 a menos que necesites diferentes nombres de dominio en el certificado SSL además del nombre de host del servidor.

Requisitos previos

  • Tu servidor debe estar instalado de acuerdo con el tutorial de Perfect Server para tu SO.
  • Asegúrate de haber iniciado sesión como usuario root.

Comenzando

Voy a usar los siguientes nombres de host para mi servidor de correo: mail.ejemplo.com, smtp.ejemplo.com, imap.ejemplo.com.

Reemplaza todos los nombres de host subrayados en rojo en este tutorial con los tuyos.

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

Emisión del certificado

Bajo Sitios, haz clic en “Agregar nuevo sitio web”. Establece mail.ejemplo.com como dominio. Desactiva Subdominio automático y marca la casilla de Let’s Encrypt.

Después de esto, puedes agregar tus otros nombres de host como dominios alias, yendo a la lista de dominios alias y haciendo clic en “Agregar nuevo dominio alias”. Selecciona smtp.ejemplo.com como dominio y mail.ejemplo.com como sitio web principal. Desactiva Subdominio automático y guarda el nuevo registro. Repite esto para tus otros nombres de host.

Verifica 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 así:

Captura de pantalla de la verificación SSL

Si los nombres de host están listados y no hay otros errores, puedes continuar. De lo contrario, verifica los errores y resuélvelos antes de continuar.

Reemplazando el certificado con el certificado de Let’s Encrypt

Ahora podemos reemplazar el certificado actual con tu certificado de confianza. Inicia sesión en tu servidor y ejecuta estos comandos:

(reemplaza mail.ejemplo.com con el nombre de host que usaste 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 /var/www/mail.ejemplo.com/ssl/mail.ejemplo.com-le.crt smtpd.cert  
ln -s /var/www/mail.ejemplo.com/ssl/mail.ejemplo.com-le.key smtpd.key  
systemctl restart postfix  
systemctl restart dovecot

El certificado ahora debería ser utilizado para tu 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 ello.

Nodos multiserver sin GUI de ISPConfig

Si este es un nodo sin GUI en una configuración multiserver de ISPConfig, debes verificar si ISPConfig en sí tiene un certificado SSL. No realices este paso en una configuración de servidor único o en un servidor que ejecute una GUI de ISPConfig.

Puedes hacer la prueba con los siguientes comandos ls:

cd /usr/local/ispconfig/interface/ssl/  
ls ispserver.crt  
ls ispserver.key

El resultado se verá así si ya hay un certificado:

root@server:/usr/local/ispconfig/interface/ssl# ls ispserver.crt  
ispserver.crt  
root@server:/usr/local/ispconfig/interface/ssl# ls ispserver.key  
ispserver.key

Si los dos comandos ls no devuelven los archivos ispserver.crt e ispserver.key, entonces créalos como enlaces simbólicos al certificado de Let’s Encrypt así:

ln -s /var/www/mail.ejemplo.com/ssl/mail.ejemplo.com-le.cer ispserver.crt  
ln -s /var/www/mail.ejemplo.com/ssl/mail.ejemplo.com-le.key ispserver.key

Configurar un script de renovación automática

Abre un nuevo archivo de script:

nano /usr/local/bin/le_mailserver_restart.sh

Pega 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: Reinicia el servidor de correo automáticamente cuando se emite un nuevo certificado de Let's Encrypt.  
### END INIT INFO  
systemctl restart postfix  
systemctl restart dovecot

Haz que el script sea ejecutable:

chmod +x /usr/local/bin/le_mailserver_restart.sh

Para activar automáticamente este script en la renovación, vamos a usar systemd.

Crea y abre el nuevo servicio de systemd:

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

Pega esto en ese archivo:

[Unit]   
Description="Ejecutar script para reiniciar Postfix y Dovecot después de que se haya renovado el certificado"  
  
[Service]  
ExecStart=/usr/local/bin/le_mailserver_restart.sh

Guarda y cierra este archivo. Luego crea y abre el nuevo archivo de ruta de systemd:

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

Pega esto en ese archivo y reemplaza mail.ejemplo.com con el nombre de host que usaste:

[Unit]  
Description="Monitorear los archivos de certificado del servidor de correo para activar un reinicio de los servicios de correo después de que se hayan renovado los certificados"  
  
[Path]  
PathModified=/var/www/mail.ejemplo.com/ssl/  
Unit=le-mailserver-restart.service  
  
[Install]  
WantedBy=multi-user.target

Guarda y cierra este archivo. Luego inicia el servicio y habilítalo para que se ejecute al inicio:

systemctl start le-mailserver-restart.path

Y habilítalo para que se ejecute al inicio:

systemctl enable le-mailserver-restart.path

¡Y hemos terminado!

¿No funciona?

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

Si aún experimentas un problema, abre un hilo en el foro para que otros puedan ayudarte.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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