OneWebDesk

메일이 스팸함에 빠지는 이유: 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
DMARCSPF/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 남발, 과장 제목(전부 대문자·!!!)은 피한다.

우선순위 체크리스트

  1. SPF 레코드 확인 — 실제 발송 서비스(메일 서버·SendGrid 등)가 모두 포함됐는지, ~all 또는 -all로 끝나는지.
  2. DKIM 서명 활성화 — 발송 도구의 셀렉터로 공개키 TXT가 게시됐는지.
  3. DMARC 게시 — 처음엔 p=none으로 시작해 리포트를 모은 뒤 quarantinereject로 단계적으로 강화.
  4. 정렬 검증 — From: 도메인과 SPF/DKIM 도메인이 일치하는지.
  5. PTR·블랙리스트 — 역방향 DNS 정상, 차단 목록 미등재.
  6. 목록·내용 위생 — 옵트인, 바운스 정리, 깔끔한 본문.

실전 예시: 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 조회로 정책을 확인하고, 종합 진단으로 세 가지가 동시에 녹색인지 다시 본다.

자주 묻는 질문

SPF, DKIM, DMARC 중 하나만 설정해도 되나요?
권장하지 않습니다. DMARC는 SPF나 DKIM 중 적어도 하나가 From: 도메인과 정렬되어 통과할 때만 pass로 인정합니다. SPF만 켜고 정렬을 신경 쓰지 않으면 DMARC가 실패할 수 있으므로 세 가지를 함께 맞추는 것이 안전합니다.
DMARC를 처음부터 p=reject로 설정해도 되나요?
위험합니다. 처음에는 p=none으로 게시해 집계 리포트(rua)를 며칠에서 몇 주간 수집하고, 정상 메일이 모두 통과하는지 확인한 뒤 quarantine, 그다음 reject로 단계적으로 올리세요. 곧바로 reject로 두면 미처 정렬을 맞추지 못한 정상 메일까지 거부될 수 있습니다.
인증을 다 맞췄는데도 스팸함에 들어가요. 왜죠?
인증은 필요조건이지 충분조건이 아닙니다. IP 평판, 역방향 DNS(PTR) 미설정, 블랙리스트 등재, 스팸 신고·반송 누적, 이미지 위주 본문이나 과장 제목 같은 내용 문제가 남아 있을 수 있습니다. 옵트인 목록 사용과 바운스 정리부터 점검하세요.
설정을 바꾸면 효과가 바로 나타나나요?
DNS 레코드는 TTL만큼 캐시되므로 반영에 수십 분에서 몇 시간이 걸릴 수 있습니다. 또 IP/도메인 평판은 누적된 발송 이력으로 결정되므로, 워밍업과 꾸준한 양질의 발송을 통해 점진적으로 회복됩니다.

이 가이드와 함께 쓰면 좋은 도구