Почему для почтового сервера нельзя использовать только A-запись, а нужна MX-запись?

«Почему для почтового сервера нельзя использовать только A-запись, а нужна MX-запись?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Протокол SMTP для маршрутизации почты между серверами (Mail Transfer Agent, MTA) строго полагается на MX-записи в DNS. Использование только A-записи для домена сделает его неспособным получать почту извне.

Технические причины:

  • Стандарт протокола: RFC 5321 (SMTP) и RFC 974 (Mail Routing) определяют, что отправляющий MTA обязан искать MX-записи для домена-получателя. Если MX-запись не найдена, отправитель может отступить к A-записи, но это поведение не гарантировано и считается устаревшим.
  • Приоритет и отказоустойчивость: MX-запись содержит поле приоритета (preference). Это позволяет настроить первичный и резервный почтовые серверы. При недоступности сервера с более высоким приоритетом (меньшим числом) почта будет отправлена на следующий.
  • Разделение сервисов: MX-запись может указывать на хост, отличный от основного веб-сервера (например, mail.example.com), что позволяет разделить инфраструктуру и безопасность.

Пример корректной DNS-зоны для домена example.com:

example.com.      IN  A       203.0.113.10          ; IP основного веб-сервера
example.com.      IN  MX  10  mail1.example.com.    ; Первичный почтовый сервер (приоритет 10)
example.com.      IN  MX  20  mail2.example.com.    ; Резервный почтовый сервер (приоритет 20)
mail1.example.com. IN A       203.0.113.20
mail2.example.com. IN A       203.0.113.21

Проверка с точки зрения DevOps:

# Проверяем MX-записи для домена
$ dig example.com MX +short
10 mail1.example.com.
20 mail2.example.com.

# Проверяем, могут ли внешние серверы найти наш почтовый сервер
$ host -t mx example.com