본문으로 건너뛰기
MyIPKit— 내 네트워크를 이해하다.

SPF·DKIM·DMARC 검사

어떤 도메인에서 왔다고 주장하는 메일을 믿을지는 DNS 레코드 세 개가 결정합니다. 셋을 모두 읽어서 각각 무슨 일을 하고 있는지, 어느 부분이 발목을 잡는지 설명합니다.

공개된 DNS만 읽습니다. 메일을 보내지 않으며, 도메인이나 메일 서버에 접속하지도 않습니다.

보내는 사람 주소의 도메인입니다. 메일 서버 주소가 아닙니다.

비워두면 흔한 기본값들을 시도합니다. DNS로는 셀렉터 목록을 알 수 없습니다.

예시:

공개된 DNS만 읽습니다. 메일을 보내지 않으며, 도메인이나 메일 서버에 접속하지도 않습니다.

세 레코드가 하는 일

  • SPF 는 이 도메인으로 메일을 보내도 되는 서버 목록입니다. 보낸 서버의 주소와 대조합니다.
  • DKIM 은 공개키를 게시합니다. 보내는 서버가 각 메시지에 서명하고, 수신 측이 DNS의 키로 서명을 검증합니다.
  • DMARC 는 SPF와 DKIM이 실패했을 때 어떻게 할지, 그리고 보고서를 어디로 보낼지 정합니다. 이게 없으면 앞의 둘은 참고용일 뿐입니다.

고치는 순서

  1. 내 이름으로 보내는 모든 서비스를 나열한 SPF를 게시하고, ~all로 끝냅니다.
  2. 그 서비스들 각각의 DKIM 키를 게시합니다.
  3. p=none과 rua 주소를 넣은 DMARC를 게시하고, 몇 주간 보고서를 읽습니다.
  4. 보고서에 내 메일만 통과하는 게 확인되면 p=quarantine, 그다음 p=reject로 올립니다.

보고서가 깨끗해지기 전에 DMARC를 조이면 정상 메일이 거부됩니다. 그 단계를 추측으로 하지 않으려고 보고서가 존재하는 것입니다.

메일이 스팸함으로 갑니다. 이 중 뭐가 원인인가요?

대개 p=none인 DMARC와, 없거나 느슨한 SPF의 조합입니다. 둘이 합쳐지면 수신 측에 강제할 근거가 하나도 없습니다. SPF를 먼저 고치고, 그다음 DKIM, DMARC를 마지막에 조이세요. DMARC가 앞의 둘을 근거로 움직이기 때문입니다.

왜 제 DKIM 키를 못 찾나요?

DKIM 키는 셀렉터 이름 아래에 있는데, DNS에는 셀렉터를 나열하는 방법이 없습니다. 모르면 흔한 기본값만 시도할 수 있습니다. 메일 서비스의 DNS 설정 화면에 셀렉터가 나와 있으니 위에 입력하세요.

p=none이 나쁜 건가요?

시작점으로는 맞고, 머무를 자리로는 틀렸습니다. 수신 측에 아무것도 하지 말라는 뜻이라 아무도 보호하지 못합니다. 다만 보고서는 생성되고, 조이기 전에 무엇이 깨질지 알려주는 게 그 보고서입니다.

10회 조회 한계가 뭔가요?

SPF 레코드의 include·a·mx·ptr·exists·redirect는 각각 DNS 조회를 하나씩 씁니다. 표준이 합계를 10회로 제한합니다. 넘으면 수신 측은 SPF를 영구 오류로 처리해야 하므로, 점진적으로 나빠지는 게 아니라 통째로 실패합니다.

테스트 메일을 보내나요?

아닙니다. 공개된 DNS 레코드만 읽습니다. 메시지를 만들지도, 도메인이나 메일 서버에 접속하지도 않습니다.