# Warum erhalte ich TLS-Fehler beim Verbinden mit SMTP?

> Beheben Sie SSL- und TLS-Handshake-Fehler mit smtp.emailit.com, etwa „wrong version number“, nicht passende Zertifikatsnamen und STARTTLS-Fehler.

Dieser Artikel behandelt Fehler, die auftreten, während Ihr Client und das SMTP-Relay von Emailit die Verschlüsselung aufbauen. Sie entstehen fast immer dadurch, dass Port und TLS-Modus in Ihrem Client nicht zusammenpassen.

## Symptome

- `SSL routines:ssl3_get_record:wrong version number` oder `ERR_SSL_WRONG_VERSION_NUMBER`
- `Hostname/IP does not match certificate's altnames` oder `certificate verify failed`
- `STARTTLS failed`, `Greeting never received` oder die Verbindung hängt nach dem Verbindungsaufbau
- `unsupported protocol` oder `no protocols available`

## Ursache

Emailit verwendet zwei TLS-Modi, und jeder Port erwartet einen davon:

| Port | Modus | Typische Client-Einstellung |
| --- | --- | --- |
| 587, 2525, 2587, 25 | **STARTTLS**: Die Sitzung beginnt im Klartext und wird dann auf TLS umgestellt | Nodemailer `secure: false`, PHPMailer `ENCRYPTION_STARTTLS`, „TLS“ in den meisten Oberflächen |
| 465 | **Implizites TLS**: verschlüsselt ab dem ersten Byte | Nodemailer `secure: true`, PHPMailer `ENCRYPTION_SMTPS`, „SSL“ in den meisten Oberflächen |

Die häufigsten Ursachen sind:

- **Implizites TLS auf einem STARTTLS-Port**, zum Beispiel `secure: true` mit Port 587. Der Client erwartet einen TLS-Handshake, erhält aber eine Begrüßung im Klartext, was zu „wrong version number“ führt.
- **STARTTLS auf Port 465.** Der Client wartet auf eine Begrüßung, die der Server nie im Klartext sendet, sodass die Verbindung hängt.
- **Verbindung per IP-Adresse oder über Ihren eigenen CNAME.** Das Zertifikat ist für `smtp.emailit.com` ausgestellt, daher schlägt die Verifizierung bei jedem anderen Hostnamen fehl.
- **Ein alter TLS-Stack.** Das Relay handelt TLS 1.2 oder TLS 1.3 aus. Clients, die auf TLS 1.0 oder 1.1 beschränkt sind oder ein veraltetes CA-Bundle haben, können den Handshake nicht abschließen.
- **Prüfung des Datenverkehrs.** Manche Antivirenprogramme und Unternehmens-Proxys fangen SMTP ab und präsentieren ein eigenes Zertifikat.

## Lösung

1. **Port und Modus abstimmen.** Verwenden Sie Port `587` mit STARTTLS oder Port `465` mit implizitem TLS. Mischen Sie sie nicht.

```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. **Genauen Hostnamen verwenden.** Setzen Sie den Host auf `smtp.emailit.com`. Verwenden Sie keine IP-Adresse und keinen Alias.

3. **Verschlüsselung im Client erzwingen.** STARTTLS wird auf jedem Klartext-Port angeboten, aber das Relay erzwingt es nicht. Aktivieren Sie die Option „require TLS“ Ihres Clients, damit Zugangsdaten nie unverschlüsselt gesendet werden.

4. **Handshake von der sendenden Maschine aus testen.**

```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
```

   Ein fehlerfreies Ergebnis zeigt `subject=CN=smtp.emailit.com` und `Verify return code: 0 (ok)`. Steht dort ein anderer Name, fängt etwas in Ihrem Netzwerk die Verbindung ab.

5. **Alte Laufzeitumgebungen aktualisieren.** Aktualisieren Sie die Laufzeitumgebung der Sprache oder OpenSSL und die CA-Zertifikate des Systems, wenn Ihr Client TLS 1.2 nicht aushandeln kann.

Wenn der Handshake gelingt, die Anmeldung aber fehlschlägt, siehe [Warum gibt SMTP 535 Authentication failed zurück?](/de/docs/kb/smtp-535-authentication-failed/). Wenn Sie überhaupt keine Verbindung herstellen können, siehe [Warum läuft meine SMTP-Verbindung in eine Zeitüberschreitung?](/de/docs/kb/smtp-connection-timeout-port-25/).

## Weiterhin Probleme?

[Kontaktieren Sie den Support](/contact/) oder fragen Sie auf [Discord](https://discord.emailit.com). Geben Sie den Port, Ihre Client-Bibliothek und deren Version sowie die Ausgabe des Befehls `openssl s_client` an.

---
Quelle: https://emailit.com/de/docs/kb/smtp-tls-errors/
