Saltar al contenido
Docs

Solución de problemas

¿Por qué recibo errores de TLS al conectarme a SMTP?

Soluciona los errores de negociación SSL y TLS con smtp.emailit.com, como «wrong version number», los nombres de certificado que no coinciden y los fallos de STARTTLS.

Actualizado el 1 oct 2026

Este artículo cubre los errores que se producen mientras tu cliente y el SMTP relay de Emailit establecen el cifrado. Casi siempre se deben a que el puerto no coincide con el modo TLS configurado en tu cliente.

Síntomas

  • SSL routines:ssl3_get_record:wrong version number o ERR_SSL_WRONG_VERSION_NUMBER
  • Hostname/IP does not match certificate's altnames o certificate verify failed
  • STARTTLS failed, Greeting never received o la conexión se queda colgada después de conectar
  • unsupported protocol o no protocols available

Causa

Emailit usa dos modos TLS, y cada puerto espera uno de ellos:

Puerto Modo Configuración habitual del cliente
587, 2525, 2587, 25 STARTTLS: la sesión empieza en texto plano y pasa a cifrado Nodemailer secure: false, PHPMailer ENCRYPTION_STARTTLS, «TLS» en la mayoría de las interfaces
465 TLS implícito: cifrado desde el primer byte Nodemailer secure: true, PHPMailer ENCRYPTION_SMTPS, «SSL» en la mayoría de las interfaces

Las causas habituales son:

  • TLS implícito en un puerto STARTTLS, por ejemplo secure: true con el puerto 587. El cliente espera una negociación TLS pero recibe un saludo en texto plano, lo que produce «wrong version number».
  • STARTTLS en el puerto 465. El cliente espera un saludo que el servidor nunca envía en texto claro, así que la conexión se queda colgada.
  • Conectarse por dirección IP o a través de tu propio CNAME. El certificado se emite para smtp.emailit.com, así que cualquier otro nombre de host no supera la verificación.
  • Una pila TLS antigua. El relay negocia TLS 1.2 o TLS 1.3. Los clientes limitados a TLS 1.0 o 1.1, o con un paquete de certificados de CA obsoleto, no pueden completar la negociación.
  • Inspección del tráfico. Algunos antivirus y proxies corporativos interceptan SMTP y presentan su propio certificado.

Solución

  1. Haz que el puerto coincida con el modo. Usa el puerto 587 con STARTTLS, o el puerto 465 con TLS implícito. No los mezcles.

    mailer.js
    const transporter = nodemailer.createTransport({
      host: 'smtp.emailit.com',
      port: 587,
      secure: false,     // STARTTLS on 587; set true only for port 465
      requireTLS: true,  // refuse to send if the upgrade fails
      auth: { user: 'emailit', pass: process.env.EMAILIT_API_KEY },
    });
  2. Usa el nombre de host exacto. Configura el host como smtp.emailit.com. No uses una dirección IP ni un alias.

  3. Exige cifrado en tu cliente. STARTTLS se ofrece en todos los puertos de texto plano, pero el relay no lo impone. Activa la opción «require TLS» de tu cliente para que las credenciales nunca se envíen sin cifrar.

  4. Prueba la negociación desde la máquina que envía.

    Terminal
    openssl s_client -starttls smtp -connect smtp.emailit.com:587 -servername smtp.emailit.com
    openssl s_client -connect smtp.emailit.com:465 -servername smtp.emailit.com

    Un resultado correcto muestra subject=CN=smtp.emailit.com y Verify return code: 0 (ok). Un subject distinto significa que algo en tu red está interceptando la conexión.

  5. Actualiza los entornos de ejecución antiguos. Actualiza el runtime del lenguaje o OpenSSL, y los certificados de CA del sistema, si tu cliente no puede negociar TLS 1.2.

Si la negociación funciona pero el inicio de sesión falla, consulta ¿Por qué SMTP devuelve 535 Authentication failed?. Si no puedes conectarte en absoluto, consulta ¿Por qué se agota el tiempo de espera de mi conexión SMTP?.

¿Sigues teniendo problemas?

Contacta con soporte o pregunta en Discord. Incluye el puerto, la biblioteca cliente y su versión, y la salida del comando openssl s_client.

¿Te ha resultado útil esta página?

Gracias por tu opinión.

Gracias. Leemos todos los mensajes.