DMARC는 RFC5322.From의 Author Domain을 기준으로 SPF 또는 DKIM의 인증 결과가 해당 도메인과 정렬되는지 확인합니다. SPF나 DKIM 가운데 하나라도 인증에 성공하고 정렬되어야 DMARC pass가 될 수 있습니다.
따라서 MAIL FROM 도메인의 SPF가 통과해도 From 도메인과 정렬되지 않고 정렬된 DKIM도 없으면 DMARC는 실패할 수 있습니다. 이 글은 현행 RFC 9989를 기준으로 하며 예시 주소는 문서용 가상 도메인입니다.
인증 성공과 DMARC 정렬은 별도 조건입니다
SPF pass 메시지가 DMARC fail로 기록되면 결과가 모순처럼 보일 수 있습니다. 하지만 SPF가 검사하는 것은 연결 IP가 SMTP HELO 또는 MAIL FROM 도메인의 발신 정책에 허용되는지입니다. DMARC는 메시지에 표시된 RFC5322.From의 Author Domain과 SPF 또는 DKIM이 인증한 도메인이 연결되는지도 확인합니다. 즉 한 메커니즘의 인증이 성공했다는 사실만으로 DMARC 조건이 충족되지는 않습니다.
현행 기준인 RFC 9989는 SPF-authenticated identifier로 MAIL FROM 도메인을, DKIM-authenticated identifier로 서명 d= 도메인을 사용합니다. 두 식별자 중 어느 하나라도 인증에 성공하고 Author Domain과 정렬되면 DMARC pass의 경로가 됩니다. 두 경로가 모두 정렬될 필요는 없습니다. 반대로 SPF와 DKIM이 모두 인증 통과했더라도 둘 다 표시 From과 정렬되지 않으면 DMARC는 pass가 아닙니다. RFC 9989가 RFC 7489와 RFC 9091을 대체했으므로 예전 설명을 현행 규칙으로 그대로 인용하지 않습니다.
| 사례 | From Author Domain | SPF MAIL FROM / 결과 | DKIM d= / 결과 | DMARC 판정 |
|---|---|---|---|---|
| A | shop.example | bounce.sender.example / pass | sender.example / pass | 두 인증 모두 From과 정렬되지 않아 fail |
| B | shop.example | bounce.sender.example / pass | shop.example / pass | DKIM이 pass와 정렬을 모두 충족하므로 pass |
| C | shop.example | bounce.shop.example / pass | sender.example / pass | SPF가 pass와 정렬을 충족하므로 pass |
SPF 통과만으로 실패가 설명되는 과정을 따라갑니다
사례 A에서 메일 화면의 From은 billing@shop.example입니다. SMTP MAIL FROM은 bounce@sender.example이며, 수신 서버의 연결 IP는 sender.example의 SPF 정책에 허용돼 SPF가 pass했습니다. DKIM 서명도 d=sender.example로 유효하다고 가정합니다. 그러면 두 인증 결과는 sender.example이라는 도메인과 관련되지만, Author Domain은 shop.example입니다. 조직 정책이 완화(루트 도메인) 정렬이든 엄격(정확한 도메인) 정렬이든 이 두 도메인은 서로 다른 조직 도메인으로 맞지 않습니다. DMARC가 사용할 수 있는 정렬된 pass 경로가 없으므로 fail입니다.
사례 B에서는 SPF는 여전히 정렬되지 않지만 DKIM d=shop.example 서명이 통과합니다. DMARC는 둘 중 한 경로면 충분하므로 pass할 수 있습니다. 사례 C에서는 반대로 MAIL FROM이 shop.example의 하위 도메인인 bounce.shop.example이고 그 SPF가 통과하므로 기본 완화 정렬에서 SPF 경로가 정렬됩니다. 다만 조직이 SPF 정렬을 엄격 모드로 설정했다면 정확히 일치하는지 다시 판정해야 합니다. 이 예에서 정렬은 정책 설정에 따라 달라질 수 있으므로, 도메인 문자열뿐 아니라 DMARC 레코드의 adkim·aspf 모드도 확인해야 합니다.
DMARC 결과를 네 칸으로 분해합니다
- RFC5322.From에서 Author Domain을 확인합니다.
- SPF 결과가 통과했는지 확인하고 그때 사용된 MAIL FROM 식별자를 기록합니다.
- DKIM 결과와 각 서명의 d= 도메인을 확인합니다.
- 각 메커니즘별로 해당 식별자와 Author Domain의 정렬을 확인합니다. 완화 정렬인지 엄격 정렬인지는 정책 설정을 확인합니다.
- SPF 또는 DKIM 중 하나가 pass와 alignment를 모두 만족하는지 판단합니다.
진단 기록에 spf=pass만 있고 DMARC 결과가 fail이라면 MAIL FROM의 실제 도메인을 보고 From과 비교합니다. 다음으로 DKIM 결과와 d=를 확인합니다. 표시된 발신자 이름이나 Return-Path 문자열만 보고 기계적으로 결론 내리지 말고 원본 헤더와 수신 시스템이 계산한 인증 결과를 확인하세요. DMARC의 정책(p=none, quarantine, reject)은 실패 메시지 처리와 관련된 별도 설정입니다. 이 글은 정렬 판단을 설명할 뿐 도메인 정책 배치나 메일 서버 설정 방법을 안내하지 않습니다.
인증 pass 하나와 DMARC pass를 같은 말로 쓰지 않습니다
흔한 실수는 ‘SPF pass이므로 DMARC도 통과’라고 답하는 것입니다. SPF는 발신 IP와 MAIL FROM 또는 HELO 식별자의 정책 검증이고, DMARC는 표시 From과 인증 식별자의 정렬까지 요구합니다. 다른 오류는 SPF와 DKIM이 모두 정렬돼야 DMARC pass라고 외우는 것입니다. 둘 중 하나의 정렬된 pass면 충분합니다. 다만 실제 메일에서 어떤 경로가 유효한지는 헤더와 정렬 모드를 확인해야 하고, 발신자 실체나 메시지 안전성을 DMARC 결과만으로 보증할 수는 없습니다.
각 메커니즘의 결과와 정렬을 두 번 확인합니다
회상 연습: From은 notice@shop.example, MAIL FROM은 bounce@mailer.example이고 SPF는 pass입니다. DKIM은 d=shop.example로 pass합니다. DMARC는 어떤 결과이며 이유는 무엇인가요? DKIM은 pass이고 d=shop.example이 From Author Domain과 정렬되므로 DMARC pass 경로가 하나 있습니다. SPF 경로가 정렬되지 않아도 무방합니다. 이 질문과 도메인은 교육을 위해 새로 작성했으며 실제 시험 문제나 집중 180제 수록 카드가 아닙니다. 상품의 실제 구성은 안내 페이지에서 확인하세요.
정답을 가리고 확인해 보세요
이 글을 위해 만든 학습 예시이며 공식 기출문제나 판매 카드의 인용이 아닙니다.
From은 notice@shop.example, MAIL FROM은 bounce@mailer.example이고 SPF는 pass다. DKIM d=shop.example도 pass했다. DMARC 결과와 그 이유를 말하세요.
정답과 해설 확인
DMARC pass입니다. SPF 식별자는 From과 정렬되지 않지만 DKIM d=shop.example이 인증에 성공하고 Author Domain과 정렬되어 하나의 유효한 경로를 충족합니다.현행 RFC 9989에서 SPF와 DKIM은 각각 인증 성공 및 Author Domain 정렬을 만족하면 DMARC 결과의 근거가 될 수 있습니다. 둘 다 필요하지 않습니다.