En este tutorial, aprenderás cómo instalar un certificado SSL/TLS en Postfix, el popular agente de transferencia de correo de Linux.
También grabamos un video que te guía a través de todo el proceso. Míralo a continuación, o sigue leyendo para ver la versión de texto.
Generar un código CSR en Postfix
Si ya generaste tu código CSR y solo necesitas los pasos de instalación, ve directamente a Instalar un certificado SSL en Postfix.
Para obtener un certificado SSL de una CA (Autoridad de Certificación) de confianza, debes enviar un CSR (Solicitud de Firma de Certificado). Un CSR es un bloque de texto codificado que contiene tus datos de contacto y de la organización. Tienes dos opciones:
- Usa nuestro Generador de CSR para crear el CSR automáticamente.
- Sigue nuestro tutorial paso a paso sobre cómo generar un CSR en Postfix.
Durante el proceso de pedido con tu proveedor de SSL, abre el archivo CSR en cualquier editor de texto plano y copia y pega todo el bloque, incluyendo las líneas —–BEGIN CERTIFICATE REQUEST—– y —–END CERTIFICATE REQUEST—–, en el campo correspondiente. Una vez que la CA valide tu solicitud y emita el certificado, continúa con la instalación a continuación.
Instalar un certificado SSL en Postfix
Después de que la CA valide tu solicitud y envíe los archivos del certificado a tu bandeja de entrada, puedes comenzar la instalación.
Paso 1: Prepara tus archivos SSL
Postfix usa certificados SSL/TLS en formato X.509. Una instalación correcta necesita tres archivos:
- Tu clave privada, generada junto con el CSR en tu servidor (por ejemplo privkey.key).
- Tu certificado SSL principal, el archivo dentro del archivo ZIP que la CA te envió por correo electrónico. En esta guía nos referiremos a él como server.crt.
- El certificado o certificados intermedios, el paquete de CA del mismo archivo ZIP. Nos referiremos a él como intermediate.pem.
Puedes mantener los tres archivos en un solo directorio, por ejemplo /etc/postfix/. Asegúrate de que la clave privada solo pueda ser leída por root:
sudo chmod 600 /etc/postfix/privkey.key
Paso 2: Construye la cadena de certificados
La forma en que ensambles los archivos depende de tu versión de Postfix. Compruébala primero:
postconf mail_version
Recomendado (Postfix 3.4 y posteriores)
Crea un único archivo de cadena que contenga la clave privada, el certificado del servidor y el o los intermedios, exactamente en este orden:
cat /path/to/privkey.key /path/to/server.crt /path/to/intermediate.pem > /etc/postfix/rsachain.pem
Este método moderno evita problemas de renovación de certificados y funciona perfectamente con la directiva smtpd_tls_chain_files de Postfix. Protege el archivo de cadena de la misma manera que la clave, ya que contiene tu clave privada:
sudo chmod 600 /etc/postfix/rsachain.pem
Alternativa (todas las versiones de Postfix)
Si utilizas una versión de Postfix anterior a la 3.4, mantén la clave separada y combina solo el certificado del servidor con el o los intermedios:
cat /path/to/server.crt /path/to/intermediate.pem > /etc/postfix/server.pem
Harás referencia a este paquete y a la clave privada por separado en la configuración a continuación.
Paso 3: Configura Postfix
Abre el archivo de configuración principal /etc/postfix/main.cf y elige el estilo que corresponda a tu configuración.
Opción A: Postfix 3.4 o posterior (recomendado). Apunta Postfix al único archivo de cadena que creaste:
smtpd_tls_chain_files = /etc/postfix/rsachain.pem
smtpd_tls_security_level = may
Opción B: heredada (Postfix anterior a la 3.4). Haz referencia al paquete de certificados y a la clave por separado:
smtpd_tls_cert_file = /etc/postfix/server.pem
smtpd_tls_key_file = /etc/postfix/privkey.key
smtpd_tls_security_level = may
Algunas notas sobre estas directivas:
- smtpd_tls_security_level = may habilita TLS oportunista para el correo entrante en el puerto 25. Esta es la configuración correcta para un servidor MX público: anuncia STARTTLS a los remitentes que lo admiten, mientras sigue aceptando conexiones simples de los que no lo hacen. No lo configures como encrypt en un MX público, ya que eso rechazaría el correo legítimo de remitentes que solo usan conexiones simples. (El antiguo interruptor smtpd_use_tls = yes está obsoleto; smtpd_tls_security_level lo reemplaza.)
- Usa un certificado de cadena completa (tu certificado más los intermedios), ya sea que lo entregues mediante smtpd_tls_chain_files (Opción A) o smtpd_tls_cert_file (Opción B). Servir solo el certificado hoja causa fallos de validación de la cadena en el extremo receptor.
- Postfix moderno ya deshabilita SSLv2, SSLv3 y los cifrados débiles de forma predeterminada, por lo que no necesitas listas de exclusión adicionales para el tráfico entrante del puerto 25.
Asegura el servicio de envío (puerto 587)
Cuando tus propios usuarios envían correo a través de Postfix (mediante Outlook, Thunderbird, Apple Mail, etc.), se conectan al puerto de envío (submission) 587, no al puerto 25, que está reservado para la entrega de servidor a servidor. Dado que solo tus usuarios autenticados utilizan este puerto, puedes aplicar de forma segura reglas más estrictas: exigir TLS y establecer un protocolo mínimo de TLS 1.2.
Abre /etc/postfix/master.cf, asegúrate de que el servicio submission esté habilitado, y añade las anulaciones a continuación:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_mandatory_protocols=>=TLSv1.2
Un par de detalles que suelen confundir a la gente:
- smtpd_tls_mandatory_protocols solo tiene efecto cuando el nivel de seguridad es encrypt (TLS obligatorio), que es exactamente el caso aquí en el puerto 587. Para TLS oportunista en el puerto 25 (nivel de seguridad may), el ajuste equivalente sería smtpd_tls_protocols, pero en un MX público generalmente se deja en los valores predeterminados de Postfix para no rechazar remitentes más antiguos.
- La sintaxis compacta >=TLSv1.2 requiere Postfix 3.6 o posterior y no debe tener ningún espacio entre >= y la versión. En Postfix 3.4 o 3.5, usa en su lugar la forma de exclusión: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1.
- En master.cf, no hay espacio alrededor del = en una anulación -o (por ejemplo -o smtpd_tls_security_level=encrypt), mientras que en main.cf escribes clave = valor con espacios.
Opcional: TLS implícito en el puerto 465. Muchos clientes modernos prefieren el puerto 465 (SMTPS / «submissions»), que envuelve toda la sesión en TLS desde el principio. El RFC 8314 lo respalda junto con el 587. Para ofrecerlo, habilita el servicio smtps en master.cf con el modo wrapper:
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
Paso 4: Recarga Postfix
Antes de recargar, es buena práctica revisar la configuración en busca de errores de sintaxis:
sudo postfix check
Si eso no devuelve nada, aplica los cambios. Una recarga vuelve a leer la configuración sin interrumpir las conexiones activas:
sudo systemctl reload postfix
En sistemas sin systemd, el comando equivalente es:
sudo postfix reload
Paso 5: Verifica el certificado
Confirma que Postfix esté sirviendo el certificado y la cadena correctos con OpenSSL. Reemplaza yourdomain.com con el nombre de host de tu servidor de correo:
openssl s_client -starttls smtp -connect yourdomain.com:25 -servername yourdomain.com </dev/null
| openssl x509 -noout -issuer -subject -dates
La salida debería mostrar el asunto del certificado de tu servidor, su emisor (la CA) y las fechas de validez. Para probar en cambio el servicio de envío (submission), cambia el puerto a 587 (también usa STARTTLS) o, para el puerto 465 de TLS implícito, elimina -starttls smtp y conéctate directamente al puerto 465. Felicidades, has instalado con éxito un certificado SSL en Postfix.
Prueba tu instalación SSL
Después de instalar el certificado, es recomendable escanear tu configuración en busca de errores o vulnerabilidades. Nuestro SSL Checker te ofrece informes instantáneos de todos los aspectos de tu certificado y su configuración, para que puedas confirmar que la cadena está completa y que los protocolos están configurados correctamente.
¿Dónde comprar el mejor certificado SSL para Postfix?
Has llegado al lugar correcto. En SSL Dragon, ofrecemos una de las gamas más amplias de productos SSL a algunos de los precios más bajos del mercado, y todos nuestros certificados son compatibles con el agente de transferencia de correo Postfix.
¿No estás seguro de qué certificado elegir? Nuestro Asistente SSL hace que encontrar el producto adecuado para tu servidor de correo sea rápido y fácil.
Preguntas frecuentes
TLS se configura en /etc/postfix/main.cf. En Postfix 3.4 y posteriores, la directiva recomendada es smtpd_tls_chain_files, que apunta a un único archivo PEM que contiene la clave privada, el certificado del servidor y los intermedios. En versiones anteriores, en cambio configuras smtpd_tls_cert_file (un certificado de cadena completa) y smtpd_tls_key_file (la clave privada) por separado. Las anulaciones específicas por servicio para los puertos 587 y 465 se encuentran en /etc/postfix/master.cf.
Para smtpd_tls_chain_files, el orden es primero la clave privada, luego el certificado del servidor (hoja), y después el o los certificados intermedios:cat privkey.key server.crt intermediate.pem > /etc/postfix/rsachain.pem
Si el orden es incorrecto, Postfix no podrá cargar la cadena. No incluyas el certificado raíz de la CA; los clientes ya confían en él.
Usa may (TLS oportunista) para el correo entrante en el puerto 25. Un MX público debe aceptar correo de remitentes que no admiten TLS, y encrypt los rechazaría, causando pérdida de correo. Reserva encrypt (TLS obligatorio) para el servicio de envío autenticado en el puerto 587, donde solo se conectan tus propios usuarios.
Una recarga es suficiente para los cambios de certificado y TLS; ejecuta sudo systemctl reload postfix (o sudo postfix reload). Recargar vuelve a leer la configuración sin cortar las conexiones activas. Ejecuta primero sudo postfix check para detectar errores de sintaxis antes de que entren en vigor.
Conéctate con OpenSSL y lee el certificado que Postfix presenta mediante STARTTLS:openssl s_client -starttls smtp -connect yourdomain.com:25 -servername yourdomain.com </dev/null | openssl x509 -noout -issuer -subject -dates
Esto muestra el asunto, el emisor y las fechas de validez del certificado. También puedes ejecutar un análisis completo con nuestras herramientas SSL para confirmar que la cadena esté completa.
En resumen
Instalar un certificado SSL en Postfix se reduce a ensamblar un archivo PEM de cadena completa, apuntar main.cf hacia él con smtpd_tls_chain_files (o el par heredado smtpd_tls_cert_file / smtpd_tls_key_file), establecer smtpd_tls_security_level = may para el correo entrante, reforzar el servicio de envío en el puerto 587, comprobar la configuración con sudo postfix check, y recargar Postfix.
¿Necesitas primero un certificado? Explora nuestros certificados SSL.
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


