기술 · 출처 기반 답변

DKIM(DomainKeys Identified Mail)이란? 개념 설명

DKIM은 발신자가 이메일 헤더에 암호화 서명을 추가할 수 있게 하는 이메일 인증 방식입니다. 이 서명은 도메인 소유자가 해당 이메일을 승인했고 전송 중에 메시지 내용이 변경되지 않았음을 증명합니다. 수신 서버는 발신자의 DNS 레코드에 게시된 공개 키로 서명을 검증합니다.

처리 과정

DKIM은 공개 키 기반 구조로 동작합니다. 발신 서버는 개인 키로 특정 메시지 헤더와 본문의 디지털 서명을 만들고, 이 서명을 DKIM-Signature 헤더로 이메일에 첨부합니다. 수신 메일 서버는 이 헤더에서 도메인과 셀렉터를 추출하고 DNS 레코드에서 해당 공개 키를 가져와 서명을 복호화한 뒤 메시지 내용의 해시를 검증합니다.

발신자에게 중요한 이유

DKIM은 이메일이 전달(포워딩)되어도 유지되므로, SPF만으로는 얻을 수 없는 신뢰 계층을 제공합니다. SPF는 발신 IP를 검증하는 반면 DKIM은 메시지 자체를 검증합니다. 이를 통해 스푸핑을 막고 주요 제공업체에서 메시지가 스팸으로 분류될 가능성을 줄입니다. DKIM은 발신자 신원 확인을 위해 DKIM 정렬에 의존하는 DMARC와 BIMI를 도입하기 위한 선행 조건입니다.

운영 참고 사항과 흔한 실수

흔한 실패 원인은 DNS 공개 키를 갱신하지 않은 채 개인 키를 교체했거나, 메일 릴레이가 서명 이후에 메시지 본문이나 헤더를 수정해 암호화 해시가 깨지는 경우입니다. 서비스별로 여러 키를 관리하려면 셀렉터를 사용하세요. SendHQ 무료 도구(https://sendhq.cc/tools)로 현재 DNS 구성을 확인할 수 있습니다.

구체적인 예시

발신자가 google이라는 셀렉터를 구성합니다. selector._domainkey.example.com의 DNS 레코드에 공개 키가 들어 있습니다. 이메일이 발송되면 DKIM-Signature 헤더에 s=google과 d=example.com이 지정됩니다. 수신자는 해당 DNS 경로의 TXT 레코드를 조회해 서명 검증에 필요한 키를 찾습니다.

DKIM과 DMARC 정렬

DMARC를 통과하려면 DKIM 서명의 도메인이 From 헤더의 도메인과 정렬되어야 합니다. 이를 DKIM 정렬이라고 합니다. 서명이 유효해도 도메인이 From 주소와 일치하지 않으면 DKIM 검사는 통과하지만 DMARC 검사는 실패하며, 설정된 정책에 따라 전달에 문제가 생길 수 있습니다.

팀에서 자주 묻는 질문

DKIM은 이메일 본문을 암호화하나요?

아니요. DKIM은 개인정보 보호를 위해 내용을 암호화하지 않습니다. 무결성과 신뢰성을 보장하기 위한 암호화 해시를 만들 뿐이므로, 수신자는 발신자를 검증할 수 있지만 메시지는 그대로 읽을 수 있습니다.

DKIM 서명이 유효하지 않으면 어떻게 되나요?

유효하지 않은 서명은 메시지가 변조되었거나 발신자가 승인되지 않았다는 뜻이므로, 이메일이 스팸으로 분류되거나 아예 거부될 수 있습니다.

DKIM 키를 여러 개 사용할 수 있나요?

네. 셀렉터를 다르게 지정하면 발송 서비스별로 여러 DKIM 키를 사용할 수 있고, 메일 흐름을 중단하지 않고 키를 교체할 수도 있습니다.

1차 출처