거래처가 “청구서에 적힌 계좌가 바뀌었네요”라고 연락해 왔다고 가정해 보겠습니다. 가온상사 재무팀은 계좌를 바꾼 적이 없습니다. 직원 계정에서도 이상한 로그인은 발견되지 않았습니다. 그런데 거래처가 받은 메일의 보낸 사람 주소는 평소와 같은 billing@example.com입니다.
주소가 같다면 반드시 회사 계정에서 보낸 걸까요? 그렇지는 않습니다. 다른 서버에서도 회사 주소를 도용해 From, 즉 보낸 사람 주소에 적을 수 있습니다. 계정 비밀번호를 바꾸는 일과 별개로, 회사가 허용한 발신인지 수신자가 확인할 방법이 필요합니다.
DMARC는 그 확인에 쓰이는 규칙입니다. SPF·DKIM의 인증 결과를 보낸 사람 도메인과 연결하고, 확인에 실패한 메일의 처리 방침과 결과를 보고받을 주소를 공개합니다. 이 글에서는 가상의 회사 가온상사를 따라가며 정상 메일과 주소 도용 메일을 어떻게 구분하고, 어디까지 보호할 수 있는지 살펴봅니다. 주소와 수치는 모두 설명용입니다.
SPF와 DKIM이 있는데 DMARC도 필요한 이유
가온상사는 직원용 메일 외에도 뉴스레터 서비스를 사용합니다. 직원은 업무 메일 서비스에서, 마케팅팀은 뉴스레터 서비스에서 메일을 보내지만, 받는 사람에게는 둘 다 회사 주소가 보입니다. 이처럼 화면에 보이는 주소와 실제 발송에 사용하는 도메인은 서로 다를 수 있습니다.
먼저 메일 한 통에 등장하는 세 가지 이름을 구분해 보겠습니다. From은 사람이 읽는 보낸 사람 주소입니다. MAIL FROM은 서버가 메일을 전달할 때 사용하는 주소로, 배달 실패 안내를 돌려받는 데 쓰입니다. DKIM의 d=는 메일에 전자서명을 붙인 도메인입니다.
news@example.combounce@mailer.example.netmailer.example.net이 뉴스레터가 SPF를 통과했다면 “지금 접속한 서버는 mailer.example.net이 허용한 서버”라는 뜻입니다. DKIM까지 통과해도 확인한 것은 “mailer.example.net의 서명이 유효하다”는 사실입니다. 두 결과만으로 가온상사의 example.com을 사용해도 되는지까지 확인한 것은 아닙니다. SPF의 MAIL FROM 검사 ↗ DKIM 서명 도메인 ↗
공격자도 자신이 관리하는 도메인에서는 SPF와 DKIM을 정상 설정할 수 있습니다. 그런 인증을 통과한 메일에 가온상사의 From 주소를 붙였다고 해서 가온상사 메일이 되지는 않습니다. 여기서 DMARC가 한 가지를 더 묻습니다. “통과한 인증이 화면에 보이는 회사 도메인과 연결되어 있는가?”
회사가 정하고, 받는 서버가 확인합니다
DMARC의 정식 이름은 Domain-based Message Authentication, Reporting, and Conformance입니다. 이름보다 역할을 기억하는 편이 쉽습니다. 회사는 DNS, 즉 도메인의 정보를 공개하는 곳에 인증 정보와 방침을 올립니다. 메일을 받는 서버는 그 정보를 조회해 확인하고, 보고 기능을 제공한다면 관찰 결과를 회사에 돌려줍니다.
- 01회사: 기준을 공개
허용한 발신 경로를 설정하고 DNS에 DMARC 정책과 보고 주소를 등록합니다.
- 02수신 서버: 메일을 검사
SPF·DKIM 결과와 From의 관계를 확인하고 수신 측 기준에 따라 처리합니다.
- 03회사: 결과를 검토
참여 수신 서버의 리포트를 받아 누락된 발신처와 의심스러운 사용을 확인합니다.
따라서 회사 DNS에 DMARC를 설정하는 일은 주로 회사 주소를 믿고 메일을 받는 고객과 거래처를 보호하는 일입니다. 직원의 받은편지함으로 들어오는 모든 사기 메일을 걸러 주는 기능과는 역할이 다릅니다. 수신 메일 보호에는 받는 메일 서비스의 인증 검사와 사칭 탐지, 콘텐츠 검사가 함께 필요합니다.
PASS 옆에 어느 도메인이 적혀 있는지 보세요
DMARC는 From의 @ 뒤 도메인을 기준으로 삼습니다. 앞부분이 billing인지 news인지는 통과 조건이 아닙니다. 인증을 통과한 도메인이 From 도메인과 맞는 관계를 도메인 정렬(alignment)이라고 부릅니다.
DMARC 통과 조건
SPF 통과+ MAIL FROM과 From의 도메인 정렬
또는DKIM 통과+ DKIM d=와 From의 도메인 정렬
한 경로에서 인증 통과와 정렬을 함께 만족하면 됩니다
SPF가 통과하고 DKIM의 도메인이 같다는 식으로 서로 다른 경로의 조건을 섞을 수는 없습니다. SPF는 SPF 안에서, DKIM은 DKIM 안에서 두 조건을 모두 만족해야 합니다. 도메인 이름만 같은 실패한 서명은 근거로 사용할 수 없습니다. DMARC 표준의 정렬 조건 ↗
표를 좌우로 밀어 전체 내용을 확인하세요.
| 메일 | 검사에서 확인한 내용 | DMARC 결과 |
|---|---|---|
| 직원이 보낸 청구서 | SPF와 DKIM이 모두 example.com으로 통과 | 통과 회사 도메인과 연결됩니다. |
| 설정 전 뉴스레터 | SPF와 DKIM이 모두 mailer.example.net으로 통과 | 실패 서비스 인증은 유효하지만 회사 도메인과 정렬되지 않습니다. |
| 회사 주소를 도용한 메일 | SPF와 DKIM이 모두 공격자의 sender.example.org로 통과 | 실패 공격자 도메인의 인증은 회사 주소를 보증하지 않습니다. |
정상 뉴스레터와 주소 도용 메일이 둘 다 실패했다는 점을 눈여겨보세요. DMARC는 발송자의 의도를 읽지 않습니다. 가온상사가 실제로 이용하는 서비스라도, 회사 도메인으로 발송하도록 인증 설정을 마치지 않으면 연결을 확인할 수 없습니다. 실패는 조사할 이유이며, 그 자체로 도용의 확정 증거는 아닙니다.
뉴스레터는 무엇을 바꾸면 통과할까요?
가온상사가 뉴스레터 서비스의 도메인 인증 절차를 진행했다고 해 보겠습니다. 서비스가 발급한 DNS 값을 등록하고 회사 도메인으로 DKIM 서명을 켭니다. 이후 새로 보낸 메일에서 d=example.com의 서명이 실제로 통과하면, SPF가 여전히 서비스 도메인으로 통과하더라도 DMARC는 통과합니다.
From: news@example.com — 두 경우 모두 동일
설정 전
SPF PASS mailer.example.net
DKIM PASS mailer.example.net
DMARC FAIL — example.com과 연결된 인증 없음
회사 도메인 DKIM 설정 후
SPF PASS mailer.example.net
DKIM PASS example.com
DMARC PASS — DKIM 경로가 통과하고 정렬됨서비스가 지원한다면 MAIL FROM을 회사의 도메인이나 하위 도메인으로 바꾸고 SPF를 맞추는 방법도 있습니다. 다만 example.com의 SPF에 서비스 이름을 추가하는 것만으로 위 예시의 SPF 정렬이 해결되지는 않습니다. 실제 검사 대상이 계속 mailer.example.net이면 From과의 관계가 그대로이기 때문입니다. 서비스가 지원하는 회사 도메인 DKIM이나 사용자 지정 MAIL FROM 설정을 확인해야 합니다. Microsoft의 정렬 실패 진단 ↗
같아야 한다는 말은 어디까지일까요?
기본값인 완화 모드(r)는 같은 조직 도메인에 속하는지를 봅니다. 아래의 일반적인 구성에서는 mail.example.com도 example.com과 정렬됩니다. 엄격 모드(s)는 전체 도메인이 정확히 같아야 합니다.
표를 좌우로 밀어 전체 내용을 확인하세요.
| 인증 도메인 | 완화 r | 엄격 s |
|---|---|---|
example.com | 정렬됨 | 정렬됨 |
mail.example.com | 같은 조직 도메인이면 정렬됨 | 정렬되지 않음 |
example.com.example.net | 정렬되지 않음 | 정렬되지 않음 |
마지막 주소는 중간에 회사 이름이 들어가 있어도 example.net 아래에 있습니다. 글자가 비슷하거나 일부가 포함됐다는 뜻의 “완화”가 아닙니다. aspf는 SPF의, adkim은 DKIM의 정렬 모드를 정하며, 처음에는 기본값 r로 발신 구조를 확인하는 편이 일반적입니다. s는 도메인을 정확히 분리해 운영할 이유가 있고 정상 발신도 그 조건을 만족할 때 검토합니다.
인증 결과, 처리 방침, 리포트는 구분해서 봅니다
DMARC가 실패했다고 확인한 다음에는 어떻게 할까요? 회사는 DNS 레코드의 p=에 원하는 처리 방침을 적습니다. 가온상사가 새로 DMARC를 시작한다면, 아직 설정하지 않은 뉴스레터가 있으므로 우선 관찰하면서 정상 발신을 정리할 필요가 있습니다.
p=none관찰부터 시작
DMARC 실패를 이유로 격리나 거부를 요청하지 않습니다. 실패 결과는 그대로 남습니다.
p=quarantine의심 메일로 처리 요청
실패한 메일을 의심스럽게 취급하도록 요청합니다. 스팸함 분류 등이 여기에 해당합니다.
p=reject수신 거부 요청
실패한 메일의 도메인 사용을 인정하지 않는다는 방침입니다. 수신 거부를 요청합니다.
여기서 p=none은 실패를 통과로 바꾸지 않습니다. p=reject도 SPF나 DKIM 검사를 더 엄격하게 만드는 값은 아닙니다. 검사 결과가 같아도, 실패했을 때 회사가 요청하는 처리가 달라지는 것입니다.
수신 서버는 그 요청에 자체 보안 정책을 더해 최종 처리합니다. 그러므로 none인 메일도 스팸 검사 때문에 거부될 수 있고, DMARC가 통과해도 받은편지함에 들어간다는 보장은 없습니다. 전달 메일에 대한 수신 측 판단이나 예외 설정에 따라 요청과 실제 처리가 달라질 수도 있습니다. 수신 측 정책 적용에 관한 표준 ↗
처음 등록할 때 이해해야 할 값
DNS 이름: _dmarc.example.com
유형: TXT
값: v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com; adkim=r; aspf=rv=DMARC1은 DMARC 레코드라는 표시이고, p=none은 관찰을 시작할 때의 방침입니다. rua=에는 집계 보고서를 받을 주소를 적습니다. 마지막의 adkim=r, aspf=r은 앞서 본 기본 정렬 모드이며, 생략해도 기본값은 같습니다.
이 예시는 기존 레코드가 없는 도메인의 시작점을 설명합니다. 이미 quarantine이나 reject를 운영 중이라면 예시를 그대로 덮어쓰지 마세요. 같은 이름에 DMARC 레코드를 두 개 추가해서도 안 됩니다. 보고 주소는 실제로 수신 가능한 전용 주소를 마련하고, 외부 분석 서비스 주소라면 그 서비스의 보고 수신 동의 설정도 확인합니다. Google의 DMARC 설정 안내 ↗
RUA로 놓친 정상 발신처를 찾습니다
RUA는 DMARC 집계 리포트의 수신 주소를 지정하는 항목입니다. 보고하는 수신 서버는 자신이 관찰한 메일을 발신 IP와 인증 결과 등으로 묶어 보냅니다. XML이라는 구조화된 파일 형식으로 오므로, 일반적인 청구서처럼 읽기보다는 분석 도구나 변환 결과로 확인하는 경우가 많습니다.
표를 좌우로 밀어 전체 내용을 확인하세요.
| 분류한 발신처 | 관찰 건수·결과 | 담당자가 확인할 일 |
|---|---|---|
| 직원용 메일 | 1,200통 · 통과 | 직원용 서비스의 실제 발신 정보와 일치하는지 확인 |
| 뉴스레터 서비스 | 240통 · 실패 | 회사 도메인 서명 설정을 마친 뒤 새 발송 결과 확인 |
| 아직 확인하지 못한 발신처 | 18통 · 실패 | 다른 부서의 서비스, 전달 경로, 도용 가능성을 조사 |
이 자료를 “주소 도용 메일 258통”이라고 읽으면 정상 뉴스레터 240통까지 공격으로 분류하게 됩니다. 반대로 뉴스레터 설정을 고친 뒤 통과율이 높아졌다고 미확인 18통을 무시해서도 안 됩니다. 리포트의 숫자를 회사의 서비스 목록과 연결해야 다음 행동이 정해집니다.
RUA는 보고에 참여한 수신자가 본 범위의 집계입니다. 전체 발송 로그나 메일 원문이 아니며, 실시간 경보 또는 최종 받은편지함 도착 확인서도 아닙니다. 보고가 없다고 주소 도용 시도가 없었다고 결론 내릴 수는 없습니다. 집계 리포트의 내용과 구조 ↗
어떤 도용·사칭에 도움이 되고, 무엇이 남을까요?
가온상사가 뉴스레터를 포함한 정상 발신을 정리하고 p=reject를 적용했다고 해 보겠습니다. 공격자가 허용받지 않은 서버에서 billing@example.com을 From에 적어 보냈고, 정렬된 인증도 없다면 DMARC는 실패합니다. 이를 받는 서버는 가온상사의 거부 요청을 판단에 사용할 수 있습니다.
하지만 공격자는 이름을 비슷하게 보이게 하거나 실제 계정을 탈취하는 다른 방법을 쓸 수 있습니다. 따라서 “회사 사칭”이라는 말만으로 DMARC가 적용되는 상황인지 판단하면 안 됩니다.
표를 좌우로 밀어 전체 내용을 확인하세요.
| 받는 사람이 본 상황 | DMARC가 확인하는 것 | 함께 필요한 대응 |
|---|---|---|
허용되지 않은 발신이 정확한 example.com을 사용 | 그 도메인과 정렬된 유효 인증이 있는지 | 정상 발신 정비, 정책 강화, 결과 관찰 |
| 회사와 닮은 별도 도메인에서 발송 | 다른 도메인이 자기 인증을 통과할 수 있음 | 실제 주소 확인, 수신 측 사칭 탐지 |
| 표시 이름만 ‘가온상사 재무팀’으로 바꿈 | 사람에게 보이는 이름의 진위는 판정하지 않음 | 이름을 펼쳐 주소 확인, 기존 연락처로 재확인 |
| 탈취한 직원 계정이나 발송 서비스로 발송 | 허용된 경로를 사용하면 통과할 수 있음 | 다중요소 인증, 권한 관리, 로그인·발송 기록 점검 |
특히 DMARC는 billing@example.com을 특정 재무팀 직원의 신원과 연결하지 않습니다. 회사 도메인을 사용할 수 있는 발신 환경인지 확인하는 것이므로, 정상 계정에서 온 잘못된 송장이나 악성 링크도 인증은 통과할 수 있습니다. DMARC가 다루는 사칭 범위 ↗
처음의 계좌 변경 요청으로 돌아가 보겠습니다. DMARC 통과 여부는 주소를 신뢰할 근거 하나입니다. 실제 계좌 변경을 승인할 근거까지 되지는 않습니다. 지급 정보를 바꾸기 전에는 메일에 새로 적힌 번호 대신 기존 계약서나 이미 알고 있던 거래처 연락처로 확인하는 절차가 필요합니다. FBI의 업무 이메일 사기 예방 안내 ↗
회사 주소를 쓰는 발신처부터 확인하세요
“메일을 많이 보내는 회사만 필요할까요?” 메일 수가 적어도 회사 주소로 고객과 거래한다면 확인할 이유가 있습니다. 적은 수의 청구서나 비밀번호 재설정 메일도 업무에서는 중요합니다. 반대로 직원용 메일이 잘 통과한다는 사실만으로 자동 알림과 외부 서비스까지 준비됐다고 보기는 어렵습니다.
가온상사의 담당자가 처음 할 일은 DMARC 값을 강하게 바꾸는 것이 아닙니다. 마케팅팀에는 뉴스레터, 영업팀에는 CRM, 개발팀에는 회원가입과 주문 알림을 물어 회사 주소를 사용하는 발신처를 모으는 일입니다. DNS 관리자가 회사의 모든 발송 서비스를 알고 있다고 가정하지 않는 편이 좋습니다.
- 도메인과 발신처를 한 목록에 적습니다
직원용 메일, 뉴스레터, CRM, 고객지원, 청구서·자동 알림의 서비스명과 담당자, 사용 중인 From 주소를 기록합니다. 하위 도메인을 쓰면 함께 표시합니다.
- 서비스별 실제 메일을 받아 확인합니다
DNS 등록 화면에서 끝내지 않고 새로 발송한 메일에서 인증 결과와 도메인 정렬을 봅니다. 정상 경로가 실패하면 발신 서비스의 회사 도메인 인증부터 고칩니다.
- 리포트와 회사 기록을 맞춰 봅니다
RUA 수신·분석 담당자를 정하고 발신처 목록과 대조합니다. 월말 청구서처럼 드물게 보내는 메일은 해당 발송 시점까지 따로 확인합니다.
- 남은 실패 원인을 설명할 수 있을 때 정책을 바꿉니다
정상 발신 누락과 전달 경로의 영향을 확인한 뒤 격리·거부를 검토합니다. 변경 후에는 리포트와 실제 반송·고객 문의를 함께 살피고, 새 서비스를 도입할 때 같은 확인을 반복합니다.
한 번의 검사에서 PASS를 본 것과 회사의 발신 환경을 파악한 것은 다릅니다. 매일 보내는 직원 메일은 문제없어도 월말에만 발송하는 청구 서비스가 빠져 있을 수 있습니다. “며칠 지났으니 완료”나 전체 통과율 한 숫자보다, 중요한 정상 발신처를 각각 확인했는지가 정책 전환의 근거가 됩니다.
설정을 시작할 때는 현재 표준과 이용 서비스의 공식 안내를 함께 확인하세요. 오래된 가이드의 일부 항목은 2026년 표준에서 폐기됐고, 새 항목의 지원 범위도 수신 서비스마다 다를 수 있습니다. 구체적인 설정값과 정책 전환 기준은 아래 관련 글에서 이어서 확인할 수 있습니다. 현행 DMARC 항목 등록부 ↗
Genharden DMARC · 2026.09.21 기준. SPF·DKIM·DMARC 표준과 본문에 연결한 공식 문서를 참고했습니다. 회사·도메인·IP·집계 수치는 별도 표시가 없는 한 설명을 위한 가상 예시입니다.