Несколько MX-записей и немного про SPF

Запись MX

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

В каждой MX-записи домена есть два поля:

  • Имя почтового сервера, обслуживающего домен (mail.ITsberg.ru). По данному имени с помощью A-записи определяется IP-адрес. Должна существовать соответствующая A-запись, использовать CNAME-запись недопустимо, т.к. возможно зацикливание.
  • Приоритет этого сервера (порядковый номер, например 10) — он важен если домен обслуживают несколько почтовых серверов.

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

Механизм MX-записей позволяет распределить нагрузку между несколькими серверами, обслуживающими домен и увеличить вероятность доставки путём создания нескольких MX-записей.

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

MX запись создать крайне просто. У нас есть A-запись, указывающая на почтовый сервер, и мы просто создаём запись типа «MX», указывающую на A-запись этого сервера.

В случае, если в компании используется два провайдера, а почтовый сервер один — увеличить надёжность отправки/получения электронной почты просто: создаём вторую A-запись на резервный IP-адрес, пробрасываем с этого адреса 25 порт на наш почтовый сервер и создаём MX-запись с меньшим приоритетом на эту вторую A-запись.

mail.itsberg.ru.    3600    IN    A    xxx.xxx.123.114
mail2.itsberg.ru.    3600    IN    A    yyy.yyy.1.25     
itsberg.ru.    3600    IN    MX    10    mail.itsberg.ru.
itsberg.ru.    3600    IN    MX    20    mail2.itsberg.ru.

Пример: есть у нас почтовый сервер, который известен как mail.ITSberg.ru по IP-адресу xxx.xxx123.114.
Создаём A-запись mail2.ITSberg.ru с адресом yyy.yyy.1.25.
Далее, на своём маршрутизаторе пробрасываем 25 порт с адреса yyy.yyy.1.25 на тот же внутренний адрес, куда у нас проброшен порт с адреса xxx.xxx.123.114 и создаём вторую MX-запись с приоритетом 20.

В такой конфигурации внешний SMTP-сервер при определении адреса, куда слать письмо, запрашивает в нашем DNS MX запись, берёт первой запись с меньшим весом и, если сервер по этой MX-записи не доступен, переходит к MX записи с большим весом.

Так же рекомендуется заранее написать письмо в службу поддержки провайдера с просьбой настроить PTR запись на IP-адрес резервной MX записи. Системы антиспама любят, когда reverse lookup возвращает правильное имя.

Теперь необходимо объяснить системам антиспама что нашему второму адресу можно доверять.  Прежде всего необходимо проверить spf-запись в DNS и, при необходимости, поправить её.

SPF (Sender Policy Framework)

Это специальным образом сформированная TXT-запись в DNS, указывающая список серверов, с которых позволяется отправлять почтовые сообщения с обратными адресами в этом домене. SPF определён в RFC 7208.

Протокол отправки электронной почты SMTP позволяет в качестве отправителя указывать любой почтовый ящик. Таким образом можно послать письмо, подставив в поле «From» вымышленное значение. Процесс такого почтового обмана называется Спуфинг (e-mail spoofing) и чтобы бороться с этим явлением, был разработан и введен в действие стандарт SPF.

Настройка SPF довольно проста. Рассмотрим типичные примеры записи:

ITSberg.ru. IN TXT «v=spf1 +mx ip4:xxx.xxx.xxx.xxx -all»

ITSberg.ru. IN TXT «v=spf1 a mx ~all»

  • «v=spf1» — используемая версия SPF.
  • «+» — принимать корреспонденцию (Pass). Этот параметр установлен по умолчанию. То есть, если никаких параметров не установлено, то это «Pass». Символ «+» может быть опущен;
  • «-» — Отклонить (Fail);
  • «~» — «мягкое» отклонение (SoftFail). Письмо будет принято, но будет помечено как СПАМ;
  • «?» — нейтральное отношение;
  • «mx» — включает в себя все адреса серверов, указанные в MX-записях домена;
  • «ip4» — опция позволяет указать конкретный IP-адрес или сеть адресов;
  • «a» — указываем поведение в случае получения письма от конкретного домена;
  • «include» — включает в себя хосты, разрешенные SPF-записью указанного домена;
  • «all» — все остальные сервера, не перечисленные в SPF-записи.

Itsberg.ru. IN TXT «v=spf1 a mx -all»

Итак, что же значит эта запись:

  • «a» — разрешает приём почты от узла, IP адрес которого совпадает с IP-адресом в А-записи для ITSberg.ru;
  • «mx» — разрешает приём писем от хоста, указанного в MX-записи для ITSberg.ru;
  • «~all» — все сообщения, не прошедшие верификацию, следует отвергать.

Ещё один пример, сложнее:

Itsberg.ru. IN TXT «v=spf1 mx ip4:xxx.xxx.xxx.xxx +a:mail.ITSberg.ru include:yandex.ru ~all»

  • «mx» — принимать почту от серверов, указанных в mx-записях домена;
  • «ip:xxx.xxx.xxx.xxx» — принимать почту, отправленную с ip-адреса xxx.xxx.xxx.xxx;
  • «+a:mail.ITSberg.ru» — принимать почту, отправленную с mail.ITSberg.ru;
  • «include:yandex.ru» — принимать почту с серверов, разрешённых sfp-записями yandex.ru;
  • «~all» — принимать письма со всех остальных серверов. Но предварительно помечать как спам.

Больше экзотики. В описании возможных опций указывалось, что возможно указание сетей ip-адресов для «a» и «mx» записей. Рассмотрим следующий пример:

ITSberg.ru. IN TXT «v=spf1 mx/24 a:ITSberg.ru/24 -all»

  • «mx/24» — в список разрешенных отправителей входят все IP-адреса, находящихся в тех же сетях класса С, что и MX домена;
  • «a:ITSberg.ru/24» — в список разрешенных отправителей входят все IP-адреса, находящихся в тех же сетях класса С, что и А-записи домена ITSberg.ru;
  • «-all» — от всех остальных отправителей блокируем.

Ещё больше экзотики в RFC 7208.

Добавить комментарий