MX 레코드,로드 밸런싱 및 페일 오버를위한 더 나은 설정


9

example.com 도메인을 가져 오면 mail1.example.com과 mail2.example.com이라는 두 개의 메일 서버가 이미 구성되어 있습니다. 일반적으로 다음 설정을 사용합니다.

example.com.           1200    IN      MX      10 mail1.example.com.
example.com.           1200    IN      MX      10 mail2.example.com.
mail1.example.com.     1200    IN      A       172.16.10.1
mail2.example.com.     1200    IN      A       172.16.10.2

동료가 다음 설정을 제안했습니다.

example.com.           1200    IN      MX      10 mail.example.com.
mail.example.com.      1200    IN      A       172.16.10.1
mail.example.com.      1200    IN      A       172.16.10.2

mail1.example.com.     1200    IN      A       172.16.10.1
mail2.example.com.     1200    IN      A       172.16.10.2

그는 일부 클라이언트가 동일한 우선 순위 MX로 라운드 로빈을 올바르게 수행하지 않는다고 말하면서 2 개의 서버를 가리키는 2 개의 A 레코드를 가진 단일의 새 호스트 이름입니다. 10.1 실패, 172.16.10.2가 전달을 시도하고 있습니까? 또는 다음과 같은 설정이 더 좋을 것입니다.

example.com.           1200    IN      MX      10 mail.example.com.
example.com.           1200    IN      MX      20 mail1.example.com.
example.com.           1200    IN      MX      20 mail2.example.com.
mail.example.com.      1200    IN      A       172.16.10.1
mail.example.com.      1200    IN      A       172.16.10.2

mail1.example.com.     1200    IN      A       172.16.10.1
mail2.example.com.     1200    IN      A       172.16.10.2

감사.

답변:


11

MTA가 MX 레코드를 처리하는 방법을 지정하는 RFC는 RFC974 , RFC1123 섹션 5.3.4 , RFC2821 섹션 5RFC5321 섹션 5 입니다.

RFC974 상태는 이제 HISTORIC 입니다. 이에 따르면 MTA는 도메인과 관련된 MX 레코드 목록을 쿼리해야하며 모든 (또는 고정 된 수의) SMTP 서버를 선호도 오름차순으로 시도하도록 "권장"합니다. 기본 설정 값이 동일한 MX 레코드가 여러 개인 경우 MTA는 성공할 때까지 모든 SMTP 서버에 메시지를 전달해야합니다. 시도 순서는 MTA의 선택입니다. 즉, RFC는 SMTP 서버를 무작위로 연결해야하는지 DNS 서버가 제공 한 순서로 연결해야하는지 여부를 결정하지 않습니다. 또한 RFC는 여러 A 레코드를 참조하는 MX 레지스터를 처리하는 방법을 규정하지 않습니다.

(...) If the list of MX RRs is not empty, the mailer should try to deliver
the message to the MXs in order (lowest preference value tried
first). The mailer is required to attempt delivery to the lowest
valued MX. Implementors are encouraged to write mailers so that they
try the MXs in order until one of the MXs accepts the message, or all
the MXs have been tried. A somewhat less demanding system, in which
a fixed number of MXs is tried, is also reasonable. Note that
multiple MXs may have the same preference value. In this case, all
MXs at with a given value must be tried before any of a higher value
are tried. In addition, in the special case in which there are
several MXs with the lowest preference value, all of them should be
tried before a message is deemed undeliverable. (...)

RFC1123 상태는 인터넷 표준 입니다. 5.3.4 절은 MX 레코드를 처리하는 방법에 대한 RFC974 절차를 "정의"하는 것을 목표로한다. 이제 MTA는 성공할 때까지 모든 SMTP 서버를 선호도의 오름차순으로 시도해야합니다. 그러나 여전히 시도 횟수에 대한 구성 가능한 제한을 허용합니다. 동일한 기본 설정 값을 가진 여러 MX 레코드가있는 경우 RFC는 MTA가 하나의 레코드를 임의로 선택하도록 권장합니다 (필요하지 않음). 그러나 MX 레코드가 여러 A 레코드 (IPv4 주소)를 참조하는 경우 RFC는 MTA가 DNS 서버가 지정한 순서대로 성공할 때까지 모든 주소에 접속하도록 요구합니다.

(...) When it succeeds, the mapping can result in a list of
alternative delivery addresses rather than a single address,
because of (a) multiple MX records, (b) multihoming, or both.
To provide reliable mail transmission, the sender-SMTP MUST be
able to try (and retry) each of the addresses in this list in
order, until a delivery attempt succeeds. However, there MAY
also be a configurable limit on the number of alternate
addresses that can be tried. In any case, a host SHOULD try at
least two addresses.

The following information is to be used to rank the host
addresses:

(1) Multiple MX Records -- these contain a preference
indication that should be used in sorting. If there are
multiple destinations with the same preference and there
is no clear reason to favor one (e.g., by address
preference), then the sender-SMTP SHOULD pick one at
random to spread the load across multiple mail exchanges
for a specific organization; note that this is a
refinement of the procedure in [DNS:3].

(2) Multihomed host -- The destination host (perhaps taken
from the preferred MX record) may be multihomed, in which
case the domain name resolver will return a list of
alternative IP addresses. It is the responsibility of the
domain name resolver interface (see Section 6.1.3.4 below)
to have ordered this list by decreasing preference, and
SMTP MUST try them in the order presented.

(...)

[DNS:3] "Mail Routing and the Domain System," C. Partridge, RFC-974,
January 1986.

RFC2821 상태는 표준 제안 입니다. 이 RFC는 RFC974를 더 이상 사용하지 않으며 MX 레코드 처리 범위에서 RFC1123과 약간 다릅니다. 전자는 동일한 기본 설정 값을 가진 여러 MX 레코드 중에서 무작위로 SMTP 서버를 선택해야하지만 후자는이를 권장합니다.

(...) Multiple MX records contain a preference indication that MUST be used
in sorting (see below). Lower numbers are more preferred than higher
ones. If there are multiple destinations with the same preference
and there is no clear reason to favor one (e.g., by recognition of an
easily-reached address), then the sender-SMTP MUST randomize them to
spread the load across multiple mail exchangers for a specific
organization.

The destination host (perhaps taken from the preferred MX record) may
be multihomed, in which case the domain name resolver will return a
list of alternative IP addresses. It is the responsibility of the
domain name resolver interface to have ordered this list by
decreasing preference if necessary, and SMTP MUST try them in the
order presented. (...)

RFC5321 상태는 초안 표준 입니다. 이 RFC는 RFC2821을 더 이상 사용하지 않으며 DNS 확인과 관련하여 기본적으로 동일한 서버 조회 절차를 다시 작성하고 IPv6 주소를 참조하는 MX 레코드 처리에 대해 약간 논의하는 새로운 섹션을 제공합니다.

(...) When a domain name associated with an MX RR is looked up and the
associated data field obtained, the data field of that response MUST
contain a domain name. That domain name, when queried, MUST return
at least one address record (e.g., A or AAAA RR) that gives the IP
address of the SMTP server to which the message should be directed.

(...) When the lookup succeeds, the mapping can result in a list of
alternative delivery addresses rather than a single address, because
of multiple MX records, multihoming, or both. To provide reliable
mail transmission, the SMTP client MUST be able to try (and retry)
each of the relevant addresses in this list in order, until a
delivery attempt succeeds.

(...)  MX records contain a preference indication that MUST be used in
sorting if more than one such record appears (see below). Lower
numbers are more preferred than higher ones. If there are multiple
destinations with the same preference and there is no clear reason to
favor one (e.g., by recognition of an easily reached address), then
the sender-SMTP MUST randomize them to spread the load across
multiple mail exchangers for a specific organization.

The destination host (perhaps taken from the preferred MX record) may
be multihomed, in which case the domain name resolver will return a
list of alternative IP addresses. It is the responsibility of the
domain name resolver interface to have ordered this list by
decreasing preference if necessary, and the SMTP sender MUST try them
in the order presented. (...)

최신 메일 전송 에이전트는 최소한 RFC2821 또는 RFC5321 절차를 따르므로 세 가지 DNS 설정 모두 페일 오버 기능을 제공합니다. 그러나 첫 번째 설정 만 더 나은로드 밸런싱을 제공 할 수 있습니다. 두 번째 또는 세 번째 설정을 시도 할 경우 DNS 서버가 임의의 순서로 응답을 제공하는지 확인해야합니다. 또한 DNS 레코드는 MTA 자체 또는 재귀 DNS 서버에 의해 캐시 될 수 있으므로 임의성을 보장 할 수 없습니다. 나는 mail1.example.com대부분의 메시지를받을 것이라고 생각 합니다.

두 번째 및 세 번째 설정에 대해 내 의견을 제시하는 또 다른 이유는 하나의 IP 주소에 여러 이름을 참조하기 때문입니다. 인터넷의 메일 서버는 일반적으로 매핑 IP address => PTR => hostname => A => IP address이 일치하지 않는 호스트 (Postfix 제한 reject_unknown_client_hostname과 동일 )의 메시지를 거부 하므로 PTR 레코드 설정에 특별한주의를 기울여야합니다.

무작위 순서로 MX 레코드를 시도하지 않는 클라이언트는 이미 RFC2821 및 RFC5321 표준을 위반하고 있습니다. 따라서 이러한 클라이언트가 보조 IP 주소를 자동으로 시도한다는 보장은 없습니다. 이 때문에 가장 간단한 DNS 구성을 선호합니다.

example.com.           1200    IN      MX      10 mail1.example.com.
example.com.           1200    IN      MX      10 mail2.example.com.
mail1.example.com.     1200    IN      A       172.16.10.1
mail2.example.com.     1200    IN      A       172.16.10.2

편집 : RFC1123에 대한 참조가 추가되었습니다.


자세한 참조에 감사드립니다. Marki가 아래에 언급 한 것처럼 적절한로드 밸런서가 없으면 너무 많이 기대할 수 있습니다. PTR에 대한 요점도 있습니다. 불일치로 인해 문제가 발생할 수 있으므로주의해야합니다.
Krdan

2

두 번째 설정은 장애 조치를 지원하지 않습니다. mail.example.com 이 172.16.10.1로 해결되어 실패 했다고 가정 해 봅시다 . MX 레코드가 하나만 있으므로 172.16.10.2를 시도하지 않습니다.

세 번째 설정은 첫 번째 설정으로 두 배의 DNS 트래픽을 생성합니다. Fom 트래픽 외에 두 가지 모두 동일한 동작을합니다. 일부 클라이언트는 동일한 우선 순위 MX로 라운드 로빈을 올바르게 수행하지 않습니다.

로드 밸런싱과 장애 조치를 모두 수행하기 위해 다음을 시도합니다.

example.com.           1200    IN      MX      10 mail1.example.com.
example.com.           1200    IN      MX      10 mail2.example.com.
example.com.           1200    IN      MX      20 mail3.example.com.
example.com.           1200    IN      MX      30 mail4.example.com.
mail1.example.com.     1200    IN      A       172.16.10.1
mail2.example.com.     1200    IN      A       172.16.10.2
mail3.example.com.     1200    IN      A       172.16.10.1
mail4.example.com.     1200    IN      A       172.16.10.2
  • 10 개의 MX 레코드 ------> 일종의로드 밸런싱
  • 20, 30 개의 MX 레코드-> 장애 조치

1

제 생각에는 첫 번째 설정이 올바른 것입니다. 그 이유는 다음과 같습니다.

  1. 로드 밸런싱에 적합한 우선 순위가 동일한 2 개의 MX 레코드가 있습니다. RFC5321에 따르면 SMTP 서버는 우선 순위가 동일한 모든 서버에 대해 임의로 부하를 분산시켜야합니다

  2. 언급했듯이 라운드 로빈 A 레코드는 올바르게 장애 조치되지 않습니다. 이것을 multihomed-A 레코드라고하며, 발신자는 DNS 응답의 첫 번째 A 항목으로 메일을 보내고 DNS 서버는 목록 반환 순서를 결정합니다. 따라서로드 분배 또는 장애 복구가 필요한 경우 DNS 서버가이를 수행 할 수 있어야합니다 (히스 및로드 모니터). RFC를 기반으로 모든 발신자는 먼저 MX 레코드에서 우선 순위가 동일한 모든 서버를 시도해야하므로 두 개의 MX 레코드로 장애 조치를 수행 할 수 있습니다.

참조 : https://tools.ietf.org/html/rfc5321 페이지 69


0

장애 조치의 경우 다음을 수행하십시오.

example.com.           1200    IN      MX      10 mail1.example.com.
example.com.           1200    IN      MX      20 mail2.example.com.
mail1.example.com.     1200    IN      A       172.16.10.1
mail2.example.com.     1200    IN      A       172.16.10.2

MTA는 먼저 mail1을 시도한 다음 mail2를 시도합니다.

로드 밸런싱과 페일 오버를 결합하는 것은 실제로 불가능하지 않습니다. 당신은 할 수 있습니다 :

example.com.           1200    IN      MX      10 mail1.example.com.
example.com.           1200    IN      MX      20 mail2.example.com.
mail1.example.com.     1200    IN      A       172.16.10.1
mail1.example.com.     1200    IN      A       172.16.10.2    
mail2.example.com.     1200    IN      A       172.16.10.1
mail2.example.com.     1200    IN      A       172.16.10.2

MTA는 먼저 mail1을 시도합니다. 절반은 .1, 다른 시간은 .2입니다. 여기서 문제는 mail1에 도달 할 수없는 시나리오에서 mail2가 mail1과 동일한 주소를 가리킬 수 있다는 것입니다.

그래서 당신도 시도 할 수 있습니다

example.com.           1200    IN      MX      10 mail1.example.com.
example.com.           1200    IN      MX      10 mail2.example.com.
example.com.           1200    IN      MX      20 mail2.example.com.
example.com.           1200    IN      MX      20 mail1.example.com.
mail1.example.com.     1200    IN      A       172.16.10.1
mail1.example.com.     1200    IN      A       172.16.10.2    
mail2.example.com.     1200    IN      A       172.16.10.1
mail2.example.com.     1200    IN      A       172.16.10.2

초기 연결이 작동하지 않을 위험을 줄입니다. 여전히 위험은 0이 아닙니다. 그러나 MTA는 나중에 연결을 다시 시도합니다.

미션 크리티컬 한로드 밸런싱 및 페일 오버를 효과적으로 수행하려면로드 밸런서 (클러스터)를 얻거나 구성하십시오.


나는 Marki에 전적으로 동의하지 않습니다. 여전히 동일한 우선 순위로 MX 레코드로 장애 조치 및로드 밸런싱을 수행 할 수 있습니다. 나는 프로덕션 환경에서 그것을 사용하고, 잘 작동
헬라어.

OP는 동일한 prio MX가로드 밸런싱을 위해 작동 할 것이라는 의문을 가지고 있다고 밝혔다. 이 경우로드 밸런서를 구입해야합니다. :)
Marki

-1

그것은 당신이 가진 메일 서버에 달려 있습니다. 우리는 reddoxx라는 메일 서버를 가지고 있습니다. 첫 번째 mx 레코드 만 사용합니다. (동일한 우선 순위) 첫 번째 mx로부터 응답이없는 경우에만 두 번째 mx에 연결됩니다. 우리의 메일 서버는 RFC5321을 무시합니다.


1
그렇다면 OP와 같은 이름의 두 개의 A 레코드로 무엇을 할 수 있습니까?
병아리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.