가이드
DMARC 확인: DMARC 레코드를 태그별로 읽기
DMARC는 내 도메인에서 보낸 것처럼 보이지만 SPF와 DKIM을 통과하지 못한 메일을 어떻게 처리할지 수신 메일 서버에 알려 줍니다. 레코드가 잘못되면 스푸핑 메일이 그대로 전달되거나 내 메일이 스팸함으로 갑니다. 확인하는 방법을 알아봅니다.
DMARC 레코드의 위치
DMARC는 도메인 앞에 _dmarc.을 붙인 이름에 있는 TXT 레코드입니다. example.com이라면 _dmarc.example.com의 TXT 레코드를 조회합니다.
_dmarc.example.com. TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100"
이 레코드는 정확히 하나만 있어야 합니다. DMARC 레코드가 두 개면 수신 측은 둘 다 무시합니다.
중요한 태그
| 태그 | 의미 | 예시 |
|---|---|---|
v | 버전. 맨 앞에 와야 하며 값은 DMARC1이어야 합니다. | v=DMARC1 |
p | 도메인 정책: none(보고만), quarantine(의심 메일로 처리, 보통 스팸함) 또는 reject(메일 거부). | p=reject |
sp | 하위 도메인 정책. 기본값은 p와 같습니다. | sp=quarantine |
pct | 인증에 실패한 메일 중 정책을 적용할 비율, 0–100. 기본값은 100. | pct=25 |
rua | 집계 보고서를 받을 주소. | rua=mailto:dmarc@example.com |
ruf | 실패 보고서를 받을 주소. 보내지 않는 제공업체가 많습니다. | ruf=mailto:forensic@example.com |
adkim, aspf | DKIM과 SPF의 정렬 모드: r 완화(하위 도메인도 일치, 기본값) 또는 s 엄격. | adkim=s |
p=none, quarantine, reject 중 무엇을 쓸까?
- p=none은 아무것도 보호하지 않으며, 수신 측은 보고서만 보냅니다. 몇 주 동안 사용해 누가 내 도메인으로 메일을 보내는지 파악하세요.
- p=quarantine은 인증에 실패한 메일을 스팸함으로 보냅니다. 사용하는 모든 서비스가 통과하면 안전하게 넘어갈 수 있는 단계입니다.
- p=reject는 스푸핑 메일을 완전히 차단합니다. 대부분의 도메인이 목표로 할 설정입니다.
p=none이면서 rua도 없는 레코드는 보호도 보고서도 주지 않으므로 아무 역할도 하지 않습니다.
DMARC의 판정 방식: 정렬
SPF나 DKIM이 통과하고 그리고 확인한 도메인이 From 헤더의 도메인과 일치하면 메일은 DMARC를 통과합니다. SPF는 봉투 발신자(Return-Path)를, DKIM은 서명의 d= 도메인을 확인합니다. 자기 도메인으로 서명하는 뉴스레터 서비스는 DKIM은 통과하지만, 그 서비스에서 내 도메인용 DKIM을 설정하기 전까지는 DMARC 정렬에 실패합니다.
흔한 실수
- 레코드를
_dmarc.이 아니라 도메인 자체에 둠. - DMARC 레코드가 두 개이거나, SPF 레코드 안에 DMARC를 넣음.
- 테스트 후에도
pct를 100 미만으로 남겨 두어 스푸핑 메일 대부분이 여전히 전달됨. - 모든 발송 서비스(CRM, 헬프데스크, 뉴스레터)가 정렬된 SPF나 DKIM을 통과하기 전에
p=reject로 바꿈. - 다른 도메인의 주소로 보고서를 보내면서 그 도메인에 허용 레코드를 두지 않음.
SPF와 DKIM도 확인하세요
DMARC는 나머지 두 가지에 의존합니다. SPF 레코드는 중첩된 include를 포함해 DNS 조회를 10회 이내로 유지해야 하며, 넘으면 영구 오류(permerror)가 됩니다. DKIM 키는 셀렉터 이름(예: google._domainkey) 아래에 있고 DNS로는 목록을 볼 수 없으므로, 제공업체가 쓰는 셀렉터를 알아야 합니다.