# ¿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.

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.

```javascript title="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.**

```bash
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?](/es/docs/kb/smtp-535-authentication-failed/). Si no puedes conectarte en absoluto, consulta [¿Por qué se agota el tiempo de espera de mi conexión SMTP?](/es/docs/kb/smtp-connection-timeout-port-25/).

## ¿Sigues teniendo problemas?

[Contacta con soporte](/contact/) o pregunta en [Discord](https://discord.emailit.com). Incluye el puerto, la biblioteca cliente y su versión, y la salida del comando `openssl s_client`.

---
Fuente: https://emailit.com/es/docs/kb/smtp-tls-errors/
