기술 · 출처 기반 답변
이메일 스푸핑 방지 방법: SPF, DKIM, DMARC 가이드
이메일 스푸핑을 방지하려면 SPF, DKIM, DMARC DNS 레코드를 함께 구현해야 합니다. 이 프로토콜들은 발신 서버가 도메인을 대신해 메일을 보낼 권한이 있는지 검증하고, 메시지 내용이 전송 중에 변경되지 않았음을 보장합니다.
SPF 레코드 구현
SPF(Sender Policy Framework)는 도메인을 대신해 이메일을 보낼 수 있도록 허가된 모든 IP 주소와 도메인을 나열하는 DNS 레코드입니다. 수신 서버는 이메일을 받으면 From 주소에 있는 도메인의 SPF 레코드를 확인합니다. 발신 IP가 목록에 없으면 이메일은 스팸으로 표시되거나 거부될 수 있습니다. SendHQ 무료 도구(https://sendhq.cc/tools)로 SPF 구문을 검증하고 허가되지 않은 IP가 포함되어 있지 않은지 확인하세요.
DKIM 서명 설정
DKIM(DomainKeys Identified Mail)은 이메일 헤더에 암호화 서명을 추가합니다. 발신 서버가 개인 키로 메시지에 서명하면, 수신 서버는 DNS 레코드에 게시된 공개 키로 이 서명을 검증합니다. 이를 통해 공격자가 전송 중에 이메일 내용을 변경하는 것을 막고, 이메일이 실제로 여러분의 인프라에서 발송되었음을 증명합니다.
DMARC 정책 적용
DMARC(Domain-based Message Authentication, Reporting, and Conformance)는 SPF와 DKIM을 하나로 묶습니다. 이메일이 SPF 또는 DKIM 검사에 실패했을 때 수신 서버가 어떻게 처리할지 알려 줍니다. 정책은 none(모니터링), quarantine(스팸으로 분류), reject(완전 차단) 중에서 설정할 수 있습니다. DMARC는 또한 도메인 소유자에게 리포트를 보내 스푸핑 시도와 설정 오류를 파악할 수 있게 해 줍니다.
DNS 상태 관리
스푸핑을 막으려면 DNS 레코드를 지속적으로 관리해야 합니다. SPF 레코드를 정기적으로 점검해 오래된 서드파티 발신자를 제거하고, 보안을 유지하기 위해 DKIM 키를 주기적으로 교체하세요. 스푸핑된 이메일이 사용자 받은편지함에 도달하는 것을 완전히 막으려면 DMARC 정책을 최종적으로 none에서 reject로 옮겨야 합니다.
보안 SMTP 확장 사용
DNS 레코드 외에도 STARTTLS를 사용해 메일 서버 간 연결을 암호화하세요. 이렇게 하면 중간자 공격으로 자격 증명이 가로채이거나 전송 중인 메일이 변조되는 것을 막을 수 있습니다. SMTP 인증을 구현하면 허가된 사용자만 서버를 통해 메일을 릴레이할 수 있어 내부 스푸핑의 위험이 줄어듭니다.
팀에서 자주 묻는 질문
SPF와 DKIM은 무엇이 다른가요?
SPF는 DNS 목록으로 특정 서버에 메일 발송 권한을 부여하고, DKIM은 암호화 서명으로 발신자를 검증하고 메시지 무결성을 보장합니다.
DMARC가 SPF와 DKIM을 대체하나요?
아니요. DMARC는 SPF와 DKIM에 의존합니다. 이 두 인증 검사에 실패한 이메일을 어떻게 처리할지에 대한 정책 지침을 제공합니다.
처음부터 p=reject 정책을 사용해도 되나요?
p=none으로 시작해 트래픽을 모니터링하고 정상 메일이 차단되지 않는지 확인한 뒤, p=quarantine을 거쳐 마지막에 p=reject로 이동하는 것을 권장합니다.
SPF 레코드가 여러 개 있으면 어떻게 되나요?
SPF 레코드가 여러 개 있으면 구문 오류가 되어 SPF가 실패합니다. 허가된 모든 발신자를 하나의 TXT 레코드로 합쳐야 합니다.
1차 출처
- RFC 7208: 발신자 정책 프레임워크(SPF) — RFC Editor
- RFC 6376: DKIM(DomainKeys Identified Mail) 서명 — RFC Editor
- RFC 7489: 도메인 기반 메시지 인증, 보고 및 준수(DMARC) — RFC Editor