메일이 스팸함에 빠지는 이유: SPF·DKIM·DMARC 한 번에
발송 메일이 스팸 처리되는 흔한 원인과 SPF·DKIM·DMARC를 함께 맞추는 방법.
정성껏 쓴 메일이 상대방 받은편지함이 아니라 스팸함으로 사라진 경험은 누구에게나 있다. 도달률(deliverability)은 단순히 메일을 “보냈는가”가 아니라 “받은편지함에 도착했는가”의 문제다. 수신 서버(Gmail, Outlook, 네이버 등)는 발신 도메인이 정말 그 도메인의 주인이 보낸 것인지, 평소 평판은 어떤지, 내용이 스팸 패턴과 닮았는지를 종합해 받은편지함·프로모션·스팸을 가른다.
가장 큰 비중을 차지하는 것이 인증(authentication) 세 가지다. SPF, DKIM, DMARC를 올바로 맞추면 도달률의 절반은 해결된다. 여기에 역방향 DNS(PTR)와 IP 평판, 그리고 발송 내용·수신자 목록 위생을 더하면 나머지가 채워진다. 이 글은 그 전부를 우선순위 순으로 정리하고, 각 항목을 어떻게 직접 검증하는지까지 다룬다.
SPF·DKIM·DMARC는 따로가 아니라 “함께” 동작한다
세 가지를 각각 켜는 것만으로는 부족하다. 핵심은 정렬(alignment)이다. DMARC는 SPF나 DKIM 중 최소 하나가 통과하면서 동시에 그 결과가 발신 주소(From:)의 도메인과 일치할 때만 “pass”로 본다.
| 항목 | 무엇을 인증하나 | 레코드 위치 |
|---|---|---|
SPF | 발송 IP가 이 도메인을 대신해 보낼 권한이 있는지 (Return-Path 기준) | 도메인 루트 TXT |
DKIM | 메일 본문/헤더가 발송 후 변조되지 않았는지 (서명 검증) | selector._domainkey TXT |
DMARC | SPF/DKIM 결과가 From: 도메인과 정렬되는지 + 실패 시 정책 | _dmarc TXT |
즉 DMARC는 SPF·DKIM을 묶어 “이 메일은 정말 우리 도메인 것”임을 보증하는 상위 계층이다. SPF만 켜고 정렬을 신경 쓰지 않으면, SPF가 기술적으로 통과해도 DMARC는 실패할 수 있다. 현재 상태를 SPF 조회, DKIM 조회, DMARC 조회로 각각 확인하거나, 한 번에 보고 싶다면 이메일 도달률 종합 진단을 쓰면 된다.
역방향 DNS(PTR)와 IP 평판
인증이 완벽해도 발송 IP의 신뢰가 낮으면 스팸으로 분류된다. 수신 서버가 가장 먼저 보는 것 중 하나가 역방향 DNS(PTR)다. 발송 IP를 거꾸로 조회했을 때 정상적인 호스트명(예 mail.example.com)이 나오고, 그 호스트명이 다시 같은 IP로 정방향 조회되는 “forward-confirmed reverse DNS”가 성립해야 한다. PTR이 없거나 통신사 기본값(ip-1-2-3-4.isp.net)이면 감점이다.
- 전용 IP vs 공유 IP: 공유 IP는 같은 풀의 다른 발신자가 스팸을 보내면 도매금으로 평판이 깎인다.
- 블랙리스트(RBL/DNSBL): Spamhaus 등 차단 목록에 IP/도메인이 올라갔는지 주기적으로 점검한다.
- 워밍업: 새 IP/도메인은 처음부터 대량 발송하지 말고 며칠에 걸쳐 발송량을 서서히 늘린다.
내용과 수신자 목록 위생
평판은 결국 받는 사람의 반응으로 결정된다. 스팸 신고·미개봉·반송이 쌓이면 도메인 전체가 의심받는다. 기본 위생만 지켜도 큰 차이가 난다.
- 옵트인 목록만 사용: 동의 없이 수집·구매한 주소는 반송과 스팸 신고의 주범이다.
- 하드 바운스 즉시 제거: 존재하지 않는 주소로 반복 발송하면 평판이 급락한다.
- 원클릭 수신거부: 해지 링크를 숨기지 말 것. 스팸 신고보다 수신거부가 훨씬 낫다.
- 내용: 본문 전체를 이미지 한 장으로 넣기, 단축 URL 남발, 과장 제목(전부 대문자·!!!)은 피한다.
우선순위 체크리스트
- SPF 레코드 확인 — 실제 발송 서비스(메일 서버·SendGrid 등)가 모두 포함됐는지,
~all또는-all로 끝나는지. - DKIM 서명 활성화 — 발송 도구의 셀렉터로 공개키 TXT가 게시됐는지.
- DMARC 게시 — 처음엔
p=none으로 시작해 리포트를 모은 뒤quarantine→reject로 단계적으로 강화. - 정렬 검증 — From: 도메인과 SPF/DKIM 도메인이 일치하는지.
- PTR·블랙리스트 — 역방향 DNS 정상, 차단 목록 미등재.
- 목록·내용 위생 — 옵트인, 바운스 정리, 깔끔한 본문.
실전 예시: SPF 정렬 실패로 DMARC가 깨지는 경우
shop.example.com이 마케팅 메일을 외부 플랫폼으로 발송한다고 하자. 설정은 이랬다.
- From:
news@shop.example.com - 플랫폼이 실제 봉투(Return-Path)는
bounce@mailer-platform.net으로 발송 - SPF는
mailer-platform.net기준으로 통과
개별적으로 보면 SPF는 pass다. 하지만 DMARC는 SPF가 통과한 도메인(mailer-platform.net)이 From: 도메인(shop.example.com)과 정렬되지 않으므로 SPF 정렬을 실패로 본다. DKIM도 서명되지 않았다면 정렬 가능한 인증이 0개가 되어 결국 DMARC fail → 정책이 p=reject였다면 그대로 거부된다.
해결책: ① 플랫폼이 shop.example.com 하위 도메인으로 DKIM 서명을 하도록 셀렉터/공개키를 등록하면 DKIM 정렬이 성립한다. 또는 ② 커스텀 Return-Path(예 bounce.shop.example.com)를 플랫폼에 위임해 SPF 정렬을 맞춘다. 둘 중 하나만 성립해도 DMARC는 통과한다. 수정 후 DMARC 조회로 정책을 확인하고, 종합 진단으로 세 가지가 동시에 녹색인지 다시 본다.