Запись MX

За́пись MX (от англ. mail exchanger) — тип DNS-записи, предназначенный для маршрутизации электронной почты с использованием протокола SMTP.

Описание

В каждой MX-записи для конкретного доменного имени (например: @wikipedia.org) хранятся два поля:

  • имя почтового сервера, обслуживающего домен (например: mx1001.wikimedia.org). По данному имени с помощью A-записи будет определяться IP-адрес, поэтому A-запись должна также существовать (недопустимо вместо A использовать CNAME, так как в этом случае возможно зацикливание, подробнее описано в разделе «Особенности»);
  • порядковый номер предпочтения этого сервера (например: 10) — используется в случаях, когда доменное имя обслуживается несколькими почтовыми серверами.

Чтобы отправить электронную почту, сервер-отправитель запрашивает у DNS-сервера MX-запись домена получателя электронного сообщения (то есть части адреса после символа «@»). В результате запроса возвращается список имён хостов почтовых серверов, принимающих входящую почту для данного домена, и номеров предпочтения для каждого из них. Сервер-отправитель затем пытается установить SMTP-соединение с одним из этих хостов, выбирая имена по порядку, начиная с наименьшего номера предпочтения, и перебирая их до тех пор, пока не удастся установить соединение. Если имеется несколько хостов с одинаковым предпочтением, то должны быть предприняты попытки установить соединение с каждым из них.

Если ни с одним сервером не удалось установить соединение, сервер-отправитель будет продолжать попытки в течение некоторого времени (в зависимости от настроек, обычно от нескольких часов до двух недель), после чего сформирует и отправит отправителю письма отчёт об ошибке.

Механизм записей MX предоставляет возможность использовать множество серверов для одного домена и упорядочивания их использования в целях уменьшения нагрузки и увеличения вероятности успешной доставки почты. Кроме того, такой механизм предоставляет возможность распределить обработку входящей почты среди нескольких физических серверов.

Особенности обработки MX при маршрутизации почты

Для одного домена может быть указано несколько почтовых серверов с разным предпочтением. Если по каким-то причинам почта доставляется не на конечный узел, а на транзитный (с малым предпочтением и, соответственно, большим числом в MX-записи), этот транзитный узел при дальнейшей маршрутизации (релеинге) должен игнорировать свою собственную MX-запись и MX-записи серверов, менее предпочтительных, чем он сам. Для правильного исключения самого себя из списка адресов для доставки почты, в MX-записях не должны указываться канонические имена (псевдонимы CNAME). В случае некорректной настройки возможны циклы, когда сервер пытается доставить почту самому себе.

Примеры запроса MX-записи

С помощью утилиты host в UNIX-подобных ОС

С помощью утилиты host в ОС GNU/Linux, FreeBSD и т. п. запросим запись MX для домена wikipedia.org.

 $ host -t mx wikipedia.org.
 wikipedia.org mail is handled by 50 lists.wikimedia.org.
 wikipedia.org mail is handled by 10 mchenry.wikimedia.org.

Здесь список почтовых серверов, обслуживающих почту домена, представлен двумя хостами: lists.wikimedia.org и mchenry.wikimedia.org. MX-приоритеты у них 50 и 10 соответственно. Таким образом, при попытке доставить почту адресату в домене wikipedia.org первым будет выбран сервер mchenry.wikimedia.org.

С помощью утилиты nslookup

С помощью утилиты nslookup в ОС семейства Microsoft Windows запросим запись MX для домена wikipedia.org.

 C:\>nslookup -type=mx wikipedia.org ns2.wikimedia.org
 Server:  ns2.wikimedia.org
 Address:  91.198.174.4
 
 wikipedia.org   MX preference = 50, mail exchanger = lists.wikimedia.org
 wikipedia.org   MX preference = 10, mail exchanger = mchenry.wikimedia.org
 lists.wikimedia.org     internet address = 91.198.174.5
 mchenry.wikimedia.org   internet address = 208.80.152.186

Примечание: примерно так же работает nslookup в UNIX.

См. также

  • DNS — система доменных имён;
  • SMTP — широко используемый протокол передачи почты.