
# Test des E-Mail-Anbieters

`POST /v1/email-provider:test` · Berechtigung `email-provider:write` · alle Tarife

Prüft die gespeicherte Verbindung, ohne eine Nachricht zu senden:

- `customer_smtp`: Verbindet sich mit Ihrem Server, richtet TLS ein, authentifiziert sich und beendet die Verbindung.
- `customer_api`: Ruft mit dem gespeicherten Schlüssel einen schreibgeschützten Endpunkt Ihres Anbieters auf.

Die Antwort ist `200 OK`, auch wenn die Prüfung fehlschlägt: `result` ist `ok` oder ein fester Fehlercode. Der Antworttext des Servers wird nie zurückgegeben. Das Ergebnis wird in `last_test_at` und `last_test_result` von [get](get.md) gespeichert; der `ETag` ändert sich nicht. Jeder Test schreibt einen Auditeintrag (`email_provider.tested`).

Eine Umgebung kann 10 Tests pro Stunde ausführen. Der Body ist optional; wenn Sie einen senden, muss es ein leeres JSON-Objekt sein.

## Antwort

| Feld | Typ | Beschreibung |
|---|---|---|
| `result` | string | `ok` oder ein Fehlercode (unten). |
| `tested_at` | string | Zeitpunkt des Tests. |
| `version` | integer | Die geprüfte Konfigurationsversion. |

```json
{
  "result": "smtp_auth_failed",
  "tested_at": "2026-10-19T09:30:00Z",
  "version": 4
}
```

Häufige Ergebnisse:

| Ergebnis | Bedeutung |
|---|---|
| `ok` | Verbunden und authentifiziert. |
| `smtp_auth_failed` | Der SMTP-Server hat Benutzername oder Passwort abgelehnt. |
| `smtp_auth_unsupported` | Der Server bietet keinen unterstützten AUTH-Mechanismus an. |
| `smtp_tls_required` | Der Server auf Port 587 bietet kein STARTTLS an. |
| `smtp_tls_invalid` | Das Serverzertifikat ist für den Hostnamen nicht gültig. |
| `smtp_temporary`, `smtp_rejected` | Der Server hat mit einem temporären oder dauerhaften Fehler geantwortet. |
| `esp_auth_failed` | Der Anbieter hat den Schlüssel abgelehnt. |
| `esp_access_denied` | Der Anbieter hat den Schlüssel abgelehnt oder der Schlüssel hat kein Leserecht für den geprüften Endpunkt (zum Beispiel `ses:GetAccount` oder ein Mailgun-Domain-Sending-Key). Das Senden kann trotzdem funktionieren. |
| `esp_rate_limited`, `esp_temporary`, `esp_rejected` | Der Anbieter hat das Limit erreicht, ist vorübergehend nicht verfügbar oder hat die Anfrage abgelehnt. |
| `egress_dns_failed`, `egress_dns_private`, `egress_ssrf_blocked`, `egress_connect_failed`, `egress_timeout`, `egress_tls_invalid` | Der Host lässt sich nicht auflösen, verweist auf eine private Adresse, ist gesperrt, war nicht rechtzeitig erreichbar oder hat (bei API-Anbietern) ein ungültiges Zertifikat vorgelegt. |
| `delivery_credentials_invalid` | Die gespeicherte Anmeldeinformation kann nicht verwendet werden; speichern Sie sie erneut. |
| `delivery_mode_unavailable` | Der ausgehende Versand ist in dieser Bereitstellung nicht aktiviert. |

## Fehler

| HTTP | Code | Wann |
|---|---|---|
| 400 | `unknown_field` | Der Body ist kein leeres JSON-Objekt. |
| 409 | `conflict` | Der Modus hat keine Verbindung zum Testen (`platform_default`, `customer_webhook`, `platform_managed_domain`; einen Webhook-Endpunkt testen Sie mit [Test eines Webhook-Endpunkts](../webhook-endpoints/test.md), eine Absenderdomain prüfen Sie mit [verify](../email-sender-domains/verify.md)), oder die Konfiguration wurde während des Tests geändert. |
| 429 | `rate_limited` | Das stündliche Testlimit oder das API-Ratenlimit wurde erreicht; wiederholen Sie die Anfrage nach dem Zeitraum aus `Retry-After`. |
| 401 | `unauthenticated` | Die Anmeldeinformation fehlt, ist ungültig oder wurde widerrufen. |
| 403 | `insufficient_permissions` | Die Anmeldeinformation besitzt nicht die erforderliche Berechtigung. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach dem Zeitraum aus `Retry-After`. |

## Beispiel

```bash
curl -X POST https://api.eu.keenauth.com/v1/email-provider:test \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth email-provider test`
