
# 이메일 공급자 테스트

`POST /v1/email-provider:test` · 권한 `email-provider:write` · 모든 요금제

메시지를 보내지 않고 저장된 연결을 확인합니다:

- `customer_smtp`: 서버에 연결하고, TLS를 설정하고, 인증한 다음 연결을 종료합니다.
- `customer_api`: 저장된 키로 공급자의 읽기 전용 엔드포인트를 호출합니다.

확인이 실패하더라도 응답은 `200 OK`입니다. `result`는 `ok` 또는 고정된 오류 코드입니다. 서버의 자체 응답 텍스트는 반환되지 않습니다. 결과는 [get](get.md)의 `last_test_at`과 `last_test_result`에 저장되며, `ETag`는 변경되지 않습니다. 모든 테스트는 감사 기록(`email_provider.tested`)을 남깁니다.

환경당 시간당 10회까지 테스트할 수 있습니다. 본문은 선택 사항이며, 보내는 경우 빈 JSON 객체여야 합니다.

## 응답

| 필드 | 유형 | 설명 |
|---|---|---|
| `result` | string | `ok` 또는 아래의 오류 코드입니다. |
| `tested_at` | string | 테스트 시각입니다. |
| `version` | integer | 테스트한 구성 버전입니다. |

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

주요 결과:

| 결과 | 의미 |
|---|---|
| `ok` | 연결 및 인증에 성공했습니다. |
| `smtp_auth_failed` | SMTP 서버가 사용자 이름 또는 비밀번호를 거부했습니다. |
| `smtp_auth_unsupported` | 서버가 지원되는 AUTH 메커니즘을 제공하지 않습니다. |
| `smtp_tls_required` | 587번 포트의 서버가 STARTTLS를 제공하지 않습니다. |
| `smtp_tls_invalid` | 서버 인증서가 호스트 이름에 유효하지 않습니다. |
| `smtp_temporary`, `smtp_rejected` | 서버가 일시적 또는 영구적 오류로 응답했습니다. |
| `esp_auth_failed` | 공급자가 키를 거부했습니다. |
| `esp_access_denied` | 공급자가 키를 거부했거나, 키에 확인한 엔드포인트에 대한 읽기 권한이 없습니다(예: `ses:GetAccount` 또는 Mailgun 도메인 발송 키). 발송은 여전히 작동할 수 있습니다. |
| `esp_rate_limited`, `esp_temporary`, `esp_rejected` | 공급자가 요청 빈도를 제한했거나, 일시적으로 사용할 수 없거나, 요청을 거부했습니다. |
| `egress_dns_failed`, `egress_dns_private`, `egress_ssrf_blocked`, `egress_connect_failed`, `egress_timeout`, `egress_tls_invalid` | 호스트가 확인되지 않거나, 사설 주소로 확인되거나, 차단되었거나, 제한 시간 내에 연결할 수 없었거나, (API 공급자의 경우) 유효하지 않은 인증서를 제시했습니다. |
| `delivery_credentials_invalid` | 저장된 자격 증명을 사용할 수 없습니다. 다시 저장하십시오. |
| `delivery_mode_unavailable` | 이 배포 환경에서는 발신 전송이 활성화되어 있지 않습니다. |

## 오류

| HTTP | code | 발생 시점 |
|---|---|---|
| 400 | `unknown_field` | 본문이 빈 JSON 객체가 아닙니다. |
| 409 | `conflict` | 모드에 테스트할 연결이 없거나(`platform_default`, `customer_webhook`, `platform_managed_domain`; 웹훅 엔드포인트는 [웹훅 엔드포인트 테스트](../webhook-endpoints/test.md)로, 발신 도메인은 [검증](../email-sender-domains/verify.md)으로 확인하십시오), 테스트 중 구성이 변경되었습니다. |
| 429 | `rate_limited` | 시간당 테스트 한도 또는 API 요청 빈도 한도에 도달했습니다. `Retry-After` 기간 이후에 다시 시도하십시오. |
| 401 | `unauthenticated` | 자격 증명이 없거나, 유효하지 않거나, 취소되었습니다. |
| 403 | `insufficient_permissions` | 자격 증명에 필요한 권한이 없습니다. |
| 503 | `service_unavailable` | 종속 서비스를 일시적으로 사용할 수 없습니다. `Retry-After` 기간 이후에 다시 시도하십시오. |

## 예제

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

CLI: `keenauth email-provider test`
