기술 · 출처 기반 답변
이메일 도메인이 유효한지 확인하는 방법
이메일 도메인이 유효한지 확인하려면 MX(Mail Exchanger) 레코드를 DNS로 조회해 도메인이 이메일을 받도록 설정되어 있는지 확인하세요. 메일 서버를 가리키는 활성 MX 레코드가 하나 이상 있으면 이메일용으로 유효한 도메인으로 봅니다. MX 레코드가 없으면 A 레코드로 폴백하는 경우를 제외하고 도메인은 이메일을 받을 수 없지만, 최신 환경에서는 드문 경우입니다.
구문 검증
첫 단계는 도메인이 RFC 5322 표준을 따르는지 확인하는 것입니다. 이메일 주소의 도메인 파트에는 최상위 도메인이 있어야 하고 정해진 문자 규칙을 따라야 합니다. 네트워크 요청을 하기 전에 정규식으로 허용되지 않는 문자나 연속된 점이 없는지 확인하세요. 명백히 잘못된 문자열에 대해 불필요한 DNS 쿼리를 보내는 일을 막을 수 있습니다.
MX 레코드 조회
도메인의 MX 레코드를 DNS로 조회하세요. MX 레코드는 도메인을 대신해 이메일 메시지를 수락하는 메일 서버를 지정합니다. DNS 쿼리가 유효한 MX 레코드를 하나 이상 반환하면 해당 도메인은 기술적으로 메일을 받을 수 있습니다. 수동 확인에는 dig나 nslookup 같은 도구를 사용할 수 있고, 대량 확인에는 프로그래밍 라이브러리가 제공하는 비동기 메서드를 사용할 수 있습니다.
A 레코드 폴백
SMTP 표준에 따르면 MX 레코드가 없을 때 발신 서버는 도메인의 A 레코드에 지정된 IP 주소로 메일 전송을 시도할 수 있습니다. 이는 레거시 동작이지만, A 레코드를 확인하면 보조적인 검증 계층이 됩니다. 다만 MX와 A 레코드가 모두 없다면 해당 도메인은 이메일 전달에 유효하지 않다고 확정할 수 있습니다.
확인 도구
대규모로 이 작업을 구현하는 개발자에게는 원시 DNS 쿼리를 직접 관리하는 것보다 전용 검증 서비스를 사용하는 편이 더 효율적입니다. SendHQ는 https://sendhq.cc/tools에서 도메인 설정 확인을 돕는 무료 도구를 제공합니다. 이 도구는 조회 과정을 자동화하고 전달 실패로 이어질 수 있는 흔한 설정 오류를 점검합니다.
DNS 실패 처리
NXDOMAIN 응답과 타임아웃을 구분하세요. NXDOMAIN 응답은 도메인이 존재하지 않음을 명확히 나타냅니다. 타임아웃이나 SERVFAIL은 일시적인 DNS 문제나 제한적인 방화벽을 의미할 수 있습니다. 확정적이지 않은 오류에는 지수 백오프를 적용한 재시도 로직을 구현해, 일시적인 네트워크 장애 중에 유효한 도메인을 유효하지 않은 것으로 표시하지 않도록 하세요.
팀에서 자주 묻는 질문
유효한 MX 레코드가 있으면 이메일 주소가 실제로 존재한다는 뜻인가요?
아니요. MX 레코드는 도메인이 메일을 받을 수 있다는 것만 확인합니다. 해당 서버에 특정 메일함이나 사용자가 존재하는지는 확인하지 않습니다.
MX 레코드가 없어도 도메인이 유효할 수 있나요?
네. 도메인에 A 레코드가 있으면 일부 SMTP 서버는 해당 IP로 전송을 시도합니다. 다만 최신 메일에서는 표준적인 방식이 아닙니다.
도메인 유효성 검사와 이메일 유효성 검사는 무엇이 다른가요?
도메인 유효성 검사는 도메인이 메일용으로 설정되어 있는지 확인하고, 이메일 유효성 검사는 특정 주소의 구문과 도메인 상태를 확인합니다.
1차 출처
- RFC 5321: 단순 메일 전송 프로토콜(SMTP) — RFC Editor
- RFC 5322: 인터넷 메시지 형식 — RFC Editor
- Cloudflare DNS 문서 — Cloudflare