Собственный хостинг: SPF записи тонкости при изменение MX записей

Тонкости правильной настройки SPF записей на собственном сервере при делегировании MX записей на сторонний сервер.

Изменение MX записей

SPF Запись в DNS владельца домена тип TXT.

Вот исправленный и актуализированный вариант текста с учётом современных реалий SPF, а также заменой redirect на include и рекомендацией использовать -all:


SPF-запись в DNS владельца домена (тип TXT)

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

Суть проста: почтовый сервер получателя проверяет, разрешено ли IP-адресу отправителя отправлять письма от имени указанного домена, сверяя его с SPF-записью. Если адрес разрешён — письмо считается легитимным. Если нет — оно может быть помечено как спам или вовсе отклонено.

Например, если письмо отправляется с локального почтового клиента, вы можете получить его обратно с ошибкой. Если отправка осуществляется через sendmail, mailutils, msmtp или PHP-скрипт, оно "погибает" на сервере, не доходя до адресата — особенно если его IP не включён в SPF.

Примеры SPF-записей в DNS (TXT-записи):

v=spf1 ip4:188.138.84.111 ip4:188.138.85.107 a mx -all

v=spf1 ip4:111.111.111.111 ip4:222.222.222.222 a mx -all

Если вы используете почтовый сервис Яндекса, раньше рекомендовалось следующее:

v=spf1 redirect=_spf.yandex.ru

Однако использовать redirect не рекомендуется, так как оно полностью заменяет вашу SPF-запись и не позволяет добавить другие серверы, кроме яндексовских. Вместо этого следует применять include, чтобы можно было дополнительно указать свои собственные IP:

v=spf1 ip4:ВАШ_IP1 ip4:ВАШ_IP2 include:_spf.yandex.ru -all

Такой подход позволяет вашему серверу (например, при отправке с формы обратной связи или CMS) и Яндексу одновременно быть доверенными источниками почты.

При настройке веб-сервера часто забывают о необходимости корректной настройки TXT-записей, а зря: без SPF письма будут блокироваться или попадать в спам. Но и наличие SPF-записи — ещё не гарантия, если она настроена неправильно.

Даже если вы делегировали почту на Яндекс, вы можете столкнуться с проблемами: когда письма отправляются напрямую с вашего сервера (через PHP, cron, системные уведомления и т.д.), они будут отклонены, поскольку IP-адрес сервера отсутствует в SPF-записи _spf.yandex.ru.

Решение — добавить все IP-адреса, с которых может идти отправка, вручную в основную SPF-запись, и включить Яндекс через include. Например:

v=spf1 ip4:203.0.113.10 ip4:203.0.113.11 include:_spf.yandex.ru mx -all


Изменение MX записей

Как мы видим из рисунка, отправив почту с яндекса, все действительно работает, почта, приходя к клиенту, отдает SPF яндекса и его айпи действительно совпадают.

Вот ответ яндекса на мой вопрос о возможности наличия вышеуказанной коллизии.

Здравствуйте, Виктор

Если Вы хотите отправлять письма не только с серверов Яндекса, Вам необходимо изменить значение SPF-записи. Вместо «v=spf1 redirect=_spf.yandex.ru» необходимо указать следующее значение: «v=spf1 ip4:IP-1 ip4:IP-2 ip4:IP-3 include: _spf.yandex.ru ~all», где IP-1, IP-2, IP-3 — адреса тех серверов, с которых дополнительно отправляются письма. В ином случае (если не указать таким образом серверы), доставка письма будет успешной только в том случае, если сервер получателя не проверяет SPF-запись.

Если проверяет — письмо будет возвращено с ошибкой. Это если рассматривать схему работы в упрощенном виде, в действительности алгоритмы несколько сложнее, и при отправке играют роль и другие факторы.

От себя добавлю только дополнительно +mx на всякий случай.

Получилось так:

Изменение MX записей


Оставить комментарий