
# 이메일 발신 도메인 조회

`GET /v1/email-sender-domains/{sender_domain_id}` · 권한 `email-sender-domains:read` · 모든 요금제

발신 도메인의 상태, 마지막 DNS 확인 결과, 게시해야 하는 DNS 레코드를 반환합니다. `ETag` 헤더에는 버전이 포함되며, 도메인을 [삭제](delete.md)할 때 이를 `If-Match`로 전송하십시오.

## 요청

| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| `sender_domain_id` | string | 예 | 발신 도메인 ID(`sdom_…`). |

요청 본문은 없습니다.

## 응답

`200 OK`와 함께 발신 도메인을 반환하며, `ETag`에는 해당 버전이 설정됩니다.

| 필드 | 유형 | 설명 |
|---|---|---|
| `id` | string | 발신 도메인 ID(`sdom_…`). |
| `domain` | string | IDNA 2008 A-label 형식의 도메인으로, 소문자이며 끝에 점이 없습니다. |
| `status` | string | `pending_dns`(DNS 레코드 대기 중), `verified`(발송 준비 완료), `degraded`(레코드가 72시간 동안 실패하여 환경이 플랫폼 발송으로 전환됨) 또는 `disabled`(플랫폼에서 비활성화됨). |
| `active_selector` | string | 서명에 사용되는 DKIM 셀렉터: `akp1` 또는 `akp2`. |
| `dkim_status` | string 또는 null | 두 DKIM CNAME의 마지막 확인 결과(둘 중 더 나쁜 결과): `ok`, `missing`, `wrong_target` 또는 `lookup_failed`. 첫 확인 전에는 null입니다. |
| `return_path_status` | string 또는 null | 반송 경로 CNAME의 마지막 확인 결과로, 코드는 동일합니다. 첫 확인 전에는 null입니다. |
| `dmarc_alignment` | string 또는 null | 마지막 확인에서의 DMARC 결과: `aligned`, `not_aligned`, `no_record`, `invalid_record` 또는 `lookup_failed`. DMARC는 필수가 아닙니다. |
| `last_checked_at` | string 또는 null | 마지막 확인 시각. |
| `failing_since` | string 또는 null | `verified` 도메인에서 처음 실패한 확인 시각이며, 72시간에 도달하면 도메인이 `degraded`가 됩니다. |
| `degraded_since` | string 또는 null | 도메인이 `degraded`가 된 시각. |
| `records` | array | 게시할 DNS 레코드입니다. `type`(`CNAME` 또는 `TXT`), `name`, `value`, `required`를 포함합니다. 두 DKIM CNAME과 반송 경로 CNAME은 필수입니다. 마지막 확인에서 `_dmarc` 레코드가 없었다면 DMARC 권장 값(`v=DMARC1; p=none`)이 `required: false`로 추가됩니다. |
| `version` | integer | 도메인 버전으로, `ETag`와 같습니다. 확인 작업을 포함하여 쓰기가 발생할 때마다 증가합니다. |
| `created_at` | string | 생성 시각. |
| `updated_at` | string | 마지막 변경 시각. |

```json
{
  "id": "sdom_01k7r9m3q5t8v2w4x6y8z0a2b4",
  "domain": "mail.example.com",
  "status": "pending_dns",
  "active_selector": "akp1",
  "dkim_status": null,
  "return_path_status": null,
  "dmarc_alignment": null,
  "last_checked_at": null,
  "failing_since": null,
  "degraded_since": null,
  "records": [
    {
      "type": "CNAME",
      "name": "akp1._domainkey.mail.example.com",
      "value": "akp1.sdom_01k7r9m3q5t8v2w4x6y8z0a2b4.dkim.eu.keenauth.app",
      "required": true
    },
    {
      "type": "CNAME",
      "name": "akp2._domainkey.mail.example.com",
      "value": "akp2.sdom_01k7r9m3q5t8v2w4x6y8z0a2b4.dkim.eu.keenauth.app",
      "required": true
    },
    {
      "type": "CNAME",
      "name": "rp.mail.example.com",
      "value": "rp.eu.mail.keenauth.app",
      "required": true
    }
  ],
  "version": 1,
  "created_at": "2026-10-19T09:00:00Z",
  "updated_at": "2026-10-19T09:00:00Z"
}
```

## 오류

| HTTP | code | 발생 조건 |
|---|---|---|
| 404 | `not_found` | 발신 도메인이 존재하지 않거나, 다른 환경에 속해 있거나, ID 형식이 잘못되었습니다. |
| 401 | `unauthenticated` | 자격 증명이 없거나, 잘못되었거나, 취소되었습니다. |
| 403 | `insufficient_permissions` | 자격 증명에 필요한 권한이 없습니다. |
| 429 | `rate_limited` | 요청 한도를 초과했습니다. `Retry-After` 기간 이후에 다시 시도하십시오. |
| 503 | `service_unavailable` | 종속 서비스를 일시적으로 사용할 수 없습니다. `Retry-After` 기간 이후에 다시 시도하십시오. |

## 예시

```bash
curl https://api.eu.keenauth.com/v1/email-sender-domains/sdom_01k7r9m3q5t8v2w4x6y8z0a2b4 \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

CLI: `keenauth email-sender-domains get sdom_01k7r9m3q5t8v2w4x6y8z0a2b4`
