- SPF(Sender Policy Framework): DNS TXT 레코드 설정(v=spf1 include:sendgrid.net ~all), 발신 서버 인증, SPF 한정자(+/-/~/?), 여러 이메일 서비스 사용 시 설정
- DKIM(DomainKeys Identified Mail): 서명 키 구성(Selector, Public Key), DNS TXT 레코드 설정(s1._domainkey), 이메일 무결성 검증, 디지털 서명 기술
- DMARC(Domain-based Message Authentication): 정책 설정(v=DMARC1; p=quarantine; rua=mailto:...), 보고서 분석(집계 보고서, 실패 보고서), 정책 모드(none/quarantine/reject), 실무 DNS 설정 예시
- 이메일 발송 신뢰도 향상: 스팸 방지 전략, 발송률 향상, 피싱 방지, SendGrid 도메인 인증 완료 프로세스, DNS 레코드 검증 방법
서론
이메일은 비즈니스 커뮤니케이션의 핵심 도구이지만, 스팸 메일함으로 직행하거나 아예 차단되는 경우만큼 답답한 일도 없습니다. 고객에게 중요한 정보가 담긴 메일이 제대로 전달되지 않는다면 비즈니스에 큰 타격을 줄 수 있습니다.
이러한 문제를 해결하고 이메일 발송 신뢰도를 높이는 열쇠는 바로 SPF, DKIM, DMARC와 같은 이메일 인증 기술에 있습니다. 이번 글에서는 이메일 발송 서비스로 널리 사용되는 SendGrid를 중심으로 이메일 인증 설정 방법을 상세히 다룹니다.
📊 빠른 참조
이메일 인증 기술 비교
| 기술 | 목적 | 검증 방법 | 필수 여부 |
|---|---|---|---|
| SPF | 발신 서버 인증 | DNS TXT 레코드 | 필수 |
| DKIM | 이메일 무결성 검증 | 디지털 서명 | 필수 |
| DMARC | 정책 기반 인증 및 보고 | SPF + DKIM 조합 | 권장 |
SPF 레코드 설정
| 항목 | 값 | 설명 |
|---|---|---|
| 레코드 타입 | TXT | DNS TXT 레코드 |
| 레코드 값 | v=spf1 include:sendgrid.net ~all |
SendGrid 서버 허용 |
| 한정자 | ~all |
소프트 실패 (Soft Fail) |
SPF 한정자 비교
| 한정자 | 의미 | 설명 | 권장 여부 |
|---|---|---|---|
| + (Pass) | 허용 | 기본값, 명시적으로 허용 | ✅ 권장 |
| - (Fail) | 거부 | 차단 | ⚠️ 주의 |
| ~ (Soft Fail) | 소프트 실패 | 의심스러우나 차단하지 않음 | ✅ 권장 |
| ? (Neutral) | 중립 | 검증하지 않음 | ❌ 비권장 |
DKIM 설정
| 항목 | 설명 | 예시 |
|---|---|---|
| Selector | 서명 키 식별자 | s1, s2 |
| DNS 레코드 | {selector}._domainkey.{domain} |
s1._domainkey.example.com |
| 레코드 타입 | TXT | DNS TXT 레코드 |
| Public Key | SendGrid에서 제공 | SendGrid 대시보드에서 확인 |
DMARC 정책 모드
| 정책 | 코드 | 설명 | 권장 여부 |
|---|---|---|---|
| None | p=none |
모니터링만 수행 | 초기 설정 |
| Quarantine | p=quarantine |
스팸 폴더로 이동 | 점진적 적용 |
| Reject | p=reject |
이메일 거부 | 최종 목표 |
DMARC 레코드 예시
| 설정 | 값 | 설명 |
|---|---|---|
| 기본 레코드 | v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com |
기본 정책 |
| 보고서 수신 | rua=mailto:dmarc@example.com |
집계 보고서 수신 주소 |
| 실패 보고서 | ruf=mailto:dmarc-fail@example.com |
실패 보고서 수신 주소 (선택) |
설정 체크리스트
| 항목 | 상태 | 설명 |
|---|---|---|
| SPF 레코드 설정 | ✅ 필수 | DNS TXT 레코드 추가 |
| DKIM 서명 키 구성 | ✅ 필수 | SendGrid에서 키 생성 및 DNS 설정 |
| DMARC 정책 설정 | ✅ 권장 | 점진적 적용 (none → quarantine → reject) |
| DNS 레코드 검증 | ✅ 필수 | 모든 레코드 검증 완료 |
| 보고서 모니터링 | ✅ 권장 | DMARC 보고서 정기적 확인 |

1. 이메일 인증이란?
1.1 왜 이메일 인증이 필요한가?
이메일은 원래 보안을 고려하지 않고 설계되었습니다. 누구나 누구의 이름으로든 이메일을 보낼 수 있어, 피싱, 스팸, 스푸핑 공격에 취약합니다. 이메일 인증 기술은 이러한 문제를 해결하기 위해 개발되었습니다.
1.2 주요 이메일 인증 기술
- SPF (Sender Policy Framework): 발신 서버 인증
- DKIM (DomainKeys Identified Mail): 이메일 무결성 검증
- DMARC (Domain-based Message Authentication, Reporting & Conformance): 정책 기반 인증 및 보고
2. SPF (Sender Policy Framework)
2.1 SPF란?
SPF는 도메인 소유자가 자신의 도메인을 대신하여 이메일을 보낼 수 있는 서버를 명시하는 DNS 레코드입니다. 수신 서버는 SPF 레코드를 확인하여 이메일이 승인된 서버에서 발송되었는지 검증합니다.
2.2 SPF 레코드 구조
v=spf1 include:sendgrid.net ~all
- v=spf1: SPF 버전 1
- include:sendgrid.net: SendGrid 서버를 허용
- ~all: 다른 모든 서버는 소프트 실패 (Soft Fail)
2.3 SPF 한정자
- + (Pass): 기본값, 명시적으로 허용
- - (Fail): 명시적으로 거부
- ~ (Soft Fail): 실패하지만 거부하지 않음
- ? (Neutral): 중립, 검증하지 않음
2.4 SendGrid SPF 설정
SendGrid를 사용하는 경우, DNS에 다음 SPF 레코드를 추가합니다:
TXT 레코드:
이름: @ (또는 도메인 이름)
값: v=spf1 include:sendgrid.net ~all
TTL: 3600
2.5 여러 서비스 사용 시
여러 이메일 서비스를 사용하는 경우:
v=spf1 include:sendgrid.net include:_spf.google.com ~all
3. DKIM (DomainKeys Identified Mail)
3.1 DKIM이란?
DKIM은 이메일이 전송 중에 변조되지 않았음을 증명하는 디지털 서명 기술입니다. 발신 서버가 이메일 헤더와 본문에 암호화된 서명을 추가하고, 수신 서버가 공개 키를 사용하여 서명을 검증합니다.
3.2 DKIM 동작 원리
- 발신 서버: 이메일 헤더와 본문을 해시하고 개인 키로 서명
- DNS: 공개 키를 DNS에 TXT 레코드로 게시
- 수신 서버: DNS에서 공개 키를 가져와 서명 검증
3.3 SendGrid DKIM 설정
SendGrid에서 DKIM을 활성화하면 다음 정보를 제공합니다:
- Selector: DKIM 선택자 (예:
s1,s2) - Public Key: 공개 키
DNS에 다음 레코드를 추가합니다:
TXT 레코드:
이름: s1._domainkey (또는 s1._domainkey.yourdomain.com)
값: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC...
TTL: 3600
3.4 DKIM 레코드 확인
설정 후 다음 명령어로 확인할 수 있습니다:
dig TXT s1._domainkey.yourdomain.com
4. DMARC (Domain-based Message Authentication, Reporting & Conformance)
4.1 DMARC란?
DMARC는 SPF와 DKIM을 기반으로 한 정책 프레임워크입니다. 도메인 소유자가 이메일 인증 실패 시 어떻게 처리할지 정책을 설정하고, 인증 결과에 대한 보고를 받을 수 있습니다.
4.2 DMARC 정책
- none: 정책 없음, 모니터링만 수행
- quarantine: 검역함으로 이동
- reject: 완전히 거부
4.3 DMARC 레코드 구조
v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com; ruf=mailto:dmarc@yourdomain.com; pct=100
- v=DMARC1: DMARC 버전 1
- p=quarantine: 정책 (none/quarantine/reject)
- rua: 집계 보고서 수신 주소
- ruf: 포렌식 보고서 수신 주소
- pct: 정책 적용 비율 (0-100)
4.4 단계적 DMARC 적용
처음에는 모니터링부터 시작하는 것이 좋습니다:
# 1단계: 모니터링만
v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com
# 2단계: 일부 검역
v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@yourdomain.com
# 3단계: 전체 검역
v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc@yourdomain.com
# 4단계: 완전 거부
v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com
참고: DMARC 설정 관련 자세한 내용은 DMARC 공식 문서를 참조하세요.
5. SendGrid 설정 가이드
5.1 SendGrid 계정 설정
- SendGrid 대시보드 접속
- Settings > Sender Authentication 선택
- Domain Authentication 클릭
- 도메인 입력 및 인증 시작
5.2 DNS 레코드 추가
SendGrid가 제공하는 DNS 레코드를 도메인의 DNS 설정에 추가합니다:
- SPF 레코드:
v=spf1 include:sendgrid.net ~all - DKIM 레코드: SendGrid가 생성한 공개 키
- CNAME 레코드: SendGrid 추적 및 링크 리라이트용
5.3 인증 확인
DNS 레코드 추가 후 SendGrid에서 Verify 버튼을 클릭하여 인증을 확인합니다. 모든 레코드가 올바르게 설정되면 인증이 완료됩니다.
6. DNS 레코드 설정 예시
6.1 Cloudflare 설정
Cloudflare를 사용하는 경우:
- DNS 탭으로 이동
- Add record 클릭
- 레코드 타입과 값 입력:
Type: TXT
Name: @
Content: v=spf1 include:sendgrid.net ~all
TTL: Auto
6.2 AWS Route 53 설정
Route 53을 사용하는 경우:
- Hosted Zones 선택
- Create Record Set 클릭
- 레코드 정보 입력:
Type: TXT
Name: (도메인 이름)
Value: v=spf1 include:sendgrid.net ~all
TTL: 3600
7. 이메일 인증 검증
7.1 온라인 도구 사용
다음 도구들을 사용하여 설정을 검증할 수 있습니다:
- MXToolbox: https://mxtoolbox.com/spf.aspx
- DMARC Analyzer: https://www.dmarcanalyzer.com/
- Google Postmaster Tools: Gmail 전달률 확인
7.2 명령줄 도구
참고: 관련 예제는 공식 문서를 참조하세요.
# SPF 확인
dig TXT yourdomain.com | grep spf
# DKIM 확인
dig TXT s1._domainkey.yourdomain.com
# DMARC 확인
dig TXT _dmarc.yourdomain.com
7.3 이메일 헤더 확인
발송한 이메일의 헤더를 확인하여 인증 상태를 확인할 수 있습니다:
Authentication-Results: mail.example.com;
spf=pass smtp.mailfrom=yourdomain.com;
dkim=pass header.d=yourdomain.com;
dmarc=pass action=none header.from=yourdomain.com
8. DMARC 보고서 분석
8.1 집계 보고서 (RUA)
DMARC 집계 보고서는 다음 정보를 제공합니다:
- 인증 성공/실패 통계
- 발신 서버 정보
- 정책 적용 결과
8.2 포렌식 보고서 (RUF)
포렌식 보고서는 인증 실패한 이메일의 상세 정보를 제공합니다:
- 실패 원인
- 발신 IP 주소
- 이메일 헤더
8.3 보고서 분석 도구
- DMARC Analyzer: 보고서를 자동으로 분석하고 시각화
- Postmark DMARC Reports: 무료 DMARC 보고서 분석
- Valimail: 엔터프라이즈 DMARC 관리 플랫폼
9. 모범 사례
9.1 단계적 적용
- SPF 설정: 먼저 SPF 레코드를 추가
- DKIM 설정: DKIM 서명 활성화
- DMARC 모니터링: DMARC를
none정책으로 시작 - 정책 강화: 점진적으로
quarantine→reject로 전환
9.2 정기적인 모니터링
- 주간 보고서 검토: DMARC 보고서를 정기적으로 확인
- 인증 실패 분석: 실패 원인을 분석하고 조치
- DNS 레코드 검증: 정기적으로 DNS 레코드가 올바른지 확인
9.3 서브도메인 관리
서브도메인도 별도로 인증 설정이 필요합니다:
# 메인 도메인
yourdomain.com → SPF, DKIM, DMARC
# 서브도메인
mail.yourdomain.com → 별도 SPF, DKIM, DMARC
10. 문제 해결
10.1 SPF 실패
원인:
- SPF 레코드에 발신 서버가 포함되지 않음
- DNS 전파 지연
해결:
- SPF 레코드에 모든 발신 서버 포함
- DNS TTL 확인 및 전파 대기
10.2 DKIM 실패
원인:
- DKIM 레코드가 DNS에 없음
- 공개 키가 잘못됨
- 이메일이 전송 중 변조됨
해결:
- DNS 레코드 확인
- SendGrid에서 DKIM 재생성
- 이메일 서명 확인
10.3 DMARC 실패
원인:
- SPF 또는 DKIM 실패
- 정책이 너무 엄격함
해결:
- SPF/DKIM 먼저 수정
- 정책을
none으로 완화 후 점진적 강화
11. 2025년 이메일 보안 트렌드
11.1 악성 이메일 증가 및 대응
2025년 Cloudflare 보고에 따르면, 전체 이메일의 5% 이상이 악성으로 탐지되고 있습니다. AI를 활용한 피싱 공격이 더욱 정교해지면서 이메일 보안의 중요성이 그 어느 때보다 커졌습니다.
주요 이메일 위협 (2025년):
- AI 생성 피싱 메일: 자연스러운 문체로 작성된 맞춤형 피싱
- BEC (Business Email Compromise): 경영진 사칭 이메일 공격
- 악성 첨부파일: 제로데이 취약점을 악용한 문서 파일
11.2 DMARC Enforcement 강화
2025년 들어 DMARC 정책 강화가 전 세계적으로 가속화되고 있습니다. 특히 대량 발송자(Bulk Sender)에 대한 규제가 대폭 강화되었습니다.
Gmail, Yahoo 대량 발송자 요구사항 (2024년 시행, 2025년 강화):
- 일일 5,000통 이상 발송자: SPF, DKIM, DMARC 모두 필수
- DMARC 정책: 최소
p=none이상 설정 필수 - 원클릭 수신거부: 마케팅 이메일에 쉬운 구독 해지 기능 필수
- 스팸 신고율: 0.3% 미만 유지 필수
11.3 권장 DMARC 정책 (2025년)
기존에는 모니터링 모드(p=none)로 시작하는 것이 일반적이었지만, 2025년에는 보다 적극적인 정책 적용이 권장됩니다.
단계별 DMARC 강화 로드맵:
11.4 AI 기반 이메일 보안
AI/ML 기반 이메일 보안 솔루션이 표준으로 자리잡으면서, 기존 규칙 기반 필터링의 한계를 극복하고 있습니다.
AI 이메일 보안 기능:
- 행위 분석: 발신자의 평소 패턴과 다른 이메일 탐지
- 자연어 처리(NLP): 피싱 의도가 있는 문구 식별
- 발신자 평판 분석: 실시간 발신 IP/도메인 신뢰도 평가
- 첨부파일 샌드박스: AI 기반 동적 악성코드 분석
11.5 이메일 인증 체크리스트 (2025년)
대량 이메일 발송자가 반드시 확인해야 할 항목:
| 항목 | 필수 여부 | 권장 설정 |
|---|---|---|
| SPF | 필수 | v=spf1 include:sendgrid.net -all (Hard Fail) |
| DKIM | 필수 | 2048비트 이상 키 사용 |
| DMARC | 필수 | p=reject (단계적 적용) |
| ARC | 권장 | 이메일 전달 시 인증 체인 유지 |
| BIMI | 권장 | 브랜드 로고 표시로 신뢰도 향상 |
| MTA-STS | 권장 | 전송 중 암호화 강제 |
결론
SPF, DKIM, DMARC를 올바르게 설정하면 이메일 발송 신뢰도를 크게 향상시킬 수 있습니다. 특히 2025년에는 Gmail, Yahoo 등 주요 이메일 제공업체의 대량 발송자 요구사항이 강화되어 이메일 인증이 선택이 아닌 필수가 되었습니다.
단계적 적용과 정기적인 모니터링을 통해 이메일 전달률을 개선하고, 고객과의 커뮤니케이션 품질을 향상시킬 수 있습니다. AI 기반 피싱 공격이 증가하는 상황에서 DMARC reject 정책까지 완전히 적용하는 것을 강력히 권장합니다.
댓글
의견이나 질문을 남겨주세요. GitHub 계정으로 로그인하여 댓글을 작성할 수 있습니다.
댓글을 불러오는 중...