STARTTLS, SSL/TLS y SMTP: ¿qué cifrado para tus emails?
Por CaptainDNS
Publicado el 17 de febrero de 2026

- SSL está obsoleto desde 2015 (RFC 7568): el término correcto es TLS. STARTTLS no es un protocolo de cifrado, es un comando que activa TLS en una conexión existente
- STARTTLS es vulnerable a ataques downgrade: un atacante en la red puede eliminar el anuncio STARTTLS y forzar la comunicación en texto plano. MTA-STS y DANE corrigen esta vulnerabilidad
- TLS 1.3 es el estándar recomendado para SMTP en 2026: handshake más rápido (1-RTT), cipher suites más seguras, forward secrecy obligatorio
- Configura tu MTA con TLS obligatorio en salida (
smtp_tls_security_level = encrypten Postfix) y despliega MTA-STS para proteger los emails entrantes
¿Tus emails se transmiten realmente cifrados? En 2024, Google informa que más del 95 % de los emails recibidos por Gmail usan TLS. Pero esta cifra oculta una realidad más matizada: STARTTLS es oportunista por defecto, los ataques downgrade están documentados y muchos servidores aún aceptan TLS 1.0 o cipher suites débiles.
Esta guía va más allá de la simple comparación STARTTLS vs Implicit TLS. Explica cómo funciona el cifrado TLS a nivel de handshake, por qué TLS 1.3 cambia las reglas del juego para SMTP, qué vulnerabilidades explotan los atacantes y cómo configurar un cifrado robusto en los MTA más utilizados (Postfix, Exim, Exchange). Ya sea que administres un servidor de correo o que estés auditando una infraestructura email, saldrás con acciones concretas.
SSL, TLS, STARTTLS: aclarar la terminología
Los términos SSL, TLS y STARTTLS se usan de forma intercambiable en la industria del email. Es una fuente de confusión importante, ya que designan cosas fundamentalmente diferentes.
SSL está muerto, TLS lo reemplazó
SSL (Secure Sockets Layer) es el predecesor de TLS. La última versión, SSL 3.0, se publicó en 1996 y fue oficialmente abandonada por la RFC 7568 en 2015 debido a vulnerabilidades críticas (POODLE, BEAST). Cuando un proveedor de correo menciona "SSL" en 2026, en realidad se refiere a TLS.
| Protocolo | Año | Estado en 2026 |
|---|---|---|
| SSL 2.0 | 1995 | Prohibido (RFC 6176) |
| SSL 3.0 | 1996 | Prohibido (RFC 7568) |
| TLS 1.0 | 1999 | Obsoleto (RFC 8996) |
| TLS 1.1 | 2006 | Obsoleto (RFC 8996) |
| TLS 1.2 | 2008 | Aceptable |
| TLS 1.3 | 2018 | Recomendado |
En la práctica: si tu servidor SMTP aún acepta SSL 3.0 o TLS 1.0, es vulnerable a ataques conocidos. Desactiva estos protocolos.
STARTTLS no es un protocolo de cifrado
STARTTLS es un comando SMTP (definido en la RFC 3207) que solicita al servidor cambiar una conexión en texto plano a una conexión cifrada TLS. No es SSL, ni TLS, ni un protocolo autónomo: es un mecanismo de actualización (upgrade) de una conexión existente.
La confusión proviene del nombre: "STARTTLS" contiene "TLS", pero no especifica qué versión de TLS se utilizará. La versión negociada depende de la configuración del cliente y del servidor.
Implicit TLS vs Explicit TLS (STARTTLS)
Existen dos formas de establecer TLS en una conexión SMTP:
| Método | Puerto típico | Funcionamiento | Analogía web |
|---|---|---|---|
| Explicit TLS (STARTTLS) | 25, 587 | Conexión en texto plano, luego upgrade mediante comando STARTTLS | HTTP, luego redirección a HTTPS |
| Implicit TLS | 465 | Conexión TLS desde el primer byte | HTTPS nativo en el puerto 443 |
Con Explicit TLS, siempre hay un momento en que la comunicación es en texto plano (la fase EHLO antes de STARTTLS). Con Implicit TLS, nunca hay comunicación en texto plano. Es esta diferencia la que tiene consecuencias importantes en términos de seguridad.
¿Cómo funciona el cifrado SMTP en la práctica?
Ya sea que uses STARTTLS o Implicit TLS, el cifrado se basa en un handshake TLS. Este proceso de negociación determina la versión del protocolo, el cipher suite utilizado y el intercambio de claves.
El handshake TLS paso a paso
Esto es lo que ocurre cuando un servidor SMTP negocia TLS (después del comando STARTTLS o desde el inicio de la conexión en el puerto 465):
Con TLS 1.2 (4 intercambios, 2-RTT):
- ClientHello: el cliente envía las versiones TLS y cipher suites que soporta
- ServerHello: el servidor elige la versión TLS y el cipher suite, envía su certificado
- Intercambio de claves: el cliente genera un secreto pre-master, lo cifra con la clave pública del servidor
- Finished: ambas partes confirman que el canal está cifrado
Con TLS 1.3 (2 intercambios, 1-RTT):
- ClientHello: el cliente envía las versiones TLS, cipher suites y sus claves Diffie-Hellman
- ServerHello + Finished: el servidor elige los parámetros, envía su certificado y confirma el cifrado
TLS 1.3 fusiona etapas: el handshake pasa de 2-RTT a 1-RTT, lo que reduce la latencia de establecimiento de conexión. Para un servidor MX que procesa miles de conexiones por hora, esta optimización es significativa.

TLS 1.2 vs TLS 1.3: ¿qué diferencias para SMTP?
| Criterio | TLS 1.2 | TLS 1.3 |
|---|---|---|
| Handshake | 2-RTT | 1-RTT |
| Forward secrecy | Opcional (depende del cipher) | Obligatorio |
| Cipher suites | 37 suites (incluyendo débiles) | 5 suites (todas robustas) |
| Compresión | Soportada (vulnerable a CRIME) | Eliminada |
| Renegociación | Soportada (vector de ataque) | Eliminada |
| 0-RTT resumption | No | Sí (con precauciones) |
| RFC | RFC 5246 | RFC 8446 |
El punto clave para SMTP: TLS 1.3 elimina las cipher suites débiles y hace la forward secrecy obligatoria. Con TLS 1.2, un servidor puede negociar RSA sin intercambio Diffie-Hellman, lo que significa que un atacante que obtenga la clave privada del servidor puede descifrar todas las comunicaciones pasadas. Con TLS 1.3, cada sesión usa claves efímeras: aunque la clave privada se filtre, las sesiones pasadas siguen protegidas.
Cipher suites recomendadas en 2026
Para SMTP, configura tu servidor con estas cipher suites, en este orden de preferencia:
TLS 1.3 (no se necesita configuración, las 5 suites son todas seguras):
TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256TLS_AES_128_GCM_SHA256
TLS 1.2 (restringir a suites con forward secrecy):
ECDHE-ECDSA-AES256-GCM-SHA384ECDHE-RSA-AES256-GCM-SHA384ECDHE-ECDSA-CHACHA20-POLY1305ECDHE-RSA-CHACHA20-POLY1305ECDHE-ECDSA-AES128-GCM-SHA256ECDHE-RSA-AES128-GCM-SHA256
Cipher suites a prohibir: todo lo que contenga RC4, DES, 3DES, MD5, NULL, EXPORT, o RSA sin ECDHE/DHE (sin forward secrecy).
Las vulnerabilidades de STARTTLS y cómo protegerse
STARTTLS es el mecanismo de cifrado más extendido para las conexiones SMTP entre servidores (puerto 25). Pero su diseño oportunista introduce vulnerabilidades explotables.
El ataque downgrade STARTTLS
Cuando un cliente SMTP se conecta a un servidor en el puerto 25, envía EHLO y espera la lista de extensiones. Si el servidor anuncia 250-STARTTLS, el cliente sabe que puede cambiar a TLS. El problema: este intercambio se hace en texto plano.
Un atacante posicionado entre el cliente y el servidor (man-in-the-middle) puede modificar la respuesta EHLO para eliminar la línea 250-STARTTLS. El cliente, al no ver la extensión STARTTLS, continúa en texto plano. El atacante puede entonces leer y modificar todos los emails en tránsito.
# Respuesta legítima del servidor
250-mx1.captaindns.com
250-STARTTLS <-- el atacante elimina esta línea
250 OK
# Lo que ve el cliente tras el ataque
250-mx1.captaindns.com
250 OK <-- sin STARTTLS, conexión en texto plano
El ataque STRIPTLS
STRIPTLS es una variante más sofisticada. En lugar de eliminar el anuncio STARTTLS del servidor, el atacante intercepta el comando STARTTLS enviado por el cliente y devuelve un falso error (por ejemplo 454 TLS not available). El cliente abandona TLS y continúa en texto plano, creyendo que se trata de un problema temporal.
Estos dos ataques están documentados y se han observado a escala nacional. En 2014, investigadores demostraron que varios países practicaban el STRIPTLS en las conexiones SMTP internacionales.
MTA-STS: forzar TLS en los emails entrantes
MTA-STS (Mail Transfer Agent Strict Transport Security, RFC 8461) es la respuesta del IETF a los ataques downgrade en SMTP. El principio: el dominio destinatario publica una política que dice "todos los servidores que me envían emails deben usar TLS con un certificado válido".
Cómo funciona:
- El dominio
captaindns.compublica un registro DNS TXT_mta-sts.captaindns.comcon un identificador de política - El dominio aloja un archivo
https://mta-sts.captaindns.com/.well-known/mta-sts.txtque contiene la política - El servidor remitente consulta esta política antes de conectarse al MX
- Si la política está en modo
enforce, el servidor remitente rechaza entregar en texto plano
# Registro DNS
_mta-sts.captaindns.com. TXT "v=STSv1; id=20260217"
# Archivo de política (HTTPS obligatorio)
version: STSv1
mode: enforce
mx: mx1.captaindns.com
mx: mx2.captaindns.com
max_age: 604800
Limitación: MTA-STS depende de HTTPS para distribuir la política. Si el atacante bloquea el acceso HTTPS al archivo de política, el servidor remitente no puede recuperar la política y puede volver al texto plano. Es un problema de TOFU (Trust On First Use): la política es segura solo después de la primera recuperación exitosa.
DANE (TLSA): autenticar el certificado vía DNS
DANE (DNS-based Authentication of Named Entities, RFC 7672 para SMTP) resuelve el problema de forma diferente. En lugar de publicar una política vía HTTPS, el dominio publica un registro TLSA en el DNS que contiene la huella del certificado TLS esperado.
# Registro TLSA para el MX (puerto 25)
_25._tcp.mx1.captaindns.com. TLSA 3 1 1 a0b1c2d3e4f5...
Ventajas de DANE:
- No depende de HTTPS (a diferencia de MTA-STS)
- Autentica el certificado del servidor vía DNSSEC (no solo "TLS obligatorio", sino "TLS con este certificado")
- Protege contra ataques downgrade y certificados falsos
Requisito previo: DANE necesita DNSSEC en el dominio. Sin DNSSEC, los registros TLSA no están autenticados y DANE es ineficaz. Es el principal freno a su adopción: solo ~5 % de los dominios usan DNSSEC en 2026.
| Mecanismo | Protege contra downgrade | Autentica el certificado | Requisitos |
|---|---|---|---|
| STARTTLS solo | No | No | Ninguno |
| MTA-STS | Sí (tras primera consulta) | Sí (CA pública) | HTTPS + DNS TXT |
| DANE | Sí | Sí (huella exacta) | DNSSEC + DNS TLSA |
| MTA-STS + DANE | Sí (doble protección) | Sí (CA + huella) | DNSSEC + HTTPS |

Configurar el cifrado TLS en tu servidor SMTP
La teoría está clara. Pasemos a la configuración concreta en los tres MTA más utilizados.
Postfix: activar y reforzar TLS
Postfix es el MTA más desplegado en servidores Linux. La configuración TLS se realiza en main.cf.
TLS entrante (servidor, recepción de emails):
# Activar TLS para conexiones entrantes
smtpd_tls_cert_file = /etc/letsencrypt/live/mx1.captaindns.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mx1.captaindns.com/privkey.pem
smtpd_tls_security_level = may
# Forzar TLS 1.2 como mínimo
smtpd_tls_mandatory_protocols = >=TLSv1.2
smtpd_tls_protocols = >=TLSv1.2
# Cipher suites (TLS 1.2)
smtpd_tls_mandatory_ciphers = high
smtpd_tls_exclude_ciphers = aNULL, MD5, DES, 3DES, RC4
TLS saliente (cliente, envío de emails):
# Activar TLS para conexiones salientes
smtp_tls_security_level = may
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# Forzar TLS 1.2 como mínimo en salida
smtp_tls_mandatory_protocols = >=TLSv1.2
smtp_tls_protocols = >=TLSv1.2
# Registrar conexiones TLS (útil para auditoría)
smtp_tls_loglevel = 1
Reforzar aún más: reemplaza smtp_tls_security_level = may por encrypt para rechazar toda conexión en texto plano en salida. Atención: algunos servidores pequeños no tienen TLS, tus emails hacia esos servidores serán bloqueados. Usa dane si DNSSEC está disponible.
Valor security_level | Comportamiento |
|---|---|
none | Sin TLS (no recomendado) |
may | TLS oportunista (por defecto, acepta texto plano) |
encrypt | TLS obligatorio (rechaza texto plano) |
dane | TLS + verificación DANE vía DNSSEC |
verify | TLS + verificación del hostname del certificado |
Exim: configuración TLS
Exim usa una configuración modular. Las directivas TLS se encuentran en el bloque principal.
# Certificado y clave
tls_certificate = /etc/letsencrypt/live/mx1.captaindns.com/fullchain.pem
tls_privatekey = /etc/letsencrypt/live/mx1.captaindns.com/privkey.pem
# Anunciar STARTTLS
tls_advertise_hosts = *
# Forzar TLS 1.2 como mínimo
openssl_options = +no_sslv2 +no_sslv3 +no_tlsv1 +no_tlsv1_1
# Exigir TLS para conexiones salientes (opcional)
tls_require_ciphers = ECDHE-ECDSA-AES256-GCM-SHA384:\
ECDHE-RSA-AES256-GCM-SHA384:\
ECDHE-ECDSA-AES128-GCM-SHA256:\
ECDHE-RSA-AES128-GCM-SHA256
Para verificar la configuración: exim -bV muestra las capacidades TLS compiladas.
Microsoft Exchange: imponer TLS
En Exchange (2019+), la configuración TLS se realiza a través de los conectores de recepción y envío.
Conector de recepción (emails entrantes):
# Forzar TLS en el conector de recepción
Set-ReceiveConnector "Default Frontend" -RequireTLS $true
# Desactivar protocolos obsoletos (vía registro de Windows)
# HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
# Desactivar SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1
Conector de envío (emails salientes hacia un socio específico):
# Crear un conector de envío con TLS obligatorio
New-SendConnector -Name "Hacia captaindns.com (TLS)" `
-AddressSpaces "captaindns.com" `
-RequireTLS $true `
-TlsAuthLevel DomainValidation
Nota: RequireTLS $true en un conector de envío significa que Exchange rechaza enviar en texto plano hacia ese destino. Úsalo para los dominios socios que soportan TLS, no para un conector catch-all (algunos mensajes se bloquearían).
Verificar el cifrado de tus emails
Configurar TLS no basta: hay que verificar que el cifrado funciona efectivamente.
Desde Gmail: indicador de cifrado
Gmail muestra un candado en el encabezado de los emails. Un candado gris significa que el email se transmitió por TLS (estándar). Un candado rojo con un signo de exclamación significa que el email no fue cifrado en tránsito.
Para los detalles técnicos, haz clic en "Mostrar original" en Gmail: el encabezado Received contiene la versión TLS y el cipher suite utilizados.
Received: from mx1.captaindns.com (mx1.captaindns.com [203.0.113.10])
by mx.google.com with ESMTPS id abc123
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384)
En línea de comandos: openssl s_client
Para probar el cifrado de un servidor MX desde una terminal:
# Prueba STARTTLS en el puerto 25
openssl s_client -connect mx1.captaindns.com:25 -starttls smtp \
-servername mx1.captaindns.com 2>/dev/null | \
grep -E "Protocol|Cipher|Verify"
# Resultado esperado
Protocol : TLSv1.3
Cipher : TLS_AES_256_GCM_SHA384
Verify return code: 0 (ok)
Si Protocol muestra TLSv1 o TLSv1.1, tu servidor usa un protocolo obsoleto. Si Verify return code es diferente de 0, el certificado tiene un problema.
Con la herramienta CaptainDNS
El SMTP/MX Connectivity Tester de CaptainDNS prueba automáticamente todos los MX de un dominio y verifica para cada uno: la versión TLS negociada, el cipher suite, la validez del certificado (expiración, SAN, cadena de confianza) y el soporte STARTTLS. El resultado incluye un scoring por servidor MX con códigos de diagnóstico explícitos.
🎯 Plan de acción recomendado
- Audita tu configuración actual: verifica la versión TLS y las cipher suites de cada MX con
openssl s_cliento el SMTP/MX Connectivity Tester - Desactiva SSL 3.0, TLS 1.0 y TLS 1.1: estos protocolos son obsoletos (RFC 8996) y vulnerables. TLS 1.2 es el mínimo, TLS 1.3 es lo recomendado
- Restringe las cipher suites: elimina RC4, DES, 3DES, MD5 y las suites sin forward secrecy (ECDHE/DHE obligatorio)
- Despliega MTA-STS: publica una política
enforcepara proteger tus emails entrantes contra ataques downgrade - Activa DANE si DNSSEC está disponible: publica registros TLSA para autenticar los certificados de tus MX vía DNS
FAQ
¿Cuál es la diferencia entre STARTTLS y SSL/TLS?
SSL y TLS son protocolos de cifrado (SSL es el antecesor obsoleto de TLS). STARTTLS no es ni SSL ni TLS: es un comando SMTP que activa el cifrado TLS en una conexión inicialmente en texto plano. Después de STARTTLS, la conexión usa TLS (1.2 o 1.3), pero la fase inicial antes del comando sigue siendo vulnerable a ataques downgrade.
¿Hay que seguir usando SSL para SMTP?
No. SSL 2.0 y 3.0 están prohibidos por las RFC 6176 y 7568. TLS 1.0 y 1.1 son obsoletos desde la RFC 8996. Todo servidor SMTP debe usar TLS 1.2 como mínimo, y TLS 1.3 preferiblemente. Si un proveedor menciona "SSL", en realidad se refiere a TLS.
¿Cómo forzar el cifrado TLS en los emails salientes?
En Postfix, configura smtp_tls_security_level = encrypt en main.cf para rechazar toda conexión en texto plano en salida. En Exchange, activa RequireTLS en el conector de envío. Atención: los emails hacia servidores sin TLS serán bloqueados. Usa el modo dane o may si necesitas entregar a todos los destinatarios.
¿Qué es DANE y cómo protege SMTP?
DANE (DNS-based Authentication of Named Entities) permite publicar la huella del certificado TLS de un servidor MX en un registro DNS TLSA. El servidor remitente verifica que el certificado presentado corresponde a la huella publicada, lo que impide los ataques de certificados falsos y los downgrades. DANE requiere DNSSEC para garantizar la autenticidad de los registros DNS.
¿Cómo verificar si mis emails se transmiten por TLS?
Tres métodos: (1) en Gmail, haz clic en "Mostrar original" y busca los encabezados Received con la versión TLS, (2) en línea de comandos, usa openssl s_client -connect mx:25 -starttls smtp para probar la negociación, (3) usa el SMTP/MX Connectivity Tester de CaptainDNS para un diagnóstico automatizado de todos tus MX.
¿Qué cipher suites usar para SMTP en 2026?
Para TLS 1.3: todas las suites son seguras (AES-256-GCM, AES-128-GCM, CHACHA20-POLY1305). Para TLS 1.2: usa únicamente las suites ECDHE con AES-GCM (forward secrecy obligatorio). Prohíbe RC4, DES, 3DES, MD5, las suites NULL, EXPORT y los intercambios RSA sin ECDHE/DHE.
¿Cuál es la diferencia entre MTA-STS y DANE?
MTA-STS publica una política TLS vía HTTPS (archivo .well-known/mta-sts.txt) que indica que el dominio exige TLS. DANE publica la huella del certificado vía un registro DNS TLSA asegurado por DNSSEC. MTA-STS es más fácil de desplegar (no necesita DNSSEC) pero sufre el problema TOFU (Trust On First Use). DANE ofrece una autenticación más fuerte pero requiere DNSSEC. Ambos pueden desplegarse simultáneamente.
Descarga las tablas comparativas
Los asistentes pueden reutilizar las cifras accediendo a los archivos JSON o CSV.
📖 Glosario
- TLS (Transport Layer Security): Protocolo de cifrado de comunicaciones de red. Sucesor de SSL, versiones actuales: TLS 1.2 y TLS 1.3 (RFC 8446).
- STARTTLS: Comando SMTP (RFC 3207) que solicita la actualización de una conexión en texto plano a TLS. No es un protocolo de cifrado en sí.
- Implicit TLS: Modo de conexión donde TLS se establece desde el primer byte, sin fase en texto plano. Usado en el puerto 465 (SMTP) y el puerto 443 (HTTPS).
- Forward secrecy: Propiedad criptográfica que garantiza que el compromiso de una clave privada no permite descifrar las sesiones pasadas. Asegurada por los intercambios de claves ECDHE/DHE.
- Cipher suite: Combinación de algoritmos utilizados para una sesión TLS: intercambio de claves (ECDHE), autenticación (RSA/ECDSA), cifrado (AES-GCM) y hash (SHA384).
- DANE: DNS-based Authentication of Named Entities (RFC 7672 para SMTP). Permite autenticar el certificado TLS de un servidor mediante un registro DNS TLSA asegurado por DNSSEC.
- MTA-STS: Mail Transfer Agent Strict Transport Security (RFC 8461). Política publicada vía HTTPS que obliga a los servidores remitentes a usar TLS con un certificado válido.
- Ataque downgrade: Ataque de red que fuerza una conexión a utilizar un protocolo menos seguro, típicamente eliminando el anuncio STARTTLS o modificando la negociación TLS.
- TOFU: Trust On First Use. Modelo de seguridad donde la confianza se establece durante la primera interacción. MTA-STS sufre este problema: la primera recuperación de la política es vulnerable.
Verifica el cifrado TLS de tus servidores MX: Usa nuestro SMTP/MX Connectivity Tester para probar la versión TLS, las cipher suites y la validez del certificado de cada MX, en pocos segundos.
📚 Guías de SMTP y conectividad email relacionadas
- Los puertos SMTP explicados: 25, 465, 587, 2525: rol, cifrado y casos de uso de cada puerto SMTP
- Cómo probar la conectividad SMTP de tus servidores MX: guía paso a paso con telnet y openssl
- Puerto 25 bloqueado: diagnóstico y soluciones por proveedor de hosting (próximamente)


