1. DMARC란?

DMARC (Domain-based Message Authentication, Reporting & Conformance)란, “도메인을 기본으로 하는 메세지 인증, 레포팅, 적합성” 이란 의미의 메일 인증 프로토콜 입니다.

앞서 적용해 본 SPF, DKIM과 마찬가지로 도메인에 TXT 레코드를 입력하여 적용합니다.

DMARC는 SPF, DKIM의 검사 결과를 기초로 TXT 레코드의 내용에 따라 메일 발송 차단, 혹은 자신의 메일 도메인을 도용한 스푸핑 메일에 대한 보고 등을 설정할 수 있습니다.

발신하는 측의 SMTP 서버는 사실 특별한 클라이언트가 없어도 됩니다.

이는 DMARC 검사가 수신측 메일 서버에서 DMARC 필터링을 사용할 때 적용되기 때문입니다.

2. DMARC 레코드 구조

DMARC를 사용하기 위한 호스트명은 자신의 메일 도메인 앞에 _dmarc. 을 추가하여 이용합니다.

레코드 방식은 TXT, 레코드 내용은 "v=DMARC1; p=Value; adkim=Value; aspf=Value; sp=Value" 등으로 작성합니다.

아래는 mail.hestia.tk에 대한 DMARC 레코드입니다.

$ dig _dmarc.mail.hestia.tk TXT
_dmarc.mail.hestia.tk.  595     IN      TXT     "v=DMARC1\; p=reject\; adkim=s\; aspf=s\; sp=reject"

위 레코드의 내용은 아래와 같습니다.

풀어서 설명하자면, “@mail.hestia.tk 도메인으로 메일을 발송하는 경우, SPF와 DKIM이 정확히 Pass하는 메일에 대해서만 발송으로 허용 하며, SPF 혹은 DKIM 중 하나라도 Pass하지 못할 경우 메일 발신을 거절한다” 는 의미입니다.

해당 도메인으로 메일을 수신 할 SMTP 서버를 아직 만들지 않았기 때문에, 딱히 레포팅 관련된 문법은 넣지 않았습니다.

또한, 이 도메인은 테스트용이기 때문에, 매우 엄격한 Rule을 적용하여 테스트를 해 보았습니다.

실제 업무 용으로 사용할 때에는, 처음에는 느슨하게 메일 자체는 발송이 되게 하면서 레포팅만 받도록 하고, 상황에 따라 차차 늘려가는 것이 좋습니다.

발신을 위한 DMARC는 이렇게 도메인에 DMARC 레코드만 넣으면 적용 됩니다.

DMARC의 태그 문법은 DMARC의 홈페이지를 참조하시기 바랍니다.

DMARC 홈페이지: https://dmarc.org

3. 테스트

mail.hestia.tk 도메인의 A레코드로 지정된 서버에서의 메일 발송은 물론 minibrary.com 이라는 외부 메일 전문 업체에서 메일 발송을 테스트 해 봅니다.

1) mail.hestia.tk 에서 메일 발송

DMARC PASS를 포함하여 제대로 발송 됩니다.

2) minibrary.com 에서 no-reply@mail.hestia.com 을 발신인으로 하여 메일 발송 (SPF, DKIM 통과)

역시 DMARC PASS를 포함하여 제대로 발송 됩니다.

3) minibrary.com 에서 no-reply@mail.hestia.com 을 발신인으로 하여 메일 발송 (DKIM OFF)

DKIM 사인을 포함하지 않고 메일 발송을 시도하니, mail.hestia.tk 도메인의 DMARC: DKIM 규칙에 의해, 메일 발송이 되지 않습니다.

실제 업무 환경에서는 메일 발송이 되지 않으면 곤란할 수 있으니, strict 및 reject는 주의해서 사용하셔야 합니다.

이로써, 도메인 및 SMTP 서버에 SPF, DKIM, DMARC를 적용하는 방법을 알아 보았습니다.