DKIM (DomainKeys Identified Mail)
도메인 키 기반 이메일 인증 표준입니다.
이메일 발신자가 해당 도메인의 실제 소유자임을 증명하고, 전송 중 메일 내용이 변조되지 않았음을 보장하는 이메일 보안 프로토콜입니다.
동작 원리
[발신 서버] [수신 서버]
│ │
├─ 개인키로 메일 헤더에 서명 추가 │
│ │
└──────── 이메일 전송 ───────────────►│
│
├─ DNS에서 발신 도메인의 공개키 조회
├─ 공개키로 서명 검증
└─ 검증 성공 → 수신 / 실패 → 스팸 처리
- 발신 서버가 **개인키(Private Key)**로 이메일 헤더에 디지털 서명 추가
- 수신 서버가 발신 도메인의 DNS TXT 레코드에서 공개키(Public Key) 조회
- 공개키로 서명을 검증 → 발신자 신원 및 내용 무결성 확인
DNS 설정
DKIM은 DNS TXT 레코드로 공개키를 게시합니다.
레코드 형식: <selector>._domainkey.<domain>
예시:
mail._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIGfMA0GCS..."
| 항목 | 설명 |
|---|---|
selector |
키 식별자 (여러 키 운용 시 구분용, 예: mail, s1) |
v=DKIM1 |
DKIM 버전 |
k=rsa |
암호화 알고리즘 |
p=... |
Base64 인코딩된 공개키 |
이메일 헤더 예시
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=example.com; s=mail;
h=from:to:subject:date:message-id;
bh=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=;
b=ABC123...서명값...
이메일 3대 보안 프로토콜
DKIM은 단독으로 사용되기보다 아래 세 가지를 함께 구성합니다.
| 프로토콜 | 역할 |
|---|---|
| SPF (Sender Policy Framework) | 허가된 IP에서만 메일을 보낼 수 있도록 제한 |
| DKIM (DomainKeys Identified Mail) | 발신자 인증 + 내용 무결성 보장 |
| DMARC (Domain-based Message Authentication) | SPF·DKIM 검증 실패 시 처리 정책 정의 (거부·격리·허용) |
세 가지를 모두 설정해야 스팸 필터 통과율과 발신 도메인 신뢰도가 높아집니다.
실무 적용 포인트
- 이메일 발송 서비스(AWS SES, SendGrid, Mailgun 등)를 사용할 경우 해당 서비스의 DKIM 설정 가이드를 따라 DNS에 레코드 추가
selector를 여러 개 운용하면 키 교체 시 무중단 전환 가능- DKIM 서명이 없거나 검증 실패 시 Gmail·Outlook 등 주요 메일 서버에서 스팸으로 분류될 가능성이 높음
- 2024년부터 Google·Yahoo는 하루 5,000건 이상 발송 시 DKIM + DMARC 필수 적용
관련 개념
- SPF — 발신 IP 허용 목록 관리
- DMARC — SPF·DKIM 실패 시 정책 정의
- DNS — DKIM 공개키가 게시되는 인프라