TXT 레코드
TXT 레코드는 도메인 이름에 임의의 문자열을 붙여 두는 DNS 레코드입니다. 도메인 소유 확인과 메일 인증 설정이 거의 모두 이 레코드로 이루어집니다.
작성
TXT 레코드는 도메인 이름에 임의의 문자열을 붙여 두는 DNS 레코드입니다. IP 주소나 서버 이름처럼 정해진 형식이 없어서 무엇이든 담을 수 있고, 그 덕에 "이 도메인의 소유자가 맞다"거나 "이 도메인의 메일은 이런 규칙을 따른다" 같은 선언을 외부 서비스가 읽어 갈 수 있는 공개 게시판처럼 쓰입니다. 원래 사람이 읽을 메모를 위한 레코드였지만, 지금은 기계가 읽는 설정값이 대부분입니다.
무엇에 쓰이는가
| 용도 | 이름 | 값의 모양 |
|---|---|---|
| 도메인 소유 확인 | 루트 또는 지정된 하위 이름 | 서비스가 발급한 무작위 토큰 |
| 발신 서버 선언 | 루트 | v=spf1 로 시작하는 문자열 |
| 서명 공개키 | 선택자._domainkey | v=DKIM1; k=rsa; p=... |
| 메일 정책 | _dmarc | v=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만큼 기다린 뒤 다시 시도합니다.
관련 가이드
- DNS 레코드 설정 (A, AAAA, CNAME, MX, TXT, SRV)A, AAAA, CNAME, MX, TXT, SRV 레코드가 각각 무엇을 하고 어떤 값을 넣어야 하는지 예시로 정리했습니다. 루트 도메인에 CNAME을 걸 수 없는 이유와 TTL 기준도 함께 다룹니다.
- 외부 서비스에 도메인 연결하기Vercel, Netlify, GitHub Pages, Cloudflare, AWS 같은 외부 서비스에 회사 도메인을 연결하는 방법입니다. A와 CNAME 중 무엇을 쓸지, apex와 www를 어떻게 나눌지, 값을 어디서 복사해 어떻게 확인하는지 정리했습니다.
- 회사 메일 스팸함 방지: SPF, DKIM, DMARC 설정회사 도메인으로 보낸 메일이 스팸함에 들어가지 않으려면 DNS에 SPF, DKIM, DMARC 세 레코드를 넣어야 합니다. 각 레코드의 역할, 설정 절차, 검증 방법, 흔한 실수를 정리했습니다.