TXT 레코드

TXT 레코드는 도메인 이름에 임의의 문자열을 붙여 두는 DNS 레코드입니다. 도메인 소유 확인과 메일 인증 설정이 거의 모두 이 레코드로 이루어집니다.

작성

TXT 레코드는 도메인 이름에 임의의 문자열을 붙여 두는 DNS 레코드입니다. IP 주소나 서버 이름처럼 정해진 형식이 없어서 무엇이든 담을 수 있고, 그 덕에 "이 도메인의 소유자가 맞다"거나 "이 도메인의 메일은 이런 규칙을 따른다" 같은 선언을 외부 서비스가 읽어 갈 수 있는 공개 게시판처럼 쓰입니다. 원래 사람이 읽을 메모를 위한 레코드였지만, 지금은 기계가 읽는 설정값이 대부분입니다.

무엇에 쓰이는가

용도이름값의 모양
도메인 소유 확인루트 또는 지정된 하위 이름서비스가 발급한 무작위 토큰
발신 서버 선언루트v=spf1 로 시작하는 문자열
서명 공개키선택자._domainkeyv=DKIM1; k=rsa; p=...
메일 정책_dmarcv=DMARC1; p=none; rua=...

메일 인증 세 가지가 모두 TXT로 들어간다는 점이 실무에서 가장 중요합니다. SPF, DKIM, DMARC는 서로 다른 기술이지만 DNS에서는 이름만 다른 TXT 레코드이고, 그래서 DNS 콘솔에서는 셋을 구분해 주지 않습니다. 이름을 어디에 넣는지를 헷갈리면 값은 맞는데 인증이 통과하지 않습니다. 자세한 설정은 SPF, DKIM, DMARC 설정에 있습니다.

외부 서비스 연결에서도 TXT가 자주 등장합니다. 메일 서비스, 협업 도구, 검색 등록, 인증서 발급이 모두 "지정한 TXT 값을 넣어 두면 소유자로 인정한다"는 방식을 씁니다. 확인이 끝난 뒤에도 서비스가 주기적으로 다시 조회하는 경우가 있으니, 확인용 토큰은 특별한 이유가 없으면 지우지 않습니다.

길이 제한과 따옴표

하나의 문자열 조각은 255자를 넘을 수 없습니다. 이는 DNS 프로토콜 자체의 제한이라 피할 수 없고, 대신 한 레코드 안에 255자 이하의 조각을 여러 개 이어 붙여 더 긴 값을 표현합니다. 읽는 쪽은 조각을 순서대로 이어 하나의 문자열로 취급합니다.

selector1._domainkey.example.co.kr. 3600 IN TXT ( "v=DKIM1; k=rsa; "
  "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..." )

2048비트 DKIM 공개키가 이 제한에 걸리는 대표적인 경우입니다. 대부분의 DNS 콘솔은 긴 값을 붙여 넣으면 알아서 조각으로 나누지만, 직접 존 파일을 편집하거나 API로 넣을 때는 나누어 주어야 합니다. 이때 조각 사이에 공백이나 줄바꿈을 넣어도 값에는 포함되지 않으니, 원래 문자열에 필요한 공백은 조각 안쪽에 두어야 합니다.

따옴표는 값의 일부가 아니라 존 파일에서 문자열 경계를 나타내는 문법입니다. 콘솔 입력창에는 따옴표 없이 내용만 적는 것이 기본이고, 조회 결과에서 따옴표가 두 겹으로 보인다면 따옴표가 값으로 저장된 것이니 지워야 합니다.

여러 개를 둘 때

같은 이름에 TXT를 여러 개 두는 것은 정상입니다. 루트 이름에 SPF 하나와 여러 서비스의 소유 확인 토큰이 함께 있는 구성이 흔합니다. 조회하면 전부 돌아오고, 읽는 쪽은 자기가 아는 접두사로 시작하는 문자열만 골라 씁니다.

  • 소유 확인 토큰은 서비스마다 하나씩 추가하면 됩니다. 기존 TXT를 덮어쓰지 않도록 "추가"인지 "수정"인지 확인하세요.
  • SPF는 예외입니다. 한 이름에 v=spf1 로 시작하는 TXT가 두 개 이상이면 규격 위반으로 검사가 실패하므로, 여러 발신 서비스는 하나의 SPF 안에서 합쳐야 합니다.
  • 값을 바꾼 뒤 반영이 늦다면 해당 레코드의 TTL을 확인합니다. 소유 확인을 자주 반복할 예정이라면 TTL을 짧게 두는 편이 편합니다.

자주 묻는 질문

네, TXT는 한 이름에 여러 개가 공존할 수 있습니다. 조회하면 모두 한 번에 돌아오고 읽는 쪽이 자기에게 해당하는 문자열만 골라 씁니다. 단 SPF처럼 규격이 하나만 허용하는 용도는 예외이니 용도별 규칙을 확인하세요.

값 자체에는 필요 없습니다. 따옴표는 존 파일 문법에서 문자열의 경계를 표시하는 기호이고, DNS 콘솔 입력창은 보통 내부에서 알아서 붙입니다. 콘솔에 따옴표까지 적으면 따옴표가 값의 일부로 저장되어 인증이 실패할 수 있습니다.

대개 입력 이름이 틀렸거나 캐시가 남은 경우입니다. 호스트 칸에 넣을 값이 루트인지 하위 이름인지 확인하고, 콘솔이 도메인을 자동으로 덧붙이는지 살펴보세요. 값이 맞다면 TTL만큼 기다린 뒤 다시 시도합니다.

관련 가이드