개요
본 문서는 AWS SES를 사용하여 이메일을 발송할 때 필수적인 이메일 인증 메커니즘인 DKIM, SPF, DMARC에 대해 초보자도 쉽게 이해하고 설정할 수 있도록 작성된 상세 가이드입니다.
왜 이메일 인증이 중요한가?
이메일 인증의 필요성
스팸 방지: 수신 메일 서버가 발신자를 검증하여 스팸 필터링 회피
도메인 보호: 악의적인 사용자가 여러분의 도메인을 사칭하는 것을 방지
전달률 향상: 인증된 이메일은 받은편지함에 도착할 확률이 높음
신뢰성 구축: 수신자에게 신뢰할 수 있는 발신자임을 증명
Gmail의 요구사항 (2024년 2월부터)
일일 5,000개 이상 발송 시 SPF, DKIM 필수
DMARC 정책 설정 필수
원클릭 수신거부 기능 구현 필수
1. SPF (Sender Policy Framework)
SPF란?
SPF는 이메일 발신자의 IP 주소를 검증하는 메커니즘입니다. 도메인 소유자가 어떤 메일 서버가 자신의 도메인 대신 이메일을 보낼 수 있는지 지정합니다.
Amazon SES를 통해 보내는 메시지는 amazonses.com의 하위 도메인을 기존 MAIL FROM 도메인으로 자동 사용합니다.
기본 MAIL FROM 도메인은 이메일을 전송한 애플리케이션(이 경우 SES)과 일치하므로 SPF 인증은 이 메시지를 성공적으로 검증합니다. 따라서 SES에서는 SPF가 암시적으로 설정됩니다.
SES 기본 MAIL FROM 도메인을 사용하지 않고 소유한 도메인의 하위 도메인을 사용하려는 경우, 사용자 지정 MAIL FROM 도메인에 대한 자체 SPF 레코드를 게시해야 합니다.
또한 SES에서는 사용자 지정 MAIL FROM 도메인이 이메일 공급자가 보내는 반송 메일 및 수신 거부 알림을 받을 수 있도록 MX 레코드를 설정해야 합니다.
따라서, 다음의 안내서는 SPF를
SPF 작동 원리
도메인 소유자가 DNS에 SPF 레코드 등록
수신 메일 서버가 발신자의 IP 확인
DNS에서 SPF 레코드 조회
IP가 허용 목록에 있는지 확인
결과에 따라 메일 처리
AWS SES SPF 설정 방법
1단계: Custom MAIL FROM 도메인 설정
1. AWS SES 콘솔 접속
2. 자격증명 - 자격증명 선택
3. 사용자 지정 MAIL FROM domain → Edit 클릭
4. 서브도메인 입력 (예: mail.yourdomain.com)
5. MX 실패 시 동작: 기본 MAIL FROM 도메인 사용 선택2단계: DNS 레코드 추가
MX 레코드:
호스트: mail.yourdomain.com
타입: MX
우선순위: 10
값: feedback-smtp.[region].amazonses.comSPF 레코드 (TXT):
호스트: mail.yourdomain.com
타입: TXT
값: "v=spf1 include:amazonses.com ~all"3단계: 기존 SPF 레코드와 병합 (필요시)
기존 SPF 레코드가 있는 경우:
"v=spf1 include:amazonses.com include:_spf.google.com include:spf.protection.outlook.com ~all"SPF 레코드 구성 요소 설명
v=spf1: SPF 버전 1을 사용한다는 선언
include:amazonses.com: Amazon SES 서버 허용
-
~all: 소프트 실패 (권장)
-all: 하드 실패 (엄격)
?all: 중립
2. DKIM (DomainKeys Identified Mail)
DKIM이란?
DKIM은 이메일에 디지털 서명을 추가하여 메시지의 무결성과 진위성을 보장하는 기술입니다.
DKIM 작동 원리
발신 서버가 이메일에 디지털 서명 추가
공개키를 DNS에 CNAME 레코드로 게시
수신 서버가 DNS에서 공개키 조회
서명 검증으로 메시지 무결성 확인
AWS SES DKIM 설정 방법
1단계: Easy DKIM 활성화
1. AWS SES 콘솔 → 자격증명
2. 도메인 선택 → 인증 탭
3. DKIM 섹션에서 "편집" 클릭
4. "Easy DKIM" 선택
5. DKIM signing key length: "RSA_2048_BIT" 선택 (권장)
6. "Save changes" 클릭2단계: DNS CNAME 레코드 추가
SES가 생성한 3개의 CNAME 레코드를 DNS에 추가:
예시:
gmgfp7ek4mfunuxtkne3aahp7yrwupgf._domainkey.yourdomain.com
→ gmgfp7ek4mfunuxtkne3aahp7yrwupgf.dkim.amazonses.com
ssojnqlvhs6ma3jhsn26oirhev5tof5n._domainkey.yourdomain.com
→ ssojnqlvhs6ma3jhsn26oirhev5tof5n.dkim.amazonses.com
e54qqjfkcwkturemparg5vwirbd5527d._domainkey.yourdomain.com
→ e54qqjfkcwkturemparg5vwirbd5527d.dkim.amazonses.com3단계: 검증 대기
DNS 전파: 최대 72시간
SES 콘솔에서 "Verified" 상태 확인
DKIM 키 로테이션
보안을 위해 정기적인 키 로테이션 권장:
새 DKIM 키 생성
DNS에 새 레코드 추가
기존 레코드와 병행 운영
검증 후 기존 레코드 제거
3. DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC란?
DMARC는 SPF와 DKIM을 기반으로 이메일 인증을 강화하고, 인증 실패 시 처리 방법을 지정하는 정책입니다.
DMARC 작동 원리
SPF 또는 DKIM 인증 결과 확인
From 도메인과 정렬(Alignment) 확인
DMARC 정책에 따라 처리
보고서 생성 및 발송
DMARC 정렬(Alignment) 이해
SPF 정렬: From 도메인 = MAIL FROM 도메인
DKIM 정렬: From 도메인 = DKIM 서명 도메인
둘 중 하나만 통과해도 DMARC 통과
AWS SES DMARC 설정 방법
1단계: DMARC 레코드 생성
기본 DMARC 레코드:
호스트: _dmarc.yourdomain.com
타입: TXT
값: "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com"2단계: 단계적 정책 적용
초기 (모니터링):
"v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; ruf=mailto:dmarc-forensic@yourdomain.com"중간 (격리):
"v=DMARC1; p=quarantine; pct=50; rua=mailto:dmarc@yourdomain.com"최종 (거부):
"v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@yourdomain.com; adkim=s; aspf=s"DMARC 태그 설명
| 태그 | 설명 | 예시 |
| v | DAMRC 버전 | v=DMARC1 |
| p | 정책 (none/quarantine/reject) | p-quarantine |
| rua | 집계 리포트 수신 주소 |
|
| ruf | 포렌식 리포트 수신 주소 |
|
| pct | 정책 적용 비율 |
pct=50 |
| adkim | DKIM 정렬 모드 |
adkim=s (strict) |
| aspf | SPF 정렬 모드 |
aspf=r (relaxed) |
| sp | 서브도메인 정책 |
sp=reject |
4. 설정 검증 방법
DNS 레코드 확인
명령줄 도구 사용:
# SPF 확인
dig TXT mail.yourdomain.com +short
# DKIM 확인
dig CNAME selector._domainkey.yourdomain.com +short
# DMARC 확인
dig TXT _dmarc.yourdomain.com +short온라인 검증 도구
-
MXToolbox (https://mxtoolbox.com)
SPF Record Lookup
DKIM Record Lookup
DMARC Record Lookup
-
DMARC Analyzer (https://www.dmarcanalyzer.com)
DMARC 레코드 검증
구성 권장사항 제공
-
Google Postmaster Tools
Gmail 전달률 모니터링
인증 상태 확인
테스트 이메일 발송
AWS SES 콘솔에서 테스트 이메일 발송
Gmail 계정으로 수신
이메일 열기 → 더보기(⋮) → "원본 보기"
-
인증 결과 확인:
Authentication-Results: spf=pass dkim=pass dmarc=pass
5. 문제 해결 가이드
SPF 관련 문제
문제: SPF PermError - too many DNS lookups
원인: SPF 레코드의 DNS 조회가 10회 초과
해결: include 구문 최소화, 불필요한 항목 제거
문제: SPF softfail
원인: IP가 SPF 레코드에 포함되지 않음
해결: Custom MAIL FROM 도메인 설정 확인
DKIM 관련 문제
문제: DKIM 검증 pending
원인: DNS 전파 지연 또는 잘못된 레코드
-
해결:
DNS 레코드 정확성 확인
72시간 대기
Route 53 사용 시 자동 설정 활용
문제: DKIM signature missing
원인: Easy DKIM 비활성화 상태
해결: SES 콘솔에서 DKIM 활성화
DMARC 관련 문제
문제: DMARC fail - alignment
원인: SPF/DKIM 도메인과 From 도메인 불일치
해결: Custom MAIL FROM 도메인을 메인 도메인의 서브도메인으로 설정
문제: DMARC 리포트 미수신
원인: 리포트 수신 메일 서버 설정 문제
-
해결:
리포트 수신용 메일박스 확인
스팸 폴더 확인
제3자 DMARC 리포트 서비스 활용
댓글
댓글 0개
댓글을 남기려면 로그인하세요.