MX 레코드
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
MX 레코드는 도메인 네임 시스템(DNS)의 한 종류로, 특정 도메인으로 향하는 이메일을 처리할 메일 서버를 지정한다. MX 레코드는 우선순위 값과 메일 서버의 도메인 이름(호스트)으로 구성되며, 우선순위 값이 낮을수록 먼저 시도된다. 이메일 전송 시 발신 메일 전송 에이전트(MTA)는 DNS를 쿼리하여 MX 레코드를 확인하고, 우선순위에 따라 메일 서버에 SMTP 연결을 시도한다. MX 레코드를 여러 개 설정하여 부하 분산을 구현하거나, 백업 메일 서버를 지정하여 주 서버 장애 시 이메일 전송을 유지할 수 있다. MX 레코드는 스팸 대응에도 활용되며, 배달 실패 시 재시도 방식은 서버에 따라 다르다. MX 레코드가 없는 경우 A 레코드를 사용하여 메일을 전송하며, RFC 5321에 따라 작동한다. MX 레코드는 RFC 974에서 처음 정의되었으며, 이후 여러 RFC를 통해 표준화되었다.
더 읽어볼만한 페이지
MX 레코드 | |
---|---|
네트워크 | |
종류 | DNS 레코드 |
설명 | 메일 서버 지정 |
관련 표준 | RFC 1035 RFC 7208 RFC 7505 |
2. MX 레코드의 기본
리소스 레코드는 도메인 네임 시스템(DNS)의 기초적인 정보 요소이다. MX 레코드는 이러한 레코드 중 하나이며, 특정 도메인으로 향하는 이메일을 처리할 메일 서버를 지정한다.[1]
메일 전송 에이전트(MTA)는 인터넷을 통해 이메일을 보낼 때, 각 수신자의 도메인 이름에 대한 MX 레코드를 DNS에 쿼리한다. 이 쿼리는 해당 도메인의 메일을 받는 메일 교환 서버의 호스트 이름 목록과 우선순위를 반환한다. 발신 에이전트는 "우선순위" 값이 가장 낮은 호스트부터 SMTP 연결을 시도한다.[3]
MX 메커니즘은 대체 포트 번호에서 메일 서비스를 제공하거나, 각 메일 서버에 가중치를 할당하여 우선순위가 다른 메일 서버에 메일 전달을 분산하는 기능을 제공하지 않는다.
2. 1. MX 레코드의 구조
MX 레코드는 일반적으로 다음과 같은 정보를 포함한다.도메인 | TTL | 클래스 | 유형 | 우선순위 | 호스트 |
---|---|---|---|---|---|
example.com. | 1936 | IN | MX | 10 | onemail.example.com. |
example.com. | 1936 | IN | MX | 10 | twomail.example.com. |
MX 레코드의 페이로드 정보[1]는 우선순위 값과 메일 서버의 도메인 이름(호스트)이다. 우선순위 필드는 어떤 메일 서버를 선호해야 하는지 나타낸다. 위 예시에서 값은 모두 10이므로, 메일은 ''onemail.example.com''과 ''twomail.example.com'' 모두에 균등하게 전송될 것으로 예상된다. 호스트 이름은 DNS에서 하나 이상의 주소 레코드(A 또는 AAAA)에 직접 매핑되어야 하며, CNAME 레코드를 가리키지 않아야 한다.[2]
RFC 5321에 따르면, 번호가 가장 낮은 레코드가 가장 우선적으로 사용된다.[4] "선호도 번호"는 때때로 "거리"라고도 불리는데, 거리가 작을수록 더 선호된다. 이전 RFC인 RFC 974는 두 서버의 선호도 번호가 동일할 경우, 두 서버가 동일한 "우선순위"를 갖는다고 명시하고 있다.
선호도 번호는 부호 없는 16비트[5][6][7] 필드이므로, 유효한 값의 범위는 0에서 65535까지이다.
2. 2. MX 레코드 예시
다음은 example.com 도메인에 대한 MX 레코드 설정 예시이다.도메인 | TTL | 클래스 | 유형 | 우선순위 | 호스트 |
---|---|---|---|---|---|
example.com. | 1936 | IN | MX | 10 | onemail.example.com. |
example.com. | 1936 | IN | MX | 10 | twomail.example.com. |
이메일이 인터넷을 통해 전송될 때, 발신 메일 전송 에이전트(MTA)는 각 수신자의 도메인 이름에 대한 MX 레코드를 도메인 네임 시스템에 질의한다.[3] 이 쿼리는 해당 도메인에 대한 수신 메일을 수락하는 메일 교환 서버의 호스트 이름 목록과 해당 서버의 우선순위를 반환한다. 발신 에이전트는 "우선순위" 값이 가장 낮은 호스트부터 SMTP 연결을 시도한다.[3] RFC 5321에 따르면, 번호가 가장 낮은 레코드가 가장 우선적으로 사용된다.[4]
MX 로드밸런싱도 참고하십시오.
MX 로드밸런싱도 참고하십시오.
일부 스패머는 스팸 메일이 스팸 방지 필터가 덜 효과적일 것이라는 가정 하에, 의도적으로 메일을 도메인의 백업(높은 거리) MX 서버 중 하나로 먼저 보낼 수 있다. 미등록이라고 하는 스팸 방지 기술은 이러한 행동을 가정하여 만들어졌다.
SMTP RFC 5321에 따르면, MTA가 메일 전송 시 임시 오류(4xx)를 만나면 동일한 서버나 우선순위가 낮은 다른 MX 레코드로 재시도해야 한다. 그러나 어떤 배달 실패가 더 낮은 우선순위의 MX 레코드로 재시도해야 하는지는 명확하지 않다.[4]
메일 전송 에이전트(MTA)는 특정 도메인에 대한 MX 레코드가 없는 경우, 해당 도메인의 A 레코드(또는 AAAA 레코드)를 사용하여 메일 서버의 IP 주소를 확인하고 메일 전송을 시도한다.[1] 이는 RFC 5321 5.1절에 명시된 내용으로, MX 레코드가 없으면 해당 도메인을 대상 호스트 이름과 기본 설정 값 0을 가진 MX 레코드가 있는 것처럼 처리하고, A 또는 AAAA 조회를 통해 IP 주소를 결정하는 방식이다.
MX 레코드의 페이로드 정보[1]는 우선순위 값("우선순위"로 표시)과 메일 서버의 도메인 이름("호스트"로 표시)이다.
위 표에서 우선순위 값은 모두 10으로, 메일은 'onemail.example.com'과 'twomail.example.com' 모두에 균등하게 전송될 것으로 예상된다. 호스트 이름은 DNS에서 하나 이상의 주소 레코드(A 또는 AAAA)에 직접 매핑되어야 하며, CNAME 레코드를 가리키지 않아야 한다.[2]
메일 전송 에이전트(MTA)가 인터넷을 통해 이메일 메시지를 전송할 때, 각 수신자의 도메인 이름에 대한 MX 레코드를 도메인 네임 시스템에 쿼리한다. 이 쿼리는 해당 도메인에 대한 수신 메일을 수락하는 메일 교환 서버의 호스트 이름 목록과 해당 서버의 우선순위를 반환한다. 발신 에이전트는 "우선순위" 값이 가장 낮은 호스트부터 SMTP 연결을 설정하려고 시도한다. 이 시스템을 사용하면 하나의 도메인에 대해 고가용성 클러스터의 메일 게이트웨이를 구축할 수 있다.[3]
3. MX 레코드 작동 방식
가장 단순한 경우, 도메인은 하나의 메일 서버만 가질 수 있다. 예를 들어, MTA가 example.com의 MX 레코드를 조회하고 DNS 서버가 우선순위 번호 50과 함께 mail.example.com만을 응답한 경우, MTA는 나열된 서버로 메일 전송을 시도한다.
MX 쿼리에 대해 둘 이상의 서버가 반환되면, 가장 작은 우선순위 번호의 서버를 먼저 시도해야 한다. 동일한 우선순위 번호로 둘 이상의 MX 레코드가 있는 경우, 낮은 우선순위 항목으로 이동하기 전에 해당 레코드를 모두 시도해야 한다. SMTP 클라이언트는 배달 시도가 성공할 때까지 목록에 있는 각 관련 주소를 순서대로 시도(및 재시도)할 수 있어야 한다.[8] 이러한 시스템을 사용하면 필요한 경우 하나의 도메인에 대해 고가용성 클러스터의 메일 게이트웨이를 구축할 수 있다.[3]
MX 메커니즘은 대체 포트 번호에서 메일 서비스를 제공하는 기능이나, 각 메일 서버에 가중치 값을 할당하여 우선순위가 다른 메일 서버 집합에 메일 전달을 분산하는 기능은 제공하지 않는다.
4. MX 레코드와 부하 분산
여러 개의 MX 레코드에 동일한 우선순위 값을 설정하면, 여러 메일 서버 간에 부하 분산(로드 밸런싱)을 구현할 수 있다. 예를 들어, `example.com` 도메인에 대해 다음과 같이 두 개의 MX 레코드를 설정할 수 있다.도메인 TTL 클래스 유형 우선순위 호스트 example.com. 1936 IN MX 10 onemail.example.com. example.com. 1936 IN MX 10 twomail.example.com.
위의 경우, 우선순위 값이 모두 10으로 동일하므로 메일은 `onemail.example.com`과 `twomail.example.com` 두 서버에 균등하게 전송될 것으로 예상된다. 이는 일반적인 구성이다.[1] 호스트 이름은 DNS에서 하나 이상의 주소 레코드(A 또는 AAAA)에 직접 매핑되어야 하며, CNAME 레코드를 가리키지 않아야 한다.[2]
발신 메일 전송 에이전트(MTA)는 수신자의 도메인 이름에 대한 MX 레코드를 쿼리하여 해당 도메인에 대한 수신 메일을 수락하는 메일 교환 서버의 호스트 이름 목록과 우선순위를 받는다. "우선순위" 값이 가장 낮은 호스트부터 SMTP 연결을 시도한다.[3]
수신 메일 부하를 여러 서버에 분산하는 표준적인 방법은 각 서버에 동일한 선호도 번호를 반환하는 것이다. 우선순위가 같은 서버로 메일을 보낼 서버를 결정할 때 보내는 측 SMTP는 여러 메일 교환기 간에 부하를 분산하기 위해 무작위로 선택해야 한다.[9]
DNS 라운드 로빈 방식을 사용하여 여러 IP 주소를 가진 메일 서버에 대한 부하 분산을 수행할 수도 있다.[3] 이 방법은 부하 분산 책임을 SMTP 발신자가 아닌 DNS에 둔다.
5. 백업 MX 레코드
일부 도메인은 여러 개의 MX 레코드를 가지며, 그중 하나는 "백업"으로 사용된다.[1] 이 백업 MX 레코드는 더 높은 우선순위 번호를 갖기 때문에 일반적으로 이메일 전송 대상으로 선택되지 않는다.
그러나 낮은 번호의 호스트에서 오류가 발생한 경우 (아마도 어떤 종류의 중단으로 인해), 이메일 전송 서버는 "백업" 호스트로 메일을 전달한다. 아래 예시에서는 ''queue.example.com''이 해당한다.Domain TTL Class Type Priority Host example.com. 1936 IN MX 10 onemail.example.com. example.com. 1936 IN MX 10 twomail.example.com. example.com. 1936 IN MX 100 queue.example.com.
백업 서버가 사용자 메일함에 직접 접근할 수 있다면, 메일은 해당 서버로 전송되지만, 그렇지 않은 경우 ''queue.example.com''에 대기될 가능성이 높으며, 중단이 해결될 때까지 유지된다.
이러한 종류의 구성이 없는 경우, 도메인의 메일 서버가 모두 오프라인 상태일 때, ''보내는'' 서버는 해당 도메인으로 전송될 메시지를 대기했다가 나중에 다시 시도해야 한다. 그러나 이러한 보내는 서버는 이전에 오프라인 상태였던 도메인 서버가 이제 사용 가능하다는 것을 알릴 방법이 없으므로 폴링 스케줄에 의존한다. 따라서 도메인이 사용 가능한지 여부는 다음에 전송을 시도할 때만 발견된다. 따라서 받는 도메인의 서버가 온라인 상태가 된 시점과 지연된 메시지가 최종적으로 전달되는 시점 사이의 지연 시간은 보내는 서버의 재시도 스케줄에 따라 몇 분에서 며칠까지 다양할 수 있으며, 받는 도메인은 이에 대한 가시성이나 제어 권한이 없다.
6. 스팸 대응과 MX 레코드
7. 배달 실패 처리
서버가 4xx 오류를 명시하거나 연결을 예기치 않게 종료하여 임시 실패를 알리면, 보낸 사람은 재시도를 늦춰야 한다.[4]
Sendmail과 Postfix 2.1 이상 등 일부 메일 서버는 인사 실패와 같은 특정 임시 배달 실패 후, 다음 우선순위 MX 서버를 시도한다.[10][11] 반면, qmail과 Postfix 2.0 이하 등은 최단 거리 MX 레코드 서버에 연결할 수 없을 때만 더 낮은 우선순위 MX 레코드를 사용한다. RFC에 명확한 규정이 없으므로 두 방식 모두 유효하다.
8. A 레코드로의 폴백
8. 1. 역사적 배경
초기 SMTP는 HOSTS.TXT 파일을 사용하여 메일 서버를 식별했다.[13] 그러나 1983년 말 도메인 네임 시스템(DNS)에 대한 최초의 설명인 RFC 883이 발표되면서 상황이 바뀌기 시작했다. 이 문서에서는 실험적인 MD 및 MF 레코드를 설명했다. RFC 897 및 RFC 921에 따르면 DNS로의 전환은 1983년에 시작되었지만, HOSTS.TXT는 1985년 말까지 단계적으로 폐지될 예정이었고, 1990년대 후반까지 완전히 폐지되지 않았다.[13]
1986년 1월, RFC 973 및 RFC 974는 MD 및 MF 레코드를 폐지하고 MX 레코드로 대체했다. RFC 974는 또한 클라이언트가 각 MX 호스트에 대해 WKS 조회를 수행하여 SMTP를 지원하는지 확인하도록 권장했지만,[12] RFC 1123에서 이 권장 사항은 변경되었다.
MX 레코드가 등장하기 전, SMTP는 HOSTS.TXT를 사용하여 최소 1년, A, MD 및 MF 레코드를 사용하여 몇 년 동안 사용되었다. MD 및 MF는 사용하기 어려웠기 때문에 대부분 A 레코드를 사용했다. 이러한 이유로 A 레코드로의 폴백(fallback)이 없는 MX는 작동하지 않았을 것이다. MX의 초기 사용은 다른 네트워크로의 게이트웨이를 식별하기 위한 것이었지만, 1990년대 초 DNS가 널리 사용될 때까지 널리 사용되지 않았다.[13]
9. 표준 문서
발행일 | RFC 번호 | 제목 | 비고 |
---|---|---|---|
1987년 | RFC 1035 | Domain Names - Implementation and Specification | |
1996년 | RFC 1912 | Common DNS Operational and Configuration Errors | |
2008년 | RFC 5321 | Simple Mail Transfer Protocol | |
2015년 | RFC 7505 | A "Null MX" No Service Resource Record for Domains That Accept No Mail |
발행일 | RFC 번호 | 제목 | 비고 |
---|---|---|---|
1986년 | RFC 974 | Mail Routing and the Domain System | RFC 5321에 의해 폐기됨 |
2001년 | RFC 2821 | Simple Mail Transfer Protocol | RFC 5321에 의해 폐기됨 |
참조
[1]
문서
[2]
간행물
Clarifications to the DNS Specification
1997-07
[3]
웹사이트
HOWTO - Configure Round Robin and Load Balancing
http://zytrax.com/bo[...]
zytrax.com
2014-02-28
[4]
간행물
[5]
간행물
[6]
간행물
[7]
간행물
[8]
간행물
[9]
간행물
[10]
웹인용
If the primary MX responds, but fails mid-transaction, Postfix 1.2 and 2.0 will not try a backup MX.
http://archives.neoh[...]
2009-06-23
[11]
문서
[12]
간행물
MAIL ROUTING AND THE DOMAIN SYSTEM
IETF
2011-11-18
[13]
웹인용
ietf-smtp message
http://www.imc.org/i[...]
2008-06-01
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com