da-eun.
블로그
· 2026년 8월 2일 수정 #도달률#이메일인증#DNS

SPF·DKIM·DMARC — 받는 서버는 발신자를 어떻게 검증하나

발신 도메인 인증 표준 세 가지가 각각 무엇을 확인하는지, 그리고 셋이 어떻게 맞물리는지 정리합니다.

받는 메일 서버 입장에서 생각해 보면 단순합니다. “이 메일이 정말 그 도메인에서 보낸 게 맞나?”를 확인할 방법이 필요하고, 그 확인 장치가 SPF·DKIM·DMARC 세 가지입니다.

인증이 어긋나 있으면 내용과 무관하게 사칭 가능성으로 감점됩니다. 그래서 발송을 시작하기 전에 맞춰 두는 항목입니다.

SPF — 누가 이 도메인 이름으로 보낼 수 있나

SPF는 “내 도메인 이름으로 메일을 보낼 자격이 있는 발신 서버(IP) 목록”을 DNS에 공개해 두는 표준입니다. 받는 서버는 메일이 도착하면 그 발신 IP가 목록에 있는지 대조합니다.

가장 흔히 어긋나는 지점은 발송 경로를 바꾸거나 추가한 뒤입니다. 새 발송 IP가 목록에 없으면 정상적인 메일도 실패로 처리됩니다.

DKIM — 내용이 중간에 바뀌지 않았나

SPF가 “발신 자격”을 본다면, DKIM은 메일 본문·헤더에 디지털 서명을 붙여 “전송 도중 내용이 변조되지 않았음”을 증명합니다. 발신 측은 비공개 키로 서명하고, 받는 측은 DNS에 공개된 키로 검증합니다.

서명이 깨지면(중간에 변조됐거나 설정이 틀렸으면) 검증에 실패합니다. DKIM은 한 번 제대로 셋업하면 안정적인 편입니다.

DMARC — 정렬(alignment)과 정책

DMARC는 앞의 두 결과를 받아, 그 인증이 걸린 도메인이 수신자에게 보이는 발신 주소(From) 도메인과 맞는지 확인합니다. 이 일치를 정렬(alignment) 이라고 합니다.

표준(RFC 7489)이 정의하는 DMARC 통과 조건은 하나입니다.

통과와 정렬을 동시에 만족하는 인증이 최소 하나 있을 것.

SPF든 DKIM이든 상관없지만, 통과한 그것이 From 도메인에 정렬돼 있어야 합니다. 그래서 SPF와 DKIM이 각각 통과해도 DMARC는 실패할 수 있습니다 — 두 통과가 모두 From과 다른 도메인에 걸려 있으면 조건을 만족하는 것이 하나도 없기 때문입니다.

정렬 기준에는 완화(relaxed)와 엄격(strict) 두 가지가 있고, 기본값인 완화 모드에서는 mail.example.com 같은 하위 도메인도 example.com과 정렬된 것으로 인정합니다.

정렬이 깨지는 두 경우 — 성격이 다릅니다

설정으로 해결되는 쪽 — 외부 발송 대행을 쓸 때입니다. 인증이 대행사 도메인에 걸리고 From에는 내 도메인이 찍히면 정렬이 깨집니다. 이건 내 도메인으로 인증이 걸리도록 설정하면 해소됩니다.

설정 밖의 쪽 — 전달(forwarding)입니다. 받는 사람이 메일을 다른 주소로 넘기면 그 과정에서 발신 경로가 바뀌어 정렬이 깨질 수 있습니다. 이건 보내는 쪽 설정으로 막을 수 없습니다. DMARC 정책을 한 번에 reject까지 올리지 않는 이유 중 하나가 이것입니다.

실패했을 때의 처리는 발신자가 정한다

DMARC 레코드에는 정책을 함께 선언합니다. 정렬된 통과가 하나도 없을 때 받는 서버가 어떻게 할지를 지정하는 값입니다.

정책실패 시 처리쓰는 시점
p=none아무 처리도 하지 않음 — 결과를 리포트로만 보냄초기. 리포트로 현황 파악
p=quarantine스팸함으로정렬이 맞는 것을 확인한 뒤
p=reject수신 거부사칭을 완전히 차단하는 단계

p=none 단계에서는 실패 판정이 나와도 메일이 막히지 않습니다. 이 상태로 리포트를 며칠 받아 어느 발송 경로에서 정렬이 깨지는지 확인한 뒤 단계를 올립니다. 확인 전에 reject부터 걸면 아직 정렬이 안 맞는 경로의 정상적인 메일도 거부될 수 있습니다.

정리

표준확인하는 것
SPF이 IP가 그 도메인 이름으로 보낼 자격이 있나
DKIM서명이 유효한가 (내용이 중간에 바뀌지 않았나)
DMARC그 통과가 From 도메인에 정렬돼 있나 + 실패 시 어떻게 처리할까

SPF와 DKIM은 각각 독립적으로 판정되고, DMARC는 그 결과를 From 도메인 기준으로 다시 봅니다. 그래서 설정할 때는 셋을 따로 맞추는 게 아니라 From 도메인을 기준으로 함께 맞춥니다.

DMARC 리포트를 며칠 받아 보면 현재 어느 경로에서 정렬이 깨지고 있는지 대부분 드러납니다.

셋을 각각 실제로 넣고 확인하는 방법은 따로 정리해 두었습니다.

상담 문의