Pular para o conteúdo
Docs

Solução de problemas

Por que recebo erros de TLS ao me conectar ao SMTP?

Resolva erros de handshake SSL e TLS com o smtp.emailit.com, como “wrong version number”, nomes de certificado que não correspondem e falhas de STARTTLS.

Atualizado em 1 de out. de 2026

Este artigo cobre os erros que acontecem enquanto o seu cliente e o SMTP relay do Emailit estabelecem a criptografia. Eles quase sempre vêm de uma incompatibilidade entre a porta e o modo de TLS configurado no seu cliente.

Sintomas

  • SSL routines:ssl3_get_record:wrong version number ou ERR_SSL_WRONG_VERSION_NUMBER
  • Hostname/IP does not match certificate's altnames ou certificate verify failed
  • STARTTLS failed, Greeting never received ou a conexão trava depois de conectar
  • unsupported protocol ou no protocols available

Causa

O Emailit usa dois modos de TLS, e cada porta espera um deles:

Porta Modo Configuração típica do cliente
587, 2525, 2587, 25 STARTTLS: a sessão começa em texto simples e é atualizada Nodemailer secure: false, PHPMailer ENCRYPTION_STARTTLS, “TLS” na maioria das interfaces
465 TLS implícito: criptografado desde o primeiro byte Nodemailer secure: true, PHPMailer ENCRYPTION_SMTPS, “SSL” na maioria das interfaces

As causas comuns são:

  • TLS implícito em uma porta STARTTLS, por exemplo secure: true com a porta 587. O cliente espera um handshake TLS, mas recebe uma saudação em texto simples, o que produz “wrong version number”.
  • STARTTLS na porta 465. O cliente espera uma saudação que o servidor nunca envia em texto claro, e a conexão trava.
  • Conexão por endereço IP ou por um CNAME seu. O certificado é emitido para smtp.emailit.com, então qualquer outro nome de host falha na verificação.
  • Uma pilha TLS antiga. O relay negocia TLS 1.2 ou TLS 1.3. Clientes limitados a TLS 1.0 ou 1.1, ou com um pacote de CAs desatualizado, não conseguem concluir o handshake.
  • Inspeção de tráfego. Alguns antivírus e proxies corporativos interceptam o SMTP e apresentam o próprio certificado.

Solução

  1. Combine a porta com o modo. Use a porta 587 com STARTTLS ou a porta 465 com TLS implícito. Não misture os dois.

    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. Use o nome de host exato. Defina o host como smtp.emailit.com. Não use um endereço IP nem um alias.

  3. Exija criptografia no seu cliente. O STARTTLS é oferecido em todas as portas de texto simples, mas o relay não o impõe. Ative a opção “require TLS” do seu cliente para que as credenciais nunca sejam enviadas sem criptografia.

  4. Teste o handshake a partir da máquina que envia.

    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

    Um resultado saudável mostra subject=CN=smtp.emailit.com e Verify return code: 0 (ok). Um subject diferente significa que algo na sua rede está interceptando a conexão.

  5. Atualize runtimes antigos. Atualize o runtime da linguagem ou o OpenSSL e os certificados de CA do sistema se o seu cliente não conseguir negociar TLS 1.2.

Se o handshake funcionar, mas o login falhar, consulte Por que o SMTP retorna 535 Authentication failed?. Se você não conseguir nem se conectar, consulte Por que a minha conexão SMTP dá timeout?.

Ainda com problemas?

Fale com o suporte ou pergunte no Discord. Informe a porta, a biblioteca do seu cliente e a versão dela, e a saída do comando openssl s_client.

Esta página foi útil?

Obrigado pelo feedback.

Obrigado, lemos todas as mensagens.