Vai al contenuto
Docs

Risoluzione dei problemi

Perché ricevo errori TLS quando mi collego all’SMTP?

Risolvi gli errori di handshake SSL e TLS con smtp.emailit.com, come «wrong version number», nomi del certificato non corrispondenti ed errori STARTTLS.

Aggiornato il 1 ott 2026

Questo articolo tratta gli errori che si verificano mentre il client e l’SMTP relay di Emailit configurano la cifratura. Quasi sempre derivano da una mancata corrispondenza tra la porta e la modalità TLS impostata nel client.

Sintomi

  • 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 oppure la connessione si blocca dopo essersi aperta
  • unsupported protocol o no protocols available

Causa

Emailit usa due modalità TLS, e ogni porta ne prevede una:

Porta Modalità Impostazione tipica del client
587, 2525, 2587, 25 STARTTLS: la sessione parte in chiaro e poi passa alla cifratura Nodemailer secure: false, PHPMailer ENCRYPTION_STARTTLS, «TLS» nella maggior parte delle interfacce
465 TLS implicito: cifrata fin dal primo byte Nodemailer secure: true, PHPMailer ENCRYPTION_SMTPS, «SSL» nella maggior parte delle interfacce

Le cause più comuni sono:

  • TLS implicito su una porta STARTTLS, ad esempio secure: true con la porta 587. Il client si aspetta un handshake TLS ma riceve un saluto in chiaro, e ne risulta «wrong version number».
  • STARTTLS sulla porta 465. Il client attende un saluto che il server non invia mai in chiaro, quindi la connessione si blocca.
  • Connessione tramite indirizzo IP o tramite un tuo CNAME. Il certificato è emesso per smtp.emailit.com, quindi qualsiasi altro nome host non supera la verifica.
  • Uno stack TLS datato. Il relay negozia TLS 1.2 o TLS 1.3. I client limitati a TLS 1.0 o 1.1, o con un bundle di CA obsoleto, non riescono a completare l’handshake.
  • Ispezione del traffico. Alcuni antivirus e proxy aziendali intercettano l’SMTP e presentano un proprio certificato.

Soluzione

  1. Abbina la porta alla modalità. Usa la porta 587 con STARTTLS, oppure la porta 465 con TLS implicito. Non mescolarle.

    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 il nome host esatto. Imposta l’host su smtp.emailit.com. Non usare un indirizzo IP o un alias.

  3. Richiedi la cifratura nel client. STARTTLS è offerto su ogni porta in chiaro, ma il relay non lo impone. Attiva l’opzione «require TLS» del client, così le credenziali non vengono mai inviate senza cifratura.

  4. Prova l’handshake dalla macchina che invia.

    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 risultato corretto mostra subject=CN=smtp.emailit.com e Verify return code: 0 (ok). Un subject diverso significa che qualcosa nella tua rete sta intercettando la connessione.

  5. Aggiorna i runtime datati. Se il client non riesce a negoziare TLS 1.2, aggiorna il runtime del linguaggio o OpenSSL e i certificati CA di sistema.

Se l’handshake riesce ma l’accesso no, vedi Perché l’SMTP restituisce 535 Authentication failed?. Se non riesci proprio a collegarti, vedi Perché la connessione SMTP va in timeout?.

Serve ancora aiuto?

Contatta il supporto o chiedi su Discord. Indica la porta, la libreria client e la sua versione, e l’output del comando openssl s_client.

Questa pagina ti è stata utile?

Grazie del feedback.

Grazie, leggiamo ogni messaggio.