보안 가이드

자기 도메인을 사칭한 이메일 스푸핑: 침해와 구분하는 법, 그리고 SPF·DKIM·DMARC로 막는 법

내 도메인에서 온 것처럼 보이는 수상한 메일은 대개 침해가 아닌 From 위조입니다. 메일 헤더로 둘을 구분하는 법과 SPF, DKIM, DMARC로 스푸핑을 막는 단계를 정리했습니다.

게시 2026-06-23 업데이트 2026-10-05 6분 읽기
이 페이지에서

어느 날 자기 회사 도메인에서 온 것처럼 보이는 수상한 메일이 자기 받은편지함에 떨어진다. 먼저 — 숨을 고르라. 대부분의 경우 이것은 침입이 아니라 발신자 위조다. 구분하는 법과 막는 법을 본다(공격 절차 없음).

먼저, 안심: 스푸핑 ≠ 점령

이것이 핵심 오해다. 이메일 봉투의 "발신자"는 보내는 사람이 자유롭게 쓸 수 있다. 그러니 당신의 도메인 이름이 적힌 메일 한 통이 집이 털렸다는 뜻은 아니다.

외부 출발점(공격자의 릴레이) — From을 당신처럼 보이게 위조
↓
당신의 수신 서버(MX)가 수락(거부 근거 없음 = 전달됨)
↓ 전달이 설정되어 있으면
최종 받은편지함(Gmail 등) — 진짜처럼 "도착"한다
위조 메일은 외부 발신자에게서 시작해, 당신의 수신 서버(MX)를 거치고 — 전달이 설정되어 있으면 — 최종 받은편지함에 도달한다. 출발점은 당신의 인프라가 아니다.

다만, 진짜로 침해된 메일박스가 불가능한 것은 아니다. 둘을 구분하는 방법은 헤더를 읽는 것이다.

헤더로 "침해"와 "위조"를 구분하라

본문 뒤에서 모든 메일은 "헤더" — 배달 기록 — 를 지닌다(Gmail에서는 "원본 보기"). 다섯 필드가 가장 중요하다.

헤더볼 것읽는 법
Authentication-Resultsspf= / dkim= / dmarc= 결과dmarc=fail은 "진짜 인증을 통과 못 함 = 위조 가능성 높음"을 뜻함
Received (스택)맨 아래 줄 = 진짜 출발점자기 호스트가 아닌 곳에서 떠났다면 외부 위조
Return-Path (봉투 발신자)보이는 From과 일치하나?불일치는 위조 신호
Reply-To (회신 대상)회신이 실제로 가는 곳From은 내부처럼 보이는데 Reply-To가 무관한 외부 주소 → 발신자에게 회신하게 만드는 수법
X-Mailer (발송 소프트웨어)멀쩡한 이름인가?무작위 문자열 = 자동 스팸 도구의 전형적인 흔적

Reply-To는 사람들이 놓치는 것이다. From은 동료와 똑같아 보여도, 회신이 완전히 다른 외부 주소로 가며, 거기서 시크릿이나 연락처(채팅 QR 코드 등)를 회신하게 해 당신의 소통 채널을 가로채려 한다. From을 겉모습만으로 믿지 않는 것이 가장 강력한 사람 측 방어다(→ 피싱이란 무엇인가).

애초에 받은편지함에 도달하는 이유

위조 메일이 스팸함도 아닌 받은편지함에 슬쩍 들어오는 것은 — 수신 측에 가짜를 거부할 근거가 없기 때문이다.

1

DMARC 정책 부재

도메인에 DMARC 정책이 없으면, 수신 측은 From 위조를 감지할 수는 있어도 거부하도록 강제될 수 없다. 이것이 받은편지함에 도달하는 가장 큰 단일 이유다.

2

SPF가 거부하지 않는 설정(~all)

SPF가 ~all(softfail = "수상하나 거부는 말 것")로 끝나면, 수신 측은 거부할 분명한 이유가 없다.

3

전달이 SPF를 깨뜨림

받은 메시지를 다른 주소로 전달하면, SPF는 전달 서버에 대해 "pass"처럼 보이는 반면 From은 다른 도메인으로 남는다. 그 불일치에 대해 최종 판단을 내리는 것이 DMARC다.

여기서 DKIM이 중요해진다. SPF는 전달을 거치며 깨지지만, DKIM 서명은 유효한 채로 남는다. reject에 도달했을 때 정상 메일이 잘못 거부되지 않게 하는 것이 DKIM이며, 바로 그래서 DKIM을 가장 먼저 설정한다.

해법: SPF → DKIM → DMARC, 단계적으로

작동 원리는 SPF / DKIM / DMARC란 무엇인가에 있다. 여기서는 안전한 순서만 다룬다. 가장 중요한 점: 절대 reject로 바로 가지 마라.

1

올바른 SPF 레코드 하나

모든 정당한 발송 서버(자기 것, 메일 서비스)를 빠짐없이 허가하라. 도메인당 SPF는 레코드 하나로 유지하고, 평가 시 DNS 조회를 10 미만으로 유지하라(넘으면 SPF 전체가 무효가 된다).
2

DKIM 서명 켜기(가장 먼저)

메일 플랫폼에서 DKIM을 켜라. 전달을 거쳐도 유효한 서명이, 나중에 reject로 옮길 때 정상 메일이 거부되는 것을 막는다.
3

DMARC를 p=none(모니터링만)으로 시작

아직 거부하지 말라. p=none 더하기 보고서 수집으로 시작해, 1~2주간 정상 메일이 거부되지 않는지 지켜보라.
4

단계적으로 reject까지 올리기

보고서에서 정당한 발신자가 실패하지 않음이 확인되면 p=quarantine → p=reject로 가라. "위조가 수신 측에서 거부됨"이 달성될 때 비로소 이런 메일이 표적의 받은편지함에 닿기 전에 거부된다.

빠진 설정은 도메인마다 다르다

여러 도메인을 점검해보면 빠진 설정이 흔히 정반대임을 알게 된다. 발송 구성이 다르면 서비스가 대신 설정해 주는 부분도 다르기 때문이다.

메일 서비스 구성

  • 예: 트랜잭션 메일을 외부 발송 서비스로 보냄
  • 온보딩 시 DKIM / DMARC가 자동 구성되는 경향
  • 하지만 SPF는 직접 DNS에 추가해야 함 → 그게 빈틈

호스팅 기본 구성

  • 예: 호스팅 서버에서 직접 메일 발송
  • SPF는 보통 처음부터 있음
  • 하지만 DKIM은 수동 토글, DMARC는 직접 게시 → 그 둘이 빈틈

둘 다 "셋이 다 있는 것은 아님"이며, 빠진 것이 서로 반대일 뿐이다. 첫 단계는 내 도메인이 어느 패턴인지 아는 것이다.

본 사이트의 견해: 설정만으로는 부족하다 — 검증해야 작동한다

본 사이트는 이메일 인증을 "설정하고 잊는 것"이 아니라 검증해야 비로소 작동하는 것으로 다룬다. SPF / DKIM / DMARC 점검기나 사이트 보안 점검으로 자기 도메인의 현재 상태를 한 번에 확인할 수 있다.

값 하나에도 주의가 필요하다. 예컨대 실패 보고 주소(ruf)가 없는 레코드에 fo를 넣어도 아무 효과가 없다. 규격상 그냥 무시된다. 이런 "무해하지만 무의미한" 설정은, 검토에서만 잡히는데 흔하다.

가장 중요한 것은 두 가지다: 수신 측이 위조를 거부하게(DMARC) 하고, 사람이 가짜 메일에 회신하지 않게 하는 것. 탐지나 설정보다, 구조로 막는 설계를 먼저 두라.

다음으로 읽기

FAQ

Q내 도메인을 쓴 메일이 도착했는데, 서버가 해킹된 건가요?
A

보통 아닙니다. 이메일 전송(SMTP)은 발신자가 From 줄을 자유롭게 쓰게 합니다. 봉투 뒷면에 남의 주소를 적는 것처럼, 누구나 당신의 서버를 건드리지 않고도 '당신의 도메인으로' 메일을 보낼 수 있습니다. 그러니 그런 메일을 받았다고 침해된 것은 아닙니다. 실제로 침해됐는지 단지 위조됐는지는 메시지 헤더를 읽으면 알 수 있습니다.

Q위조 메일이 스팸으로 표시되지도 않고 받은편지함에 도달하는 이유는 무엇인가요?
A

수신 측에 가짜를 거부할 근거가 없기 때문입니다. 도메인에 DMARC 정책이 없으면, 수신 측은 From 위조를 감지할 수 있어도 거부하도록 강제될 수 없습니다. 전달(forwarding)은 결과의 신뢰성을 더 떨어뜨립니다. 해법은 SPF, DKIM, DMARC를 설정하고 DMARC를 단계적으로 p=reject까지 올리는 것입니다.

Q어디서부터 시작하면 되나요?
A

먼저 도메인의 현재 상태를 확인하세요(SPF/DKIM/DMARC 점검기가 한 번에 보여줍니다). 그런 다음 reject로 바로 가지 말고, DMARC를 p=none(모니터링만)으로 시작해, 보고서에서 정상 메일이 거부되지 않음을 확인한 뒤에야 p=quarantine → p=reject로 옮기세요. DKIM을 먼저 켜세요. DKIM 서명은 reject에 도달했을 때 전달을 거쳐도 정상 메일이 통과하게 해 주기 때문입니다.