핵심 요약
- SPF(RFC 7208): 엔벨로프 발신자(Return-Path)에 내 도메인을 사용해 메일을 보낼 수 있도록 승인된 IP 주소와 발송 서비스 목록을 게시합니다.
- DKIM(RFC 6376): 비대칭 키 쌍을 사용해 각 메시지에 암호화 서명을 추가하여, 메시지가 서명 도메인의 승인을 받았고 전송 중에 변경되지 않았음을 증명합니다.
- DMARC(RFC 7489): SPF 및 DKIM 정렬(alignment)에 실패한 메일을 수신 서버가 어떻게 처리할지(none, quarantine, reject)와 집계 보고서를 어디로 보낼지 지정합니다.
- 2024년 2월부터 Gmail과 Yahoo는 대량 발신자(Gmail 기준 개인 Gmail 계정으로 하루 5,000통 이상 발송하는 발신자)에게 SPF와 DKIM 인증을 모두 적용하고, DMARC 레코드(최소
p=none)를 게시하며, From 도메인을 SPF 또는 DKIM과 정렬하도록 요구합니다.
Google Workspace, Microsoft 365, Yahoo Mail 같은 수신 메일 서버가 contact@yourcompany.com에서 보낸 메시지를 받으면, 필터링 시스템은 일련의 기술 점검을 실행해 해당 메시지가 실제로 그 도메인의 정당한 소유자가 보낸 것인지, 아니면 스푸핑이나 피싱 시도인지 판단합니다.
도메인의 DNS(Domain Name System)에 필요한 인증 레코드가 없으면 메시지는 고위험으로 취급됩니다. 스팸함으로 분류되거나 SMTP 단계에서 곧바로 거부될 가능성이 높으며, 이 경우 발송 플랫폼에는 바운스로 기록됩니다.
1. 이메일 인증의 세 가지 핵심 메커니즘
이메일 보안 체계가 어떻게 함께 작동하는지 이해하려면, 각 프로토콜이 맡은 서로 다르면서도 상호 보완적인 역할을 살펴보는 것이 좋습니다.
SPF(Sender Policy Framework)
SPF는 DNS에 게시하는 공개 허용 목록과 같은 역할을 합니다. 이 레코드는 IP 주소로, 또는 Amazon SES, SendGrid, Mailgun 같은 서비스를 가리키는 include 메커니즘으로 지정한 서버 중 어떤 서버가 내 도메인을 대신해 메일을 보낼 수 있는지 선언합니다. 수신 서버는 화면에 표시되는 From 주소가 아니라 엔벨로프 발신자(MAIL FROM / Return-Path) 도메인을 기준으로 SPF를 확인합니다.
DKIM(DomainKeys Identified Mail)
DKIM은 메시지의 무결성을 검증합니다. 메시지가 발송 서버를 떠날 때 개인 키로 디지털 서명이 생성되어 DKIM-Signature 헤더로 메시지에 추가됩니다. 수신 서버는 DNS에서 해당 공개 키를 조회해 서명을 검증하고, 서명된 헤더와 본문이 전송 과정에서 위조되거나 수정되지 않았음을 확인합니다.
DMARC(Domain-based Message Authentication, Reporting, and Conformance)
DMARC는 SPF와 DKIM을 하나로 묶는 계층입니다. 수신 서버가 화면에 표시되는 발신자 주소(Header From)의 도메인이 SPF 또는 DKIM으로 인증된 도메인과 일치하는지 확인하도록 요구하며, 이를 정렬(alignment) 확인이라고 합니다. 두 가지 중 하나 이상이 통과하고 정렬되면 메시지는 DMARC를 통과합니다. DMARC는 또한 인증에 실패했을 때 수신 서버가 취할 조치를 정의하고, 집계 보고서(RUA)를 받을 수 있는 경로를 제공합니다.
2. SPF 레코드의 구조와 구문
SPF 레코드는 엔벨로프 발신자에 사용되는 도메인에 TXT 레코드로 게시합니다. 자체 서버나 Google Workspace에서 보내는 메일이라면 일반적으로 루트 도메인이 이에 해당합니다.
Host / Name: @ (or yourcompany.com)
Value / Content: v=spf1 include:amazonses.com ~all
레코드 각 부분의 의미:
v=spf1: 사용 중인 SPF 버전을 선언합니다. 반드시 레코드의 첫 번째 항목이어야 합니다.include:amazonses.com: Amazon Simple Email Service(SES)의 발송 IP 대역이 해당 도메인의 메일을 보낼 수 있도록 승인합니다. SendGrid도 함께 사용한다면include:sendgrid.net을 사용합니다. 참고로 Amazon SES의 경우 맞춤 MAIL FROM 하위 도메인(예:bounce.yourcompany.com)을 구성하고, SES가 제공하는 MX 레코드와 함께 이 레코드를 해당 하위 도메인에 게시해야만 SPF가 DMARC 기준으로 정렬됩니다. SendGrid에서 도메인 인증과 자동 보안(automated security)을 활성화하면, SendGrid가 CNAME을 통해 자체 return-path 하위 도메인의 SPF를 관리하므로 루트 수준의 include는 필요하지 않습니다.~all(SoftFail): 목록에 없는 서버에서 온 메일을 의심스러운 메일로 취급하되 대체로 수신은 허용하도록 지정합니다. 특히 아직 발송 출처를 파악하는 중이라면 가장 흔히 쓰이는 선택지입니다.-all(HardFail): 승인되지 않은 출처에서 온 메일을 명확한 실패로 처리하도록 지정합니다. 수신 서버가 이를 거부할 수 있지만, 최근 많은 대형 메일박스 제공업체는 SPF 결과만으로 거부하기보다 DMARC 결과를 종합해 판단합니다.
include, a, mx, ptr, exists, redirect 및 중첩 조회 포함). 여러 서비스가 같은 도메인으로 메일을 보낸다면(예: Google Workspace와 Amazon SES) 하나의 레코드로 합치십시오: v=spf1 include:_spf.google.com include:amazonses.com ~all.
3. DKIM 설정하기
DKIM 설정에는 일반적으로 RSA 키 쌍 생성이 포함되며, 현재 권장되는 최소 키 길이는 2048비트입니다. eMailBase를 통해 발송 서비스를 연결하면 다음과 같이 진행됩니다.
- 발송 서비스가 DKIM 셀렉터용 DNS 레코드를 생성합니다. Amazon SES Easy DKIM은
<token>._domainkey.yourcompany.com형식의CNAME레코드 3개를 발급하고, SendGrid는 DKIMCNAME레코드 2개(s1._domainkey와s2._domainkey)와 return-path 하위 도메인용 레코드 1개를 발급하며, Mailgun은 일반적으로 공개 키가 담긴 TXT 레코드를 제공합니다. - DNS 서비스의 관리 콘솔에 로그인해 발급된 레코드를 정확히 그대로 생성합니다.
- 레코드가 전파되면 eMailBase가 자동으로 DNS를 조회해 활성화를 확인합니다.
4. DMARC 정책을 안전하게 적용하기
첫날부터 엄격한 DMARC 정책을 게시하면, 아직 SPF나 DKIM이 완전히 적용되지 않은 발송 출처가 있을 경우 정상적인 메일까지 거부될 수 있습니다. DMARC 레코드는 _dmarc.yourcompany.com에 TXT 레코드로 게시하며, 표준 적용 절차는 세 단계로 이루어집니다.
| 단계 | 정책 구문 | 운영 목표 |
|---|---|---|
| 1단계: 모니터링 | v=DMARC1; p=none; rua=mailto:dmarc@yourcompany.com |
메일 전달에 영향을 주지 않으면서 집계 보고서를 수집하고 정상적인 발송 출처를 모두 파악합니다. |
| 2단계: 격리 | v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@yourcompany.com |
인증에 실패한 메시지의 25%에 격리 정책(일반적으로 스팸함으로 전달)을 적용하고, 보고서를 통해 정상 메일이 통과하는 것이 확인되면 비율을 높입니다. pct 지원 여부는 수신 서버마다 다르며, 표준 개정안인 DMARCbis에서는 이 태그가 제외됩니다. |
| 3단계: 거부 | v=DMARC1; p=reject; rua=mailto:dmarc@yourcompany.com |
DMARC에 실패한 모든 메일을 거부하도록 수신 서버에 지시해, 도메인의 무단 사용을 차단합니다. |
5. DNS 레코드 검증 및 문제 해결
레코드를 등록한 후에는 표준 명령줄 도구로 확인할 수 있습니다.
dig +short TXT yourcompany.com
# Check a DKIM record (replace the selector with your own)
dig +short CNAME selector._domainkey.yourcompany.com
# Check the DMARC record
dig +short TXT _dmarc.yourcompany.com
eMailBase 워크스페이스에서는 DNS & Deliverability Manager가 이러한 점검을 자동으로 실행하며, 구문 충돌이나 누락된 레코드가 발생하는 즉시 알려 줍니다.


