Правильная почтовая SPF запись

Настройка правильной SPF записи

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

Сначала я думал, что это частный случай, но через месяц понял, что случай далеко не редкий.

Итак, что же не так в записи? Давайте попробуем разобраться.

Собираем техническую информацию

Запрашиваем текущию MX запись для домена:

host -t MX example.com

Для примера я буду разбирать случай с яндексом:

example.com mail is handled by 10 mx.yandex.ru.

Почта домена припаркована к яндексу. А что говорит SPF запись?

host -t TXT example.com
example.com descriptive text «v=spf1 a mx include:_spf.hosting.reg.ru ~all»

В заголовках почтового сообщения смотрим с какого почтового сервера пришло письмо:

client-ip=37.140.190.203; helo=forward501o.mail.yandex.net;

PTR запись, да и сам адрес принадлежит яндексу. Проверяем MX запись:

host -t A mx.yandex.net.
mx.yandex.net has address 77.88.21.249

И теперь вспоминаем. MX запись — это сервер который принимает почтовые сообщения, а не сервер который эти сообщения должен отправлять!

У вас, скорее всего, 1 сервер принимает и отправляет сообщения, поэтому вы указываете MX в SPF записи. Но в случае с крупными почтовыми сервисами, список этих адресов может заметно отличаться, и динамически меняться.

Правильная запись

Вы можете не удалять старые SPF записи. Достаточно приписать новые сервера отправки. Для разных почтовых сервисов они могут быть разными.

Для mail.ru

include:_spf.mail.ru

Для google

include:_spf.google.com

Для яндекса

include:_spf.yandex.net

И результирующей SPF записью, для моего примера, должна быть:

host -t TXT example.com
example.com descriptive text «v=spf1 a include:_spf.hosting.reg.ru include:_spf.yandex.net ~all»

Тем самым вы разрешите отправку писем с почтовых серверов рег.ру  и яндекса, а так же со всех А записей домена.