SPF란? 이메일 발신 도메인 보호

SPF(Sender Policy Framework)란? 도메인 대신 이메일을 보낼 수 있는 서버 목록을 DNS에 등록하는 이메일 인증 기술의 정의, 작동 원리, 레코드 작성법, DKIM·DMARC와의 차이까지 정리합니다.
제니's avatar
Oct 03, 2025
SPF란? 이메일 발신 도메인 보호

도입

어느 날 고객으로부터 연락이 옵니다.
"귀사에서 이상한 이메일을 받았는데, 이거 진짜인가요?"

확인해 보니, 누군가가 우리 회사 도메인(@yourcompany.com)을 사칭하여 피싱 메일을 보내고 있습니다.
이메일 시스템은 기본적으로 "보낸 사람" 주소를 검증하는 기능이 없기 때문에, 아무나 우리 도메인을 넣어서 이메일을 보낼 수 있습니다.

이런 이메일 스푸핑(Email Spoofing)을 방지하는 첫 번째 방어선이 바로 SPF(Sender Policy Framework)입니다.

SPF란? — 한 줄 정의

SPF(Sender Policy Framework)란, 도메인 소유자가 "이 도메인으로 이메일을 보낼 수 있는 서버 목록"을 DNS에 공개하여, 수신 서버가 허용되지 않은 서버에서 온 이메일을 식별할 수 있게 하는 이메일 인증 기술입니다.

  • 쉽게 말해, "방문자 명단"입니다 — 우리 도메인 대신 이메일을 보낼 수 있는 서버를 미리 등록해 둡니다

  • 수신 메일 서버는 이 명단을 확인하여, 명단에 없는 서버에서 온 이메일을 의심스러운 메일로 처리합니다

  • DNS TXT 레코드로 게시합니다

  • DKIM, DMARC와 함께 이메일 인증의 3대 표준을 구성합니다

왜 SPF가 필요한가요?

이메일 프로토콜(SMTP)은 1980년대에 설계되었고, 발신자 인증 기능이 없습니다.
누구든 "보낸 사람" 필드에 아무 이메일 주소를 넣어서 보낼 수 있습니다.

SPF가 있을 때

SPF가 없을 때

허용된 서버 목록에 없는 발신은 실패 처리

누구든 우리 도메인으로 이메일 발송 가능

도메인 사칭(스푸핑) 시도를 수신 서버가 탐지

사칭 이메일과 정상 이메일을 구분할 수 없음

도메인 평판(Reputation) 보호에 기여

스팸 발송자가 도메인 평판을 훼손

이메일 전달률(Deliverability) 향상

정상 이메일도 스팸으로 분류될 가능성 높음

DMARC 정책 적용의 토대

DMARC를 적용해도 SPF 검증 불가

2024년부터 Google, Yahoo, Microsoft는 대량 발송자에게 SPF, DKIM, DMARC를 모두 필수로 요구합니다. SPF가 없으면 이메일이 거부되거나 스팸으로 분류될 수 있습니다.

SPF는 어떻게 작동하나요?

1단계: 도메인 소유자가 SPF 레코드 게시

  • 도메인의 DNS에 허용된 발신 서버 목록을 TXT 레코드로 게시합니다

  • 예: v=spf1 ip4:192.168.1.100 include:_spf.google.com -all

2단계: 이메일 발송

  • 이메일이 발송되면, 발신 서버의 IP 주소가 이메일과 함께 전달됩니다

3단계: 수신 서버가 SPF 레코드 확인

  • 수신 메일 서버가 이메일의 Return-Path(반송 주소) 도메인에서 SPF 레코드를 DNS로 조회

  • 발신 서버의 IP 주소가 SPF 레코드의 허용 목록에 있는지 확인

4단계: 결과 판정

  • Pass: 발신 IP가 허용 목록에 있음 → 정상

  • Fail: 허용 목록에 없음 → SPF 레코드의 정책에 따라 처리

  • SoftFail: 허용 목록에 없지만 엄격하게 거부하지는 않음 (테스트 단계에서 주로 사용)

  • Neutral: 판단 보류

SPF 레코드 구성 요소

SPF 레코드는 여러 메커니즘(Mechanism)과 한정자(Qualifier)로 구성됩니다.

주요 메커니즘

메커니즘

의미

예시

ip4

특정 IPv4 주소 또는 범위를 허용

ip4:203.0.113.0/24

ip6

특정 IPv6 주소 또는 범위를 허용

ip6:2001:db8::/32

include

다른 도메인의 SPF 레코드를 참조

include:_spf.google.com

a

도메인의 A 레코드 IP를 허용

a:mail.example.com

mx

도메인의 MX 레코드 서버를 허용

mx

all

위 규칙에 해당하지 않는 모든 발신에 대한 기본 정책

-all

한정자 (Qualifier)

한정자

의미

사용 예

+ (Pass)

허용 (기본값, 생략 가능)

+ip4:1.2.3.4

- (Fail)

허용되지 않음 → 거부

-all

~ (SoftFail)

허용되지 않지만 엄격히 거부하지 않음

~all

? (Neutral)

판단 보류

?all

실전 팁: SPF 레코드 끝의 all 앞 한정자가 핵심입니다. -all은 "목록에 없으면 거부", ~all은 "목록에 없으면 의심하되 일단 받아줘"입니다. 최종 목표는 -all이지만, 처음에는 ~all로 시작하여 정상 이메일이 차단되지 않는지 확인하는 것이 안전합니다.

SPF 레코드 읽는 법 — 실전 예시

실제 SPF 레코드를 하나 분석해 보겠습니다.

v=spf1 ip4:203.0.113.5 include:_spf.google.com include:servers.mcsv.net ~all

부분

의미

v=spf1

SPF 버전 1 (항상 이것으로 시작)

ip4:203.0.113.5

이 IP 주소의 서버에서 보내는 이메일을 허용

include:_spf.google.com

Google Workspace의 메일 서버를 허용

include:servers.mcsv.net

Mailchimp의 메일 서버를 허용

~all

위 목록에 없는 서버에서 보낸 이메일은 SoftFail 처리

SPF vs DKIM vs DMARC — 뭐가 다른가요?

구분

SPF

DKIM

DMARC

핵심 질문

"이 서버가 이 도메인으로 메일을 보낼 권한이 있는가?"

"이메일이 변조되지 않았는가?"

"인증 실패 시 어떻게 처리할 것인가?"

검증 대상

발신 서버 IP 주소

이메일 콘텐츠 무결성 + 발신 도메인

SPF/DKIM 결과 + From 주소 정렬

비유

방문자 명단

위조 방지 도장

경비 지침

DNS 레코드

TXT (도메인)

TXT (selector._domainkey.도메인)

TXT (_dmarc.도메인)

단독 사용 시 한계

이메일 내용 변조 감지 불가, From 주소 정렬 미검증

인증 실패 시 처리 정책 없음

SPF 또는 DKIM 없이는 작동 불가

세 가지가 함께 작동해야 완전한 보호가 됩니다. SPF는 "허용된 서버인가?", DKIM은 "내용이 진짜인가?", DMARC는 "실패하면 어떻게 할 것인가?"를 각각 담당합니다. 하나만 있으면 빈틈이 생깁니다.

SPF 설정하는 법

1. 이메일 발송 서비스 목록 정리

  • 우리 도메인으로 이메일을 보내는 모든 서비스를 파악합니다

  • 자체 메일 서버, Google Workspace, Microsoft 365, 마케팅 도구(Mailchimp, HubSpot 등), CRM, 고객 지원 도구, 트랜잭션 이메일 서비스 등

  • 빠뜨리면 해당 서비스의 이메일이 SPF 실패 처리됩니다

2. SPF 레코드 작성

  • v=spf1로 시작하고, 각 서비스의 IP 또는 include 도메인을 추가합니다

  • 마지막에 ~all(SoftFail) 또는 -all(Fail)을 붙입니다

  • 처음에는 ~all로 시작하여 테스트 후 -all로 강화하는 것을 권장합니다

3. DNS에 TXT 레코드 등록

  • 도메인의 DNS 관리 콘솔에서 TXT 레코드를 추가합니다

  • 호스트: @ 또는 빈칸 (도메인 루트)

  • 값: 작성한 SPF 레코드 전체

4. 테스트 및 검증

  • 테스트 이메일을 보내고 이메일 헤더에서 SPF 결과를 확인

  • Gmail에서 "원본 보기"로 Received-SPF: pass 여부를 확인

  • 온라인 SPF 검증 도구(MXToolbox 등)로 레코드 문법 확인

SPF 설정 시 주의사항

❌ 하지 마세요

✅ 이렇게 하세요

하나의 도메인에 여러 개의 SPF 레코드 게시

SPF 레코드는 반드시 1개만 — 여러 서비스는 하나의 레코드에 통합

DNS Lookup 10개 제한 초과

include, a, mx 등 DNS 조회가 필요한 메커니즘은 총 10개까지만 가능

서드파티 서비스를 SPF에 추가하지 않음

우리 도메인으로 메일 보내는 모든 서비스를 빠짐없이 포함

SPF만 설정하고 DKIM, DMARC는 무시

SPF + DKIM + DMARC 세 가지를 모두 설정

설정 후 방치하고 새 서비스 추가 시 갱신 안 함

새로운 이메일 발송 서비스 도입 시 즉시 SPF 레코드에 반영

처음부터 -all로 시작

~all로 시작하여 테스트 후 -all로 강화

DNS Lookup 10개 제한은 가장 흔한 실수입니다. include, a, mx, redirect 등 DNS 조회가 필요한 메커니즘은 총 10개까지만 허용됩니다. 이를 초과하면 SPF 검증 자체가 실패(PermError)합니다. ip4, ip6는 DNS 조회가 아니므로 제한에 포함되지 않습니다.

SPF의 한계

SPF는 이메일 인증의 중요한 첫 단계지만, 단독으로는 완벽하지 않습니다.

  • From 주소를 검증하지 않음: SPF는 Return-Path(봉투 발신 주소)를 검증하지만, 사용자가 실제로 보는 "보낸 사람(From)" 주소는 검증하지 않습니다. DMARC의 정렬(Alignment) 기능이 이 갭을 메웁니다

  • 이메일 내용 변조 감지 불가: SPF는 발신 서버만 확인하고, 이메일 내용이 중간에 변조되었는지는 알 수 없습니다. 이것은 DKIM의 역할입니다

  • 이메일 전달(Forwarding) 시 깨짐: 이메일이 전달되면 발신 서버 IP가 바뀌므로 SPF가 실패할 수 있습니다

  • DNS Lookup 10개 제한: 많은 서드파티 서비스를 사용하면 제한에 도달하기 쉽습니다

SPF가 B2B 비즈니스에 미치는 영향

  • 콜드 이메일 전달률: SPF가 없으면 아웃바운드 영업 이메일이 스팸함으로 직행할 가능성이 높습니다

  • 마케팅 이메일: 뉴스레터, 프로모션 이메일의 도달률에 직접 영향

  • 거래 이메일: 주문 확인, 비밀번호 재설정 등 중요한 거래 이메일이 전달되지 않을 수 있습니다

  • 도메인 평판: SPF 없이 사칭당하면 도메인 블랙리스트에 올라갈 위험

  • 파트너/고객 신뢰: 보안에 민감한 B2B 고객은 이메일 인증 여부를 확인합니다

핵심 요약

항목

내용

SPF란

도메인 대신 이메일을 보낼 수 있는 서버 목록을 DNS에 게시하는 인증 기술

작동 원리

수신 서버가 발신 IP를 SPF 레코드의 허용 목록과 대조

레코드 위치

DNS TXT 레코드 (도메인 루트)

DKIM과의 차이

SPF는 "누가 보냈는가(서버)", DKIM은 "변조되지 않았는가(콘텐츠)"

DMARC와의 관계

DMARC는 SPF/DKIM 결과 + From 주소 정렬을 확인하고 정책을 적용

주의사항

레코드 1개만, DNS Lookup 10개 제한, 모든 발송 서비스 포함

비유

"방문자 명단" — 허용된 서버만 우리 이름으로 메일을 보낼 수 있음

관련 글

Share article

엔터프라이즈를 위한 커스텀 영업 CRM, 트래킷