Tan Kim

DKIM (DomainKeys Identified Mail)

도메인 키 기반 이메일 인증 표준입니다.

이메일 발신자가 해당 도메인의 실제 소유자임을 증명하고, 전송 중 메일 내용이 변조되지 않았음을 보장하는 이메일 보안 프로토콜입니다.


동작 원리

[발신 서버]                        [수신 서버]
  │                                    │
  ├─ 개인키로 메일 헤더에 서명 추가      │
  │                                    │
  └──────── 이메일 전송 ───────────────►│
                                        │
                                        ├─ DNS에서 발신 도메인의 공개키 조회
                                        ├─ 공개키로 서명 검증
                                        └─ 검증 성공 → 수신 / 실패 → 스팸 처리
  1. 발신 서버가 **개인키(Private Key)**로 이메일 헤더에 디지털 서명 추가
  2. 수신 서버가 발신 도메인의 DNS TXT 레코드에서 공개키(Public Key) 조회
  3. 공개키로 서명을 검증 → 발신자 신원 및 내용 무결성 확인

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 공개키가 게시되는 인프라