MX 조회에서 잘못된 형식의 호스트 이름(예: 숫자나 하이픈으로 시작하는 호스트 이름 등)을 게시(및 수신)할 수 있는지 궁금합니다. DNS 서버는 일반적으로 MX 레코드를 수락하기 전에 확인합니까?
예를 들어,
0mx.example.com
-host.domain.com
host. domain.com
허용되지 않더라도 잘못된 호스트 이름이 어떻게든 게시되었다고 가정합니다. "좋은" DNS 서버(예: Google DNS)가 MX 조회에서 이러한 잘못된 호스트 이름을 전달하지 않을 것이라고 가정할 수 있습니까?
저는 관련된 것을 구현 중이며 항상 올바른 형식의 호스트 이름을 반환하도록 MX 조회를 "신뢰"할 수 있는지 알아야 합니다.
답변1
[RFC 2181] "11. 이름 구문"에 따르면 DNS는 "모든 이진 문자열"을 허용합니다.
DNS 자체는 리소스 레코드를 식별하는 데 사용할 수 있는 특정 레이블에 대해 하나의 제한만 적용합니다. 이 제한은 라벨의 길이 및 전체 이름과 관련이 있습니다. 태그의 길이는 1~63옥텟으로 제한됩니다. 정규화된 도메인 이름의 길이는 255옥텟(구분자 포함)으로 제한됩니다. 길이가 0인 전체 이름은 DNS 트리의 루트를 나타내기 위해 정의되며 일반적으로 "."로 작성 및 표시됩니다. 이러한 제한 사항에 따라 모든 이진 문자열을 모든 리소스 레코드의 레이블로 사용할 수 있습니다. 마찬가지로 모든 이진 문자열은 도메인 이름을 값의 일부 또는 전부(SOA, NS, MX, PTR, CNAME 및 추가할 수 있는 기타 값)로 포함하는 모든 레코드의 값으로 사용할 수 있습니다.
따라서 DNS 서버, 클라이언트 및 메일 전송 소프트웨어가 이러한 유형의 데이터를 처리하는 방법을 테스트하십시오.
답변2
인증되지 않은 DNS 서버를 생성하는 것을 막을 수 있는 방법은 없습니다. 그러나 여기 있는 어느 누구도 시도하지 않고 Google의 DNS 서버가 그러한 기록을 처리하는 방법에 대해 확실한 답을 줄 수는 없을 것 같습니다.
답변3
DNS 서버 소프트웨어는 MX 호스트 이름의 구문에 잘못된 문자가 있는지 확인합니까? 일부는 그럴 것이고 일부는 그렇지 않을 것입니다.
캐싱 DNS 확인자 역할을 하는 소프트웨어가 권한 있는 DNS 서버로부터 받은 호스트 이름에 대해 유효성 검사를 수행합니까? 나는 그것을 의심한다.
MX 레코드에 대상으로 지정된 호스트가 유효한 SMTP 포트에서 수신 대기하는지 확인하는 DNS 소프트웨어가 있습니까? 아니요, 누군가가 작성할 수 있을 수도 있지만 DNS 서버에서 그러한 유효성 검사를 본 적이 없습니다.
도메인 영역에서 생성된 DNS 레코드에 오류가 있을 수 있다고 걱정하시나요? 짧은 TTL(Time To Live)로 이러한 레코드를 생성한 다음 테스트하는 것이 좋습니다. 새 DNS 레코드가 양호한지 확인한 후 TTL을 일반 시간 길이로 변경할 수 있습니다. (짧은 TTL은 수정 사항으로 대체되기 전에 손상된 레코드가 오랫동안 캐시되지 않음을 의미합니다)