Přejít na obsah
Dokumentace

Řešení problémů

Proč při připojení k SMTP dostávám chyby TLS?

Opravte chyby handshaku SSL a TLS se smtp.emailit.com, například „wrong version number“, nesoulad názvu v certifikátu a selhání STARTTLS.

Aktualizováno 1. 10. 2026

Tento článek se zabývá chybami, ke kterým dochází, když váš klient a SMTP relay Emailitu navazují šifrování. Téměř vždy je způsobuje nesoulad mezi portem a režimem TLS ve vašem klientovi.

Příznaky

  • SSL routines:ssl3_get_record:wrong version number nebo ERR_SSL_WRONG_VERSION_NUMBER
  • Hostname/IP does not match certificate's altnames nebo certificate verify failed
  • STARTTLS failed, Greeting never received nebo se spojení po připojení zasekne
  • unsupported protocol nebo no protocols available

Příčina

Emailit používá dva režimy TLS a každý port očekává jeden z nich:

Port Režim Typické nastavení klienta
587, 2525, 2587, 25 STARTTLS: relace začíná v prostém textu a pak se přepne na šifrovanou Nodemailer secure: false, PHPMailer ENCRYPTION_STARTTLS, „TLS“ ve většině rozhraní
465 Implicitní TLS: šifrováno od prvního bajtu Nodemailer secure: true, PHPMailer ENCRYPTION_SMTPS, „SSL“ ve většině rozhraní

Časté příčiny jsou:

  • Implicitní TLS na portu pro STARTTLS, například secure: true s portem 587. Klient očekává handshake TLS, ale dostane uvítání v prostém textu, a výsledkem je „wrong version number“.
  • STARTTLS na portu 465. Klient čeká na uvítání, které server v nešifrované podobě nikdy nepošle, takže se spojení zasekne.
  • Připojení přes IP adresu nebo přes vlastní CNAME. Certifikát je vystavený pro smtp.emailit.com, takže jakýkoli jiný název hostitele ověřením neprojde.
  • Stará implementace TLS. Relay vyjednává TLS 1.2 nebo TLS 1.3. Klienti omezení na TLS 1.0 nebo 1.1 nebo se zastaralou sadou certifikátů CA handshake nedokončí.
  • Kontrola provozu. Některé antiviry a firemní proxy zachytávají SMTP a předkládají vlastní certifikát.

Řešení

  1. Sladťe port s režimem. Použijte port 587 se STARTTLS, nebo port 465 s implicitním TLS. Nekombinujte je.

    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. Použijte přesný název hostitele. Nastavte hostitele na smtp.emailit.com. Nepoužívejte IP adresu ani alias.

  3. Vyžadujte v klientovi šifrování. STARTTLS se nabízí na každém portu s prostým textem, ale relay ho nevynucuje. Zapněte v klientovi volbu „require TLS“, aby se přístupové údaje nikdy neposílaly nešifrovaně.

  4. Otestujte handshake ze stroje, který odesílá.

    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

    Správný výsledek ukazuje subject=CN=smtp.emailit.com a Verify return code: 0 (ok). Jiný subjekt znamená, že spojení ve vaší síti něco zachytává.

  5. Aktualizujte staré běhové prostředí. Pokud váš klient nedokáže vyjednat TLS 1.2, aktualizujte běhové prostředí jazyka nebo OpenSSL a systémové certifikáty CA.

Pokud handshake uspěje, ale přihlášení selže, přečtěte si článek Proč SMTP vrací 535 Authentication failed? Pokud se nemůžete připojit vůbec, přečtěte si článek Proč vyprší časový limit připojení k SMTP?

Stále si nevíte rady?

Napište podpoře nebo se zeptejte na Discordu. Uveďte port, klientskou knihovnu a její verzi a výstup příkazu openssl s_client.

Byla tato stránka užitečná?

Děkujeme za zpětnou vazbu.

Děkujeme, čteme každou zprávu.