기술 · 출처 기반 답변

DMARC 레코드란? 정의와 구현 가이드

DMARC 레코드는 SPF 또는 DKIM 인증에 실패한 이메일을 수신 메일 서버가 어떻게 처리할지 알려 주는 DNS TXT 레코드입니다. 도메인 소유자는 인증되지 않은 메일에 none, quarantine, reject 중 하나의 정책을 지정할 수 있어, 승인된 발신자만 해당 도메인을 사용하도록 할 수 있습니다.

동작 원리

DMARC는 From 헤더의 도메인과 SPF, DKIM으로 검증된 도메인 사이의 정렬을 확인합니다. SPF 검사를 통과하고 도메인이 일치하거나, DKIM 서명이 유효하고 도메인이 일치하면 이메일은 DMARC를 준수합니다. 둘 다 실패하거나 정렬되지 않으면 수신자는 DMARC 레코드에 정의된 정책에 따라 메시지를 전달할지, 표시할지, 차단할지 결정합니다.

발신자에게 중요한 이유

DMARC는 승인되지 않은 메일을 수신자가 어떻게 다룰지 발신자가 제어하게 해 도메인 스푸핑과 피싱을 방지합니다. DMARC 레코드가 없으면 수신자는 인증 실패 시 어떻게 처리해야 하는지 명시적인 지침이 없어 전달 결과가 일관되지 않을 수 있습니다. 엄격한 정책을 적용하면 공식 회사 도메인에서 온 것처럼 보이는 사기성 이메일을 공격자가 보낼 위험이 줄어듭니다.

운영 참고 사항과 흔한 실수

흔한 실수는 보고 데이터를 분석하기 전에 reject 정책으로 전환하는 것입니다. 전달에 영향을 주지 않고 트래픽을 모니터링하려면 p=none으로 시작하세요. 또 다른 잦은 오류는 세미콜론 누락이나 잘못된 태그 등 TXT 레코드의 구문 오류입니다. 배포 전에 SendHQ 또는 무료 도구(https://sendhq.cc/tools)로 레코드 형식이 올바른지 확인할 수 있습니다.

구체적인 예시

일반적인 DMARC 레코드는 v=DMARC1; p=quarantine; rua=mailto:reports@example.com과 같은 모양입니다. 이 예에서 v=DMARC1은 레코드 버전을 나타내고, p=quarantine은 수신자가 실패한 이메일을 스팸함으로 보내도록 지시하며, rua는 분석용 집계 XML 보고서를 받을 이메일 주소를 지정합니다.

정책 수준

주요 정책 수준은 세 가지입니다. p=none은 실패한 메일에 아무 조치도 취하지 않는 모니터링 모드입니다. p=quarantine은 실패한 메일을 수신자의 스팸함으로 보냅니다. p=reject는 가장 엄격한 수준으로, 수신 서버가 이메일을 완전히 반송하도록 지시해 수신자의 메일함에 도달하지 못하게 합니다.

팀에서 자주 묻는 질문

DMARC가 SPF나 DKIM을 대체하나요?

아니요. DMARC는 SPF와 DKIM을 기반으로 동작합니다. 발신자 신원을 확인하려면 둘 중 적어도 하나가 있고 유효해야 하며, DMARC는 둘이 실패했을 때 적용할 정책을 제공합니다.

rua와 ruf의 차이는 무엇인가요?

rua는 메일량과 인증에 대한 개괄적인 통계를 제공하는 집계 보고서에 사용합니다. ruf는 실패한 개별 메시지에 대한 상세 정보를 제공하는 포렌식 보고서에 사용합니다.

DMARC 레코드를 여러 개 둘 수 있나요?

아니요. 도메인에는 DMARC 레코드가 하나만 있어야 합니다. DNS에서 여러 레코드가 발견되면 수신 서버는 보통 모두 무시하므로 도메인이 보호되지 않은 상태가 됩니다.

1차 출처