En esta guía, aprenderás a instalar un certificado SSL de ACME en servidores de correo, concretamente Postfix, Dovecot y, opcionalmente, Exim, utilizando proveedores comerciales que admitan ACME + EAB. Utilizaremos acme.sh para registrar tu cuenta ACME, emitir un certificado para tu nombre de host de correo y, a continuación, conectar ese certificado directamente a la configuración TLS de tu servidor de correo.

Esta guía asume un servidor de correo basado en Linux y una CA comercial que proporciona una URL de directorio ACME junto con las credenciales EAB (ID de clave + HMAC). Dado que los entornos de correo difieren entre distribuciones y configuraciones de alojamiento, considera esto como un modelo claro y fiable, pero comprueba siempre las rutas, los nombres de servicio y la configuración TLS de tu propio servidor sobre la marcha.
Antes de empezar
Te resultará mucho más fácil si estos elementos básicos están listos:
- Un nombre de host de correo, por ejemplo mail.ejemplo.com, con un registro A/AAAA que apunte a tu servidor de correo
- Tu registro MX apuntando a ese nombre de host (configuración común)
- Acceso Shell/SSH al servidor de correo con sudo o root
- Una cuenta de CA comercial que proporcione una URL de directorio ACME(por ejemplo, https://acme.yourca.com/v2/acme), un ID de clave EAB y una clave EAB HMAC
- Pila de correo: Postfix/Exim para SMTP y Dovecot para IMAP/POP3
Utilizaremos la validación DNS-01 porque funciona incluso cuando tu servidor de correo no gestiona un sitio web público y a menudo se prefiere en producción.
Paso 1: Instala acme.sh en el Servidor de Correo
Instalarás el cliente ACME directamente en el servidor de correo para que pueda renovar los certificados y escribirlos en el disco donde Postfix/Dovecot/Exim puedan leerlos.
En el servidor de correo:
curl https://get.acme.sh | sh
source ~/.bashrc
acme.sh --version
Si ves un número de versión, el cliente está instalado y listo. Si la línea source ~/.bashrc no funciona, cierra la sesión y vuelve a entrar, luego ejecuta de nuevo acme.sh --version.
Paso 2: Registra tu cuenta ACME (con EAB)
A continuación, tienes que registrar tu cuenta ACME con tu CA comercial utilizando las credenciales EAB de su panel. acme.sh admite EAB a través de --eab-kid y --eab-hmac-key.
Ejecútalo en el servidor de correo:
acme.sh --register-account \
--server https://acme.yourca.com/v2/acme \
--eab-kid YOUR_EAB_KID \
--eab-hmac-key YOUR_EAB_HMAC_KEY \
--accountemail [email protected]
Sustitúyelo:
https://acme.yourca.com/v2/acmecon la URL del directorio ACME de tu CAYOUR_EAB_KIDcon el identificador de claveYOUR_EAB_HMAC_KEYcon la clave HMAC[email protected]con tu correo electrónico real de administrador para avisos de caducidad
Hazlo una vez por cuenta. Si el comando falla, casi siempre se trata de un error tipográfico en la URL o en los valores EAB.
Paso 3: Emitir el Certificado mediante DNS-01
Ahora solicita un certificado para el nombre de host al que se conectarán tus usuarios, por ejemplo mail.example.com (o imap.example.com, smtp.example.com. Simplemente elige el que utilices realmente en las configuraciones de los clientes).
Emitir el cert (DNS manual)
Corre:
acme.sh --issue \
-d mail.example.com \
--dns dns_manual \
--server https://acme.yourca.com/v2/acme
--dns dns_manual indica a acme.sh que añadas registros TXT manualmente en tu panel DNS.
El cliente mostrará algo como
Please add a TXT record:
_acme-challenge.mail.example.com → some-long-token-value
Añade el registro TXT
En el panel de tu proveedor de DNS, crea un registro TXT:
- Nombre:
_acme-challenge.mail.example.com - Valor: el token mostrado por
acme.sh
Espera unos minutos a que se propague el DNS y, a continuación, verifícalo con:
dig TXT _acme-challenge.mail.example.com +short
Si ves allí el token, ejecuta de nuevo el comando acme.sh --issue para completar la validación. Cuando lo consiga, acme.sh almacenará tus archivos en ~/.acme.sh/mail.example.com/.
Dentro de ese directorio tendrás al menos:
- fullchain.cer – certificado más cadena intermedia
- mail.ejemplo.com.key – clave privada
- ca.cer – Certificados CA (si tu CA los proporciona por separado)
Los utilizaremos en los próximos pasos.
Paso 4: Configurar Postfix para que utilice el certificado ACME (SMTP)
Postfix necesita saber dónde residen tu nuevo certificado y tu nueva clave. TLS en Postfix está controlado por opciones como smtpd_tls_cert_file y smtpd_tls_key_file.
Primero, copia los archivos en una ubicación estable, por ejemplo:
sudo mkdir -p /etc/ssl/mail
sudo cp ~/.acme.sh/mail.example.com/fullchain.cer /etc/ssl/mail/mail-fullchain.cer
sudo cp ~/.acme.sh/mail.example.com/mail.example.com.key /etc/ssl/mail/mail.key
sudo chown root:root /etc/ssl/mail/*
sudo chmod 600 /etc/ssl/mail/mail.key
Luego dile a Postfix que los utilice:
sudo postconf -e 'smtpd_use_tls = yes'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/mail/mail-fullchain.cer'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/mail/mail.key'
sudo postconf -e 'smtp_tls_security_level = may'
smtpd_*la configuración controla el correo entrante (clientes que te envían correo)smtp_*la configuración controla el correo saliente (tu servidor envía correo a otros)
Aplica los cambios:
sudo systemctl restart postfix
Si tu distro todavía utiliza service, ajusta el comando en consecuencia.
Paso 5: Configurar Dovecot para que utilice el certificado ACME (IMAP/POP3)
Dovecot gestiona IMAP y POP3. Configura TLS apuntando ssl_cert y ssl_key a los mismos archivos que acabamos de preparar.
Abre la configuración SSL de Dovecot:
sudo nano /etc/dovecot/conf.d/10-ssl.conf
Actualiza (o añade) estas líneas:
ssl = yes
ssl_cert = </etc/ssl/mail/mail-fullchain.cer
ssl_key = </etc/ssl/mail/mail.key
Guarda el archivo y vuelve a cargar Dovecot:
sudo systemctl restart dovecot
Ahora IMAP/POP3 sobre TLS presentará el mismo certificado comercial ACME.
Opcional: Utiliza el mismo certificado en Exim
Si utilizas Exim como servidor de correo en lugar de Postfix, la integración es similar. Exim utiliza las opciones tls_certificate y tls_privatekey para TLS.
En tu configuración de Exim (la ruta depende de la distro, a menudo /etc/exim4/exim4.conf.template o split config en /etc/exim4/conf.d/), establece:
tls_certificate = /etc/ssl/mail/mail-fullchain.cer
tls_privatekey = /etc/ssl/mail/mail.key
Luego vuelve a cargar Exim:
sudo systemctl restart exim4
Comprueba los documentos del paquete de tu distribución si el nombre del servicio es ligeramente diferente.
Paso 6: Prueba el TLS de tu correo
Puedes hacer la prueba desde cualquier otra máquina que tenga OpenSSL instalado.
Prueba SMTP (Postfix o Exim)
openssl s_client -starttls smtp -connect mail.example.com:587 -showcerts
Prueba IMAP (Dovecot)
openssl s_client -starttls imap -connect mail.example.com:143 -showcerts
Si la salida muestra tu CA comercial y el nombre de host coincide, estás bien.
Paso 7: Mantén la renovación y la recarga automatizadas
acme.sh ya instala una tarea cron que comprueba las renovaciones diariamente. Cuando tu cert esté próximo a caducar, se renovará automáticamente y actualizará los archivos en ~/.acme.sh/mail.example.com/.
Para que Postfix/Dovecot/Exim utilicen siempre la última versión, tienes dos opciones:
- Apunta las configuraciones directamente a los archivos de ~/. acme .sh/mail .example .com/
(por ejemplo, smtpd_tls_cert_file = /root/.acme.sh/mail.example.com/fullchain.cer) y asegúrate de que sólo root pueda leerlos. - Escribe un pequeño script de despliegue que copie los archivos renovados en
/etc/ssl/mail/y reinicie o recargue el servidor.
Ejemplo de guión:
#!/usr/bin/env bash
DOMAIN="mail.example.com"
SRC="$HOME/.acme.sh/$DOMAIN"
DEST="/etc/ssl/mail"
sudo cp "$SRC/fullchain.cer" "$DEST/mail-fullchain.cer"
sudo cp "$SRC/$DOMAIN.key" "$DEST/mail.key"
sudo chown root:root "$DEST/"*
sudo chmod 600 "$DEST/mail.key"
sudo systemctl restart postfix dovecot
Este script copia el certificado ACME y la clave privada recién emitidos en el directorio SSL de correo de tu servidor, establece la propiedad y los permisos correctos y, a continuación, reinicia Postfix y Dovecot para que empiecen a utilizar inmediatamente el certificado actualizado. Utiliza tus credenciales en lugar de los marcadores de posición.
Luego conéctalo a acme.sh:
acme.sh --install-cert -d mail.example.com \
--key-file ~/.acme.sh/mail.example.com/mail.example.com.key \
--fullchain-file ~/.acme.sh/mail.example.com/fullchain.cer \
--reloadcmd "/path/to/your/deploy-script.sh"
A partir de aquí, las renovaciones se producen automáticamente.
Preguntas frecuentes y resolución de problemas
Pueden surgir algunos problemas cuando hagas esto la primera vez. A continuación te explicamos cómo resolverlos rápidamente.
¿Por qué falla la validación ACME con «no autorizado» o «respuesta no válida»?
Esto ocurre cuando la CA no puede verificar tu registro DNS TXT. Compruébalo:
- El registro TXT es exactamente
_acme-challenge.mail.example.com - El token no tiene comillas ni espacios adicionales
- El DNS se ha propagado (
dig TXT _acme-challenge.mail.example.com +short) - No habrás confundido mail.ejemplo.com con ejemplo.com
Si no estás seguro, borra el registro TXT, vuelve a ejecutar acme.sh --issue, y vuelve a añadir el valor exacto que te da ACME.
¿Por qué recibo errores relacionados con «accountDoesNotExist» o EAB?
Aparecen cuando el registro de tu cuenta ACME no coincide con las credenciales EAB de tu CA.
Arreglado por:
- Volver a comprobar la URL del directorio ACME (producción frente a ensayo)
- Asegurarse de que el ID de la clave y el HMAC se copian exactamente, sin espacios ocultos
- Reejecutar el comando de registro una vez con los valores correctos
Las CA comerciales rechazan cualquier registro de EAB que no coincida con su perfil emitido.
¿Por qué SMTP/IMAP sigue mostrando el certificado antiguo?
Esto significa que el servicio no ha recargado el nuevo cert o que lo está leyendo de una ruta diferente. Compruébalo:
- Las rutas TLS en Postfix/Dovecot/Exim coinciden con los archivos reales
- Has reiniciado el servicio correcto (
systemctl restart postfix dovecot exim4) - Ninguna segunda instancia, contenedor o proxy está sirviendo el certificado antiguo
Puedes verificar el certificado activo utilizando:
openssl s_client -connect mail.example.com:465 -servername mail.example.com
Palabras finales
Con esta configuración, tu servidor de correo presenta un certificado ACME comercial adecuado a los clientes SMTP e IMAP/POP3, mientras que acme.sh gestiona silenciosamente las renovaciones en segundo plano. Mantienes el control total sobre la cadena del certificado y los nombres de archivo, tus usuarios dejan de ver advertencias de seguridad y no tienes que conectarte cada pocos meses para cargar nuevos archivos a mano.
Una vez que lo hayas hecho una vez, puedes repetir el mismo patrón para otros nombres de host, servidores MX secundarios o pilas de correo adicionales utilizando la misma cuenta y proceso ACME.
Ahorre un 10% en certificados SSL al realizar su pedido hoy mismo.
Emisión rápida, cifrado potente, 99,99% de confianza del navegador, asistencia dedicada y garantía de devolución del dinero en 25 días. Código del cupón: SAVE10

