SMTP TLS hardening · MTA-STS RFC 8461 + DANE RFC 7672 + TLS-RPT RFC 8460

Cerramos el último vector de downgrade attack que tu DMARC no cubre.

DMARC valida que el email recibido sea auténtico. No garantiza que viajó cifrado en tránsito. STARTTLS opportunistic es el default del 60% de los servidores SMTP B2B en producción: si el cifrado falla, degrada a plaintext sin alertar. Un MITM con visibilidad en la red puede inducir downgrade y leer el contenido. MTA-STS cierra ese vector publicando policy en HTTPS que obliga TLS verificado o rebota. DANE lo refuerza con DNSSEC. TLS-RPT da visibilidad de fallos. Doce dominios con MTA-STS enforce live operando.

60% B2B sigue vulnerable
12dominios live enforce
2-6semanas deployment
3RFCs cubiertos
El problema que MTA-STS resuelve

STARTTLS opportunistic: el vector que el 60% deja abierto.

STARTTLS es el comando que un servidor SMTP usa para negociar cifrado TLS durante una sesión iniciada en plaintext. El problema operacional es el comportamiento default: si la negociación falla por cualquier razón (certificado expirado, MITM stripping del comando, cipher mismatch), la mayoría de los MTAs degradan a plaintext sin alertar al operador. Esto es el opportunistic encryption: cifrado cuando se puede, plaintext cuando no. Para DMARC compliance no importa, el email igual se autentica. Para confidencialidad de contenido importa mucho.

El escenario de ataque es real y documentado: un atacante con position en la red entre los dos MTAs (ISP comprometido, BGP hijacking, MITM en datacenter) intercepta la conexión SMTP, strippea el comando STARTTLS de la respuesta del receiver, y fuerza la sesión a continuar en plaintext. El sender no tiene forma de saber que la negociación TLS fue saboteada porque no hay policy que le diga que TLS era obligatorio.

Downgrade attack en STARTTLS · escenario real

Vista comparada de qué pasa con y sin MTA-STS publicada cuando un atacante en la red intermedia intenta stripear el cifrado.

Sin MTA-STS

Vector de ataque abierto

El receiver acepta STARTTLS pero también plaintext. El atacante con MITM strippea el comando y el sender continúa en clear.

  • sender.com → receiver.com :25
  • HELO sender.com
  • 250-STARTTLS (← atacante strippea)
  • 250 OK (sin STARTTLS)
  • MAIL FROM:<...> (plaintext)
  • DATA <contenido en clear>
  • Atacante captura el contenido
Con MTA-STS enforce

Vector cerrado

El sender consulta la policy MTA-STS antes de enviar. Si no negocia TLS válido, no entrega.

  • sender.com → DNS query _mta-sts.receiver.com
  • sender.com → HTTPS fetch policy file
  • Policy: mode=enforce, TLS obligatorio
  • sender.com → receiver.com :25 + STARTTLS
  • Si STARTTLS strippeado → bounce
  • Si cert no valida → bounce
  • Si cipher down → bounce + TLS-RPT

El cierre del vector no es teórico. Mailgun publicó en 2019 análisis de tráfico mostrando que cerca del 1.2% de sesiones SMTP outbound habrían sido cifradas si el peer hubiera respetado STARTTLS y terminaron en plaintext. Google reportó en su Transparency Report que el porcentaje de email recibido cifrado pasó de 33% en 2014 a 92% en 2024, pero queda un 8% en clear, mayoritariamente con dominios que no implementan MTA-STS. Para una operación enviando 5M mensajes/mes ese 8% son 400.000 mensajes mensuales potencialmente vulnerables.

Los tres protocolos · qué hace cada uno

MTA-STS, DANE y TLS-RPT cubren tres aspectos distintos.

No son competencia entre sí. MTA-STS publica policy de cifrado obligatorio, DANE vincula el certificado al DNS firmado con DNSSEC, TLS-RPT entrega reporting de fallos. Operacionalmente los tres se implementan en orden ascendente de complejidad.

MTA-STS

RFC 8461 (2018) · IETF

Publica policy en HTTPS sobre well-known URI con modo testing o enforce. Los senders MTA-STS-aware consultan la policy antes de entregar.

  • MecanismoTXT record + HTTPS policy file
  • Modosnone / testing / enforce
  • Requiere DNSSECNo
  • Adopción sendersGmail, Outlook, Yahoo, Apple desde 2019
  • Setup típico1-2 semanas
  • Punto de fallaHTTPS hosting (mitigable con CDN)

DANE-TLSA

RFC 7672 + 6698 (2015) · IETF

Publica hash del certificado TLS del MX directamente en DNS firmado con DNSSEC. Defense-in-depth sobre MTA-STS, criptográficamente más fuerte.

  • MecanismoTLSA record en DNS firmado
  • Requiere DNSSECSí · KSK + ZSK
  • Adopción sendersGmail, Comcast, GMX, dominios alemanes
  • Setup típico3-4 semanas
  • Punto de fallaDNSSEC expiration · rotación claves
  • Overhead operacionalAlto · rotación regular

TLS-RPT

RFC 8460 (2018) · IETF

Endpoint receptor de reports JSON agregados con fallos TLS detectados por senders externos. Visibilidad operacional sobre MTA-STS y DANE.

  • MecanismoTXT _smtp._tls + RUA endpoint
  • OutputReports JSON agregados 24h
  • RequiereMTA-STS o DANE publicado
  • Volumen típico10-50 reports/día B2B medio
  • Setup típicoIncluido con MTA-STS
  • BeneficioVisibilidad de fallos sin guess

Plan operacional típico: fase 1 MTA-STS + TLS-RPT (cierra el vector principal con menor overhead y entrega visibilidad), fase 2 DANE-TLSA opcional cuando compliance lo exige o cuando la criticidad del email transaccional justifica defense-in-depth. Para 95% de operaciones B2B Latinoamérica MTA-STS estándar es suficiente. Para banca, healthcare con HIPAA, gobierno con clasificación, vale la pena el overhead DNSSEC.

Mode testing vs mode enforce

Por qué siempre testing primero, enforce después.

Activar MTA-STS en mode enforce sin pasar por testing es una receta para romper email legítimo. El mode testing existe específicamente para observar 30 días el comportamiento de senders externos contra tu policy, recolectar reports TLS-RPT, identificar dominios con TLS roto que envían legítimamente, y resolver esos casos antes de bloquear.

Mode: testing

Fase 1 · Observación 30 días

Policy publicada, senders MTA-STS-aware la consultan, pero los fallos TLS no rebotan el mensaje. Solo se reportan vía TLS-RPT.

  • Mensajes entregan normalmente
  • Fallos TLS reportados vía TLS-RPT
  • Dashboard EMP parsea reports por dominio
  • 30 días observación mínima
  • Identificar senders legítimos con TLS roto
  • Coordinar con esos senders antes de enforce
Mode: enforce

Fase 2 · Bloqueo activo

Policy en enforce. Senders MTA-STS-aware rebotan los mensajes que no pueden negociar TLS válido contra tu MX.

  • STARTTLS strippeado por MITM → bounce
  • Certificado expirado en MX → bounce
  • Cipher mismatch → bounce
  • TLS-RPT continúa reportando
  • Dashboard monitoreo continuo
  • Posible degradación temporal a testing si emergencia

El mode enforce no es punto de no retorno: si después del go-live aparece un partner crítico con TLS roto que envía a tu dominio (común en healthcare con sistemas legacy, en banca con peers regionales), se puede degradar temporalmente a testing mientras se coordina la fix con el partner. La degradación se propaga al cache de senders en horas según el TTL del DNS y el max_age de la policy. EMP gestiona este escenario dentro del soporte managed sin costo adicional.

Lo que se publica · DNS + HTTPS

Registros reales en producción.

Estos son los registros DNS y el archivo HTTPS que publica EMP al cerrar el deployment. La separación TXT con versión del archivo HTTPS con la policy completa permite rotación atómica sin downtime: nuevo archivo, bump del id en TXT, propagación rápida.

DNS · TXT records publicados _mta-sts + _smtp._tls · TTL 3600
; --- MTA-STS · TXT pointer con version id ---
_mta-sts.tudominio.com. 3600 IN TXT "v=STSv1;
   id=20260512143000Z"

; --- TLS-RPT · endpoint para reports agregados ---
_smtp._tls.tudominio.com. 3600 IN TXT "v=TLSRPTv1;
   rua=mailto:[email protected],
   https://tlsrpt-collect.emailmarketingpanama.com/v1/<client_id>"

; --- DANE-TLSA · solo si DNSSEC habilitado ---
_25._tcp.mx1.tudominio.com. 3600 IN TLSA 3 1 1
   e3b0c44298fc1c149afbf4c8996fb924
   27ae41e4649b934ca495991b7852b855
HTTPS · .well-known/mta-sts.txt Content-Type: text/plain · Cache-Control: max-age=86400
# Archivo servido en:
# https://mta-sts.tudominio.com/.well-known/mta-sts.txt

version: STSv1
mode: enforce
mx: mx1.tudominio.com
mx: mx2.tudominio.com
mx: *.fallback.tudominio.com
max_age: 604800     # 7 días cache para senders

Notas operacionales sobre los registros. El id en el TXT debe ser único por cada cambio de policy: formato típico timestamp ISO 8601 sin separadores. Cuando se modifica la policy, se sube el archivo nuevo a HTTPS, se bump del id en TXT, y los senders refrescan el cache al detectar el cambio en el TXT. El max_age de 604.800 segundos (7 días) es el balance recomendado: lo suficientemente alto para que un outage HTTPS corto no rompa entregas, lo suficientemente bajo para que cambios de policy se propaguen razonablemente rápido.

TLS-RPT dashboard · mockup real

Lo que vas a ver después del deployment.

Dashboard que parsea los reports JSON agregados de los senders MTA-STS-aware y los presenta por dominio sender, mailbox provider, tipo de fallo, evolución temporal. Es la herramienta operacional principal post-go-live.

TLS-RPT · Últimas 24 horas

tudominio.com · 12 reports recibidos · 4 senders únicos

Healthy
Sessions exitosas
2,847
Sessions con TLS fail
3
Success rate
99.89%
Policy fetch errors
0
Sender domain MX Sessions Fail type Status
google.com mx1.tudominio.com 1,524 OK
outlook.com mx1.tudominio.com 892 OK
yahoo.com mx2.tudominio.com 431 OK
partner-legacy.com mx1.tudominio.com 3 certificate-not-trusted Investigate

El dashboard EMP entrega view filtrable por: rango temporal (24h, 7d, 30d, custom), sender domain (búsqueda), tipo de fallo (certificate-expired, certificate-not-trusted, sts-policy-fetch-error, etc.), MX hostname involucrado. La integración SIEM (Splunk, Datadog, Elastic) está disponible en el tier Enterprise para correlacionar fallos TLS con otros eventos de security operations.

Plan de deployment · 4 fases

Cómo ejecutamos el rollout a producción.

Fase 1
Semana 1

Pre-check + audit

Validación que DMARC está en enforcement, que los MX tienen certificados TLS válidos, que el HTTPS hosting está disponible.

Fase 2
Semana 1-2

Setup mode testing

Policy publicada en HTTPS bajo well-known URI, TXT records publicados, TLS-RPT endpoint activo recibiendo reports.

Fase 3
Semana 2-6

Observación 30 días

TLS-RPT dashboard activo. Identificación de senders legítimos con TLS roto. Coordinación con partners afectados antes de enforce.

Fase 4
Semana 6+

Go-live enforce

Bump del archivo HTTPS de testing a enforce. Bump del id en TXT record. Monitoreo continuo, alertas configuradas.

Pricing transparente

Cuatro tiers según complejidad técnica.

El precio incluye setup técnico completo, hosting HTTPS de la policy bajo CDN propia, TLS-RPT collection endpoint, dashboard y soporte post-deployment. Renovación anual de certificados o DNSSEC keys se gestiona dentro del soporte managed.

MTA-STS Testing

Mode testing · 30 días observación · TLS-RPT setup.

$1,200 USD
  • Policy publicada mode=testing
  • TXT + HTTPS hosting
  • TLS-RPT receiver setup
  • Dashboard básico 30 días
  • Sin enforce hasta validar
  • Entrega 1-2 semanas
Solicitar Testing

DANE + DNSSEC

DNSSEC chain + DANE-TLSA + MTA-STS · compliance estricto.

$3,800 USD
  • DNSSEC setup con registrar
  • KSK + ZSK rotation procedure
  • DANE-TLSA records publicados
  • MTA-STS complementario
  • DKIM rotation alignment
  • Entrega 3-4 semanas
Solicitar DANE

Full TLS Enterprise

Multi-domain hasta 10 dominios · SIEM integration.

$7,500+ USD
  • MTA-STS enforce + DANE-TLSA
  • Hasta 10 dominios
  • TLS-RPT dashboard custom
  • SIEM integration (Splunk/DD/Elastic)
  • 180 días post-deployment support
  • Trimestral compliance review
Hablar Enterprise
Dudas reales del CISO

Lo que pregunta el CISO antes de aprobar enforce.

"¿Por qué necesito MTA-STS si ya tengo DMARC en enforcement?"

DMARC valida que el email recibido sea auténtico (autenticación del sender), pero no garantiza que el email haya viajado cifrado en tránsito SMTP. STARTTLS opportunistic es el default del 60% de los servidores SMTP en producción: si el cifrado falla, el servidor degrada a plaintext sin alertar. MTA-STS cierra ese vector publicando policy via HTTPS que obliga al sender a usar TLS verificado o rebotar el mensaje. Sin MTA-STS, un atacante con MITM en la red entre los dos MTAs puede inducir downgrade a plaintext y leer el contenido. Operativamente: DMARC protege contra spoofing, MTA-STS protege contra interception en tránsito. Son complementarios, no excluyentes.

"¿Qué pasa si activo enforce y un destinatario no tiene TLS configurado correctamente?"

El mensaje no se entrega. Ese es exactamente el comportamiento esperado del modo enforce: prefiere fallar a leak en plaintext. Esta es la razón por la que el deployment se hace en dos fases. Fase 1 (mode testing, 30 días mínimo): la policy se publica con mode=testing, los senders que la consultan emiten TLS-RPT reports de los fallos pero entregan el mensaje igual. Fase 2 (mode enforce): después de 30 días de TLS-RPT limpio sin fallos, se promueve a mode=enforce. Esto evita que el cliente descubra problemas en producción. Si después de enforce aparece un dominio destinatario problemático conocido (legacy systems, healthcare partners con TLS roto), se puede crear una excepción específica en la policy o degradar temporal a testing durante la coordinación con el partner.

"DANE requiere DNSSEC. ¿Vale la pena la complejidad?"

Depende del riesgo. DNSSEC firma criptográficamente la zona DNS para que los resolvers validen que las respuestas no fueron tampered en tránsito. Sin DNSSEC, MTA-STS depende de HTTPS para servir la policy, que tiene su propio modelo de seguridad robusto pero distinto. Con DANE el certificado TLS está vinculado directamente al DNS firmado, eliminando dependencia de CAs externas. Operacionalmente: DNSSEC agrega complejidad de rotación de claves (KSK rollover anual, ZSK más frecuente) y un punto adicional de fallo si la firma expira. Recomendación EMP: si tu compliance regulatorio (PCI-DSS Level 1, HIPAA con BAA, GDPR Art. 32 con DPA exigente) menciona DNSSEC o DANE explícitamente, vale la pena. Si no, MTA-STS estándar cubre 95% del riesgo con 30% del overhead operacional.

"¿MTA-STS protege todo el email saliente o solo el que llega a mi dominio?"

MTA-STS publicado por mi dominio protege únicamente el email entrante hacia mi dominio. Es decir, los senders externos que envían a tu-dominio.com consultan tu policy y respetan el enforce. No protege el email saliente desde tu dominio: para eso necesitás que los dominios destino (gmail.com, outlook.com, dominio-de-tu-cliente.com) tengan MTA-STS publicada y vos respetes la policy de ellos. Gmail, Outlook, Yahoo, Apple, Fastmail tienen MTA-STS publicada en modo enforce desde 2019-2021. Para que tu MTA outbound respete las policies remotas necesita ser MTA-STS-aware. PowerMTA y KumoMTA lo soportan nativamente; Postfix y Exim requieren plugins externos.

"¿Qué pasa si el HTTPS donde está hosteada mi policy se cae?"

Los senders MTA cachean la policy por la duración declarada en el campo max_age (típicamente 1-2 semanas). Si el HTTPS cae durante un período corto los senders usan el cache. Si el HTTPS cae durante un período mayor que el cache, los senders verán failure to fetch policy y emitirán TLS-RPT con sts-policy-fetch-error pero continuarán entregando con la política previa cacheada hasta que expire. Recomendación: alta disponibilidad del HTTPS (CDN multi-región, healthchecks) y monitoreo del endpoint con alerta proactiva. El TLS-RPT dashboard EMP detecta fetch errors y notifica antes de que el cache expire.

"¿El TLS-RPT puede revelar información sensible de mi operación?"

Los reports contienen información operacional, no contenido de mensajes. Específicamente: identidad del sender domain (ej. google.com, outlook.com), número de sessions exitosas y fallidas, tipo de fallo TLS, MX hostname tuyo involucrado, contadores agregados. No contienen: direcciones email específicas de remitentes o destinatarios, contenido o subject de mensajes, message-IDs específicos, IPs individuales de senders. Privacidad: los reports son agregados sobre ventanas de 24 horas, no por mensaje. Aun así EMP firma DPA específico para el procesamiento de TLS-RPT data porque técnicamente contiene metadata operacional del email del cliente.

Preguntas técnicas frecuentes

Lo que sale en la reunión técnica.

¿Cuál es la diferencia entre MTA-STS y DANE?

Dos approaches diferentes al mismo problema.

  • MTA-STS (RFC 8461): publica la policy de cifrado obligatorio en HTTPS sobre un well-known URI (.well-known/mta-sts.txt) y referencia el dominio policy via TXT record con versión. Funciona sobre cualquier DNS, no requiere DNSSEC, deployment rápido.
  • DANE-TLSA (RFC 7672): publica el hash del certificado TLS directamente en DNS como registro TLSA, requiere DNSSEC en la zona del dominio receptor, deployment más complejo pero criptográficamente más fuerte (sin punto único de falla en HTTPS hosting).

En la práctica: 95% de los dominios B2B implementan solo MTA-STS por simplicidad. Operaciones reguladas con compliance estricto (banca, healthcare, government) implementan ambos en defense-in-depth.

¿Cuánto tiempo dura el deployment completo?

Plazo varía por tier:

  • MTA-STS Testing: 1-2 semanas (setup técnico + 30 días observación pasiva no se cuentan al plazo)
  • MTA-STS Enforce: 2-3 semanas (incluye los 30 días testing antes de enforce)
  • DANE + DNSSEC: 3-4 semanas (DNSSEC chain con registrar puede tomar 5-10 días hábiles según registrar; algunos registradores legacy de Panamá no soportan DNSSEC y requieren migración del dominio a Cloudflare/Route53/etc. para habilitar la firma)
  • Full TLS Hardening Enterprise multi-domain: 4-8 semanas según número de dominios

Los plazos incluyen testing TLS contra el top 50 de dominios destino habituales de tu base receptora antes de cualquier enforce.

¿Qué información llega en los TLS-RPT reports?

Reports JSON agregados de 24 horas enviados por los senders MTA al endpoint que publicás en el registro DNS _smtp._tls. Contienen:

  • Identidad del sender domain
  • Identidad del policy domain (vos)
  • Número de sessions exitosas con TLS
  • Número de sessions con TLS fallido
  • Tipo de fallo (certificate-expired, certificate-not-trusted, validation-failure, sts-policy-fetch-error, etc.)
  • MX hostname involucrado
  • IP destination
  • Contadores agregados

EMP entrega dashboard que parsea estos reports y los presenta por dominio destino, mailbox provider, tipo de fallo, evolución temporal. Volumen típico: 10-50 reports diarios para una operación B2B media.

¿Qué senders MTA-STS-aware están adoptados hoy?

Lista de senders que respetan MTA-STS publicada (envían a tu dominio respetando enforce):

  • Google (Gmail, Workspace): desde 2019, mode enforce respetado
  • Microsoft (Outlook, M365, Hotmail): desde 2020
  • Yahoo Mail: desde 2019
  • Apple iCloud Mail: desde 2021
  • Fastmail: desde 2019, pionero del estándar
  • Comcast: desde 2020
  • GMX, Web.de: desde 2020 (mercado alemán)
  • Proton Mail: desde 2022

Cobertura efectiva: alrededor del 80% del email B2C global y 60% del email B2B (Microsoft 365 cubre la mayoría del B2B corporate). Senders que no respetan MTA-STS: mayoritariamente operadores legacy regionales, on-premise Exchange viejo, sistemas custom de banca/government que no han actualizado.

¿Qué MTAs propios soportan ser MTA-STS-aware en outbound?

Para que tu MTA outbound respete las policies MTA-STS publicadas por dominios destino:

  • PowerMTA 5.x+: soporte nativo desde 2020
  • KumoMTA: soporte nativo desde release inicial
  • Postfix 3.6+: con configuración smtp_tls_policy_maps + plugin externo (Mailfence postfix-mta-sts-resolver)
  • Exim 4.95+: con plugin externo (exim_mta_sts)
  • Halon MTA: soporte nativo
  • OpenSMTPD: soporte parcial vía filters
  • Sendmail: sin soporte nativo, no recomendado para nuevas instalaciones

Para Postfix y Exim el plugin externo es required pero estable. EMP incluye configuración del plugin en el scope del servicio si el cliente usa Postfix/Exim en producción.

¿La rotación de DNSSEC keys rompe DANE?

No, si se hace correctamente. La rotación DNSSEC tiene dos tipos de keys:

  • KSK (Key Signing Key): rotación anual o bianual. Cambio coordinado con el registrar (publicación de DS record). Procedure de double-signing durante la transición.
  • ZSK (Zone Signing Key): rotación más frecuente (3-6 meses). Cambio interno sin coordinación externa, double-signing automático.

Durante la transición ambas keys firman la zona simultáneamente. Los resolvers validan con cualquiera de las dos. La rotación de DKIM keys puede coordinarse con la rotación ZSK para minimizar overhead operacional. EMP gestiona ambas rotaciones automáticamente en el tier DANE + DNSSEC.

¿MTA-STS es compatible con email forwarders?

Sí, con caveats. Los forwarders (redirección automática a otra dirección) funcionan correctamente con MTA-STS siempre que el dominio de destino de la redirección también tenga TLS válido. Si el forwarder reenvía a un dominio con TLS roto, la policy MTA-STS del dominio destino final (no el del forwarder intermedio) determina si el mensaje se entrega.

Caso problemático: forwarders que routen via Microsoft Exchange Online Protection (EOP) o filtros externos pueden tener TLS internal misconfigured. Esos casos aparecen en TLS-RPT como certificate-not-trusted del MX intermedio y se resuelven coordinando con el operador del forwarder. EMP gestiona estos casos en el soporte post-deployment.

¿Compliance regulatorio que exige MTA-STS o DANE?

Marcos regulatorios que mencionan explícitamente cifrado en tránsito SMTP:

  • HIPAA Security Rule: § 164.312(e)(1) exige cifrado en tránsito para PHI. MTA-STS enforce cumple el estándar de "addressable" specification. Cubrir con BAA del provider.
  • GDPR Art. 32: obligación de medidas técnicas apropiadas incluye cifrado en tránsito. MTA-STS demuestra implementación documentable.
  • PCI-DSS Level 1 (req. 4.1): "Use strong cryptography and security protocols". MTA-STS enforce satisface el requisito para SMTP.
  • NIS2 (UE): medidas técnicas obligatorias para entidades esenciales. MTA-STS forma parte del baseline recomendado.
  • BSI TR-03108 (Alemania): exige DANE explícitamente para emails de government. DANE-TLSA mandatory.
  • Ley 81 Panamá Art. 30: "medidas técnicas y organizativas adecuadas" para protección de datos personales. MTA-STS demuestra diligencia.

Para auditorías formales EMP entrega documentación del setup con certificate chain, policy versioning, TLS-RPT historical reports y diagramas técnicos.

Auditoría TLS gratuita. 30 minutos.

Validamos el estado actual de tu STARTTLS, certificados TLS de los MX, soporte MTA-STS publicada en el dominio, presencia de TLS-RPT. Si ya tenés MTA-STS en testing te ayudamos a interpretar los reports y planear el go-live a enforce. Si todavía no implementaste, evaluamos pre-requisitos (DMARC enforcement, HTTPS hosting, DNSSEC capability del registrar) y cotizamos el tier que encaja.

Sin compromiso · 30 minutos · L-V 9-18 GMT-5