SPF, DKIM, DMARC를 설정하지 않으면 공격자가 your-domain.com을 발신자로 위조한 피싱 메일을 아무 제약 없이 보낼 수 있다.
대부분의 사업자는 고객·거래처와의 소통에 도메인 이메일을 사용하지만, 이메일 인증 레코드를 누락하는 경우가 많다. 이로 인해 도메인이 스팸 발송지로 오인되거나, 실제 피싱 공격에 악용되어 브랜드 신뢰도와 고객 데이터가 위협받는다. 이 글에서는 각 레코드의 역할과 위조 메일이 수신함에 도달하는 과정, 실제 DNS 설정 예시, 안전한 정책 전환 순서를 설명한다.
한눈에 보는 핵심
Q. SPF, DKIM, DMARC는 각각 무엇을 막나? A. SPF는 발신 IP를 허용 목록으로 제한해 IP 위조를 차단하고, DKIM은 암호 서명으로 메일 내용 변조를 방지하며, DMARC는 SPF와 DKIM 검증 실패 시 수신자가 취할 정책(p=none/quarantine/reject)을 지정한다. Q. 설정이 없으면 어떤 일이 벌어지나? A. 공격자가 your-domain.com을 발신자로 표시한 피싱 메일을 발송하면, 수신 메일 서버는 인증 레코드가 없으므로 위조를 감지하지 못하고 정상 메일로 처리해 받은편지함에 전달한다. Q. 가장 위험한 설정 상태는? A. SPF나 DKIM 중 하나만 설정하고 DMARC는 p=none인 경우. 이 경우 위조 메일이 여전히 전달될 수 있으며, 공격자는 약한 정책을 악용해 피싱을 지속한다.왜 이 실수가 반복되나
많은 개발자와 운영자가 이메일 인증을 단순히 '스팸 방지' 기능으로 오해하거나, DNS 레코드 추가가 번거롭다고 생각해 미룬다. 또한 클라우드 메일 서비스(Gmail, Office 365 등)를 사용하면 자동으로 설정된다는 착각도 흔하다. 실제로는 서비스 제공자가 SPF 레코드 템플릿을 제공하더라도 도메인 소유자가 직접 DNS에 등록해야 하며, DKIM 서명 키와 DMARC 정책도 별도로 구성해야 한다. 이 과정을 모르거나 우선순위에서 밀리면 도메인이 무방비 상태로 노출된다.
실제 공격 시나리오
공격자는 your-domain.com의 SPF/DKIM/DMARC가 미설정된 것을 확인한다. 이후 피싱 메일을 작성해 발신자 주소를 [email protected]으로 위조하고, 수신자 명단(고객 DB 유출 등)을 확보해 대량 발송한다. 수신 메일 서버(예: Gmail, Outlook)는 your-domain.com의 DNS에 SPF, DKIM 레코드가 없으므로 인증 검사를 건너뛰거나 실패 처리하지만, DMARC 정책이 없으므로 최종적으로 메일을 받은편지함에 배달한다. 사용자는 발신자가 익숙한 도메인이므로 링크를 클릭해 자격 증명을 탈취당한다.
표준 차단 방법
DNS TXT 레코드를 추가하여 이메일 인증을 구성한다. 실제 설정 예시는 다음과 같다.
; SPF: 발신 IP 허용 목록 (Google Workspace 예시)
your-domain.com. TXT "v=spf1 include:_spf.google.com -all"
; DKIM: 선택자(selector)와 공개키 (Google 예시)
google._domainkey.your-domain.com. TXT "v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
; DMARC: 정책 (reject로 설정)
_dmarc.your-domain.com. TXT "v=DMARC1; p=reject; rua=mailto:[email protected]"
DMARC 정책은 p=none → p=quarantine → p=reject 순서로 단계적으로 올리는 것이 안전하다. 먼저 p=none으로 모니터링하며 SPF/DKIM 통과율을 확인하고, 문제가 없으면 p=quarantine으로 스팸 폴더 이동, 최종적으로 p=reject로 위조 메일을 완전 차단한다.
30초 자가진단
- 도메인의 DNS TXT 레코드에 SPF 레코드가 존재하는가? (예:
v=spf1 ...) - DKIM 서명을 위한 선택자 레코드가 등록되어 있는가? (예:
google._domainkey) - DMARC 레코드가
p=quarantine또는p=reject로 설정되어 있는가? (p=none은 미완료 상태) - 최근 7일간 DMARC 리포트를 확인하여 SPF/DKIM 통과율이 95% 이상인가?
24시간 안에 할 일
1. SPF 레코드 추가: 메일 발송에 사용하는 모든 IP와 서비스(예: Google, Microsoft, Mailchimp)를 포함한 SPF 레코드를 DNS에 등록한다. -all로 종료하여 허용되지 않은 IP를 명시적으로 거부한다.
2. DKIM 설정: 메일 서비스에서 제공하는 DKIM 키를 생성하고, DNS에 선택자 레코드로 추가한다. 서비스별로 키 생성 및 DNS 등록 방법을 확인한다.
3. DMARC 정책 수립: p=none으로 시작해 1~2주간 리포트를 수집하고, SPF/DKIM 통과율이 충분하면 p=quarantine으로 전환, 이후 p=reject로 강화한다. rua 태그로 리포트 수신 이메일을 지정한다.
이 모든 설정이 제대로 되었는지, codescan.kr에서 URL 하나로 21개 항목 30초 자동 점검할 수 있다. 지금 바로 확인해보자.