DNS SPF 레코드란?

SPF 레코드는 이메일 인증에 널리 이용되는 DNS TXT 레코드의 한 가지 유형입니다. SPF 레코드에는 해당 도메인에서 이메일을 보낼 수 있도록 승인된 IP 주소와 도메인의 목록이 포함됩니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • DNS SPF 레코드 정의
  • DNS SPF 레코드의 효과 설명
  • DNS SPF 레코드의 구성 요소 이해

글 링크 복사

DNS SPF 레코드란?

SPF(Sender Policy Framework) 레코드는 특정 도메인에서 이메일을 보낼 수 있도록 승인된 모든 서버를 열거하는 DNS TXT 레코드의 한 가지 유형입니다.

도메인 관리자는 DNS TXT(“텍스트”) 레코드를 통해 임의의 텍스트를 도메인 네임 시스템(DNS)에 입력할 수 있습니다. 원래 TXT 레코드는 도메인에 대한 중요한 알림을 포함시키기 위해 만들어진 것이지만, 이후 다른 목적에 이용할 수 있도록 진화되었습니다.

SPF 레코드는 원래 이메일에 이용되는 표준 프로토콜 SMTP(Simple Mail Transfer Protocol)이 본질적으로 이메일의 "발신" 주소를 인증하지 않기 때문에 만들어졌습니다. 따라서 SPF나 기타 인증 레코드가 없다면 공격자가 쉽게 발신자를 가장하여 수신자를 속임으로써 특정 행동을 하거나 정보를 공유하게 할 수 있습니다.

SPF 레코드는 도어맨이 관리하는 손님 목록으로 생각하면 됩니다. 목록에 없는 사람이 오면 도어맨은 출입을 허가하지 않습니다. 마찬가지로 SPF 레코드에 발신자의 IP 주소나 도메인이 없다면 수신 서버(도어맨)은 해당 이메일을 배달하지 않거나 스팸으로 표시합니다.

SPF는 이메일이 신뢰할 만한 곳에서 온 것인지 이메일 서버가 확인하기 위해 이용할 수 있는 DNS 기반 메커니즘 중 하나입니다. DMARC(Domain-based Message Authentication Reporting and Conformance)와 DKIM(DomainKeys Identified Mail)도 이메일 인증에 이용되는 메커니즘입니다.

한때는 SPF 레코드에 전담 DNS 레코드 유형이 있었습니다. 하지만 이후 전담 레코드는 가치가 떨어지고 TXT 레코드만 사용되게 되었습니다.

메일 서버가 SPF 레코드를 검사하는 방식

메일 서버가 SPF 레코드를 검사할 때 진행하는 프로세스는 상대적으로 단순합니다.

  • 1번 서버가 이메일을 보냅니다. 이 서버의 IP 주소는 192.0.2.0이며 해당 이메일이 이용하는 반환 경로는 email@returnpath.com입니다. (반환 경로 주소는 "발신" 주소와 다르며 반송되는 메시지를 수집하고 처리하기 위한 용도로 사용됩니다.)
  • 메시지를 받는 메일 서버(서버2)는 반환 경로 도메인으로 SPF 레코드를 찾습니다.
  • 서버 2가 해당 반환 경로 도메인의SPF 레코드를 발견하게 되면 승인된 발신자 목록에서 서버 1의 IP 주소에 대한 SPF 레코드를 찾습니다. 해당 IP 주소가 SPF 레코드에 포함되어 있으면, SPF 검사에 합격하여 이메일이 계속 진행됩니다. IP 주소가 SPF 레코드 목록에 포함되어 있지 않으면, SPF 검사를 통과하지 못합니다. 이 경우 해당 이메일은 거부되거나 스팸으로 표시됩니다.

SPF 레코드의 형태

서버가 SPF 레코드의 내용을 해석하는 방식을 이해할 수 있도록 하려면 SPF 레코드는 특정 표준을 따라야 합니다. 다음 예는 SPF 레코드의 핵심 구성 요소를 보여줍니다.

v=spf1 ip4=192.0.2.0 ip4=192.0.2.1 include:examplesender.email -all

이 예는 서버에게 이 레코드가 어떤 유형인지 알리고 이 도메인의 승인 받은 IP 주소와 제삼자를 설명하며 준수하지 않는 이메일의 경우 어떻게 처리할지 지시합니다. 개별 구성 요소가 어떻게 이를 달성하는지 알아봅시다.

  • v=spf1는 SPF 레코드가 포함되어 있다고 서버에게 알려줍니다. SPF 레코드는 모두 이 문자열로 시작해야 합니다.
  • 다음으로 SPF의 "guest list" 즉 승인된 IP 주소의 목록이 이어집니다. 이 예에서는 ip4=192.0.2.0ip4=192.0.2.1이 해당 도메인에서 이메일을 보낼 수 있도록 승인 받았음을 알려줍니다.
  • include:examplesender.net는 include 태그의 예로서 해당 도메인에서 이메일을 보낼 수 있는 제삼자 조직을 서버에 알려줍니다. 이 태그는 포함된 도메인(examplesender.net)의 SPF 레코드 내용을 검사해야 하며 여기에 포함된 IP 주소도 승인된 것으로 간주해야 한다고 알립니다. SPF 레코드에는 다수의 도메인이 포함될 수 있지만 유효한 도메인에만 작동합니다.
  • 마지막으로 -all은 SPF 레코드에 열거되지 않은 주소는 이메일을 보낼 수 있도록 승인 받지 않았으므로 거부하라고 서버에 알립니다.
    • 여기에 쓸 수 있는 다른 옵션에는 열거되지 않은 이메일은 안전하지 않음 혹은 스팸으로 표시하되 수락하라는 ~all과 어떤 서버라도 귀하의 도메인을 대신해 이메일을 보낼 수 있음을 알리는 +all이 있습니다.

이 글에서 사용한 예는 매우 단순하지만, SPF는 훨씬 복잡할 수도 있습니다. SPF 레코드가 유효하려면 다음 몇 가지 사항을 기억해야 합니다.

  • 하나의 도메인에는 2개 이상의 CPF 레코드가 있을 수 없습니다.
  • 레코드는 all 구성 요소로 끝나거나 redirect: 구성 요소(해당 SPF 레코드를 다른 도메인이 호스팅하고 있음을 알림)로 끝나야 합니다.
  • SPF 레코드에는 대문자가 포함될 수 없습니다.

자세한 내용은 공식 SPF 레코드 문서를 참조하시기 바랍니다.

SPF 레코드를 사용하는 이유

도메인 운영자가 SPF 레코드를 사용하는 이유는 여러가지가 있습니다.

  • 공격 방지: 이메일을 인증하지 않으면 회사 및 이메일 수신자는 피싱 공격, 스팸 이메일, 이메일 스푸핑의 위험에 노출됩니다. SPF 레코드가 있으면 공격자가 도메인을 흉내내기 어려워져 이러한 공격의 가능성이 줄어듭니다.
  • 이메일의 전달 가능성 개선: 공개된 SPF 레코드가 없는 도메인은 이메일이 반송되거나 스팸으로 표시될 수 있습니다. 시간이 지나면 반송된 이메일이나 스팸으로 표시된 이메일로 인해 해당 도메인이 청중의 사서함에 도달하는 능력에 영향이 있을 수 있어 고객, 직원, 기타 주체와 통신하는 노력에 해가 있게 됩니다.
  • DMARC 준수: DMARC는 승인된 사용자만 이메일을 보낼 수 있음을 보장하는 이메일 확인 시스템입니다. DMARC 정책은 SPF 및 DKIM 검사를 통과하지 않은 이메일에 대해 서버가 어떻게 해야 하는지 지시합니다. 이러한 이메일은 DMARC 정책에 따라 스팸으로 표시하거나 거부하거나 정상으로 배달됩니다. 도메인 관리자는 해당 정책을 조정하는 데 도움을 받을 수 있도록 이메일 활동에 대한 보고서를 받게 됩니다.

The Cloudflare Email Security DNS Wizard makes it simple to set up the correct DNS TXT records and block spammers from using a domain. Read more about the Wizard here.

이메일용 DNS 레코드에 대해 자세히 알아보기.