da-eun.
블로그
#DMARC#이메일인증#DNS#도달률

DMARC 정책과 리포트 — p=none으로 시작해야 하는 이유

DMARC를 처음부터 reject로 걸면 정상 메일이 차단됩니다. none으로 관찰하고 리포트로 발신 목록을 확인한 뒤 조이는 순서를 정리합니다.

SPF와 DKIM은 “검증”을 하고, DMARC는 그 검증이 실패했을 때 어떻게 하라는 발신자의 지시입니다. 동시에 내 도메인으로 나가는 메일에 대한 리포트를 받아 볼 수 있게 해 줍니다.

레코드는 이렇게 생겼습니다.

v=DMARC1; p=none; rua=mailto:[email protected]

_dmarc.example.com 위치에 TXT로 넣습니다. 도메인 루트가 아니라 _dmarc라는 이름 아래입니다.

넣은 뒤에는 조회해서 확인합니다.

dig +short TXT _dmarc.example.com

v=DMARC1로 시작하는 값이 하나만 나오면 됩니다. 두 개 이상 있으면 받는 서버는 정책이 없는 것으로 처리합니다.

정책 3단계

정책검증 실패 시언제 쓰나
p=none아무것도 안 함 (리포트만)시작 단계 — 관찰용
p=quarantine스팸함으로발신 목록을 파악한 뒤
p=reject아예 거부모든 경로가 인증을 통과할 때

p=none은 사칭을 막지 않습니다

none은 관찰 모드입니다. 리포트는 오지만 인증에 실패한 메일도 그대로 배달됩니다. 레코드를 넣었다는 것과 내 도메인 사칭이 차단된다는 것은 다른 이야기입니다.

그런데도 none으로 시작하는 이유가 있습니다.

왜 none으로 시작하나

p=reject를 처음부터 걸면 인증이 안 맞는 경로의 정상 메일이 그대로 사라집니다. 그리고 앞서 SPF 글에서 말씀드린 대로, 발송 경로는 본인이 아는 것보다 많은 경우가 대부분입니다.

이 중 하나만 SPF·DKIM이 안 맞아도 reject 상태에서는 그 메일이 고객에게 도착하지 않습니다. 더 나쁜 건, 거부는 조용히 일어나고 발신자는 모른다는 점입니다.

그래서 순서는 이렇습니다.

  1. p=none으로 걸고 리포트를 받는다
  2. 리포트에 뜨는 발신 IP·도메인을 전부 확인한다
  3. 정상인데 인증이 실패하는 경로를 고친다 (SPF에 추가하거나 DKIM 서명 설정)
  4. 다 맞으면 quarantinereject로 조인다

리포트 읽기

rua=에 지정한 주소로 매일 XML 리포트가 옵니다. 받는 서버(구글·네이버 등)가 “당신 도메인으로 이런 메일들이 왔고, 인증은 이랬다”를 알려 주는 내용입니다.

핵심은 이 세 가지입니다.

여기서 자주 오해하는 부분이 있습니다. DMARC는 SPF와 DKIM 중 하나만 통과해도 통과입니다. 리포트에 spf=fail이 찍혀 있어도 DKIM이 통과했다면 그 메일은 문제없이 도착합니다. 둘 다 실패한 건만 실제 문제입니다.

XML이 사람이 읽기 불편해서, 리포트를 모아 표로 정리해 주는 도구를 쓰거나 직접 파싱하는 편이 낫습니다.

리포트가 오지 않을 때

rua=다른 도메인의 주소를 적었다면 한 가지가 더 필요합니다. 리포트를 받는 쪽 도메인에 아래 레코드가 있어야 그 주소로 보내는 것이 승인됩니다.

example.com._report._dmarc.받는도메인.com   TXT   "v=DMARC1"

앞부분(example.com)은 리포트를 요청한 도메인입니다. 이 승인 레코드가 없으면 보내는 서버 상당수가 리포트를 보내지 않습니다. 레코드는 정상인데 아무것도 안 오는 상태가 대개 여기서 나옵니다. 같은 도메인 안의 주소([email protected])로 받는다면 필요 없습니다.

리포트가 없는 다른 이유도 있습니다.

조일 때 쓰는 두 손잡이 — pctsp

none에서 바로 전량을 reject로 넘기지 않아도 됩니다.

v=DMARC1; p=quarantine; pct=10; sp=none; rua=mailto:[email protected]

none에서 언제 넘어가나

기간이 아니라 리포트로 판정합니다. 두 가지가 확인되면 넘어갈 때입니다.

  1. 리포트에 뜨는 발신 IP·도메인이 전부 내가 아는 경로다
  2. 그 경로들이 SPF나 DKIM 중 하나를 통과하고, 아래 정렬까지 맞는다

발송량이 적으면 리포트가 드물게 오기 때문에 확인에 몇 주가 걸리기도 합니다.

정렬(alignment)

DMARC에는 한 가지 조건이 더 있습니다. SPF나 DKIM이 통과하는 것만으로는 부족하고, 그 통과한 도메인이 보낸사람 주소의 도메인과 맞아야 합니다. 이를 정렬이라 합니다.

외부 발송 도구를 쓸 때 이 부분이 자주 어긋납니다. 도구 쪽 도메인으로 인증은 통과하는데 보낸사람은 내 도메인이면, DMARC 기준으로는 실패입니다. 발송 도구에서 내 도메인으로 DKIM 서명을 하도록 설정하면 해결됩니다.

정렬 기준에는 완화(relaxed)와 엄격(strict) 두 가지가 있고, 따로 적지 않으면 완화가 기본입니다. 완화 모드는 상위 도메인이 같으면 정렬된 것으로 봅니다 — mail.example.com으로 서명해도 보낸사람이 example.com이면 맞는 것으로 처리됩니다. 완전히 같아야 한다면 adkim=s(DKIM)·aspf=s(SPF)를 붙입니다.

SPF 쪽은 여기서 한 번 더 걸립니다. SPF가 보는 것은 봉투의 반송 주소이지 수신자가 화면에서 보는 보낸사람이 아니라서, 발송 도구가 반송 주소를 자기 도메인으로 쓰면 SPF는 통과인데 정렬은 실패입니다. 이 경우 DKIM 쪽이 정렬을 통과해 주어야 DMARC가 성립합니다.


DMARC는 SPFDKIM이 갖춰진 뒤에 의미가 있습니다. 셋이 어떻게 맞물리는지는 SPF·DKIM·DMARC 정리를 참고하세요.

발송 도메인 인증, 무료로 점검해 드립니다

도메인만 알려주시면 SPF·DKIM·DMARC·역방향 DNS 설정을 조회해서, 무엇이 빠졌고 무엇이 위험한지 정리해 보내드립니다. 비용도 조건도 없습니다.

카카오톡 상담방에 도메인을 남겨 주세요.

전용 IP로 대량 발송할 인프라가 필요하시면 전용 IP 대량 발송 안내에서 구성과 가격을 확인하실 수 있습니다.

상담 문의