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

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

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

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

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

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

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

Отправив почту с почтового клиента, вы получите свое письмо обратно.

Если же она отправлялась функцией sendmail mailutils msmtp, то оно честно вернется к серверу и удачно там умрет.

Пример SPF-данных в TXT-записи DNS:

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

При создании веб сервера в последнюю очередь думаешь о TXT записях в доменном имени сервера и самих доменов на вашем сервере, а зря. Уделить им особое внимание требуется.

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

Даже делегировав почту на яндекс, у вас будут проблемы с ней.

Все дело в тонкости, которую яндекс не описывает в своих мануалах.

Дело в том, что отправленные письма вашим сервером теперь знают только об IP адресах серверов яндекс, но забывает про свои IP и все работает хорошо до момента, когда ваш сервер отправляет почту, используя PHP который отправляет почту локально, а данного айпи в записях SPF у яндекса естественно нет!

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

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

А вот ваш сервер отправляющий почту от вашего имени, как правило, это формы обратной связи и т. д. Так же честно отправляет почту, клиент, получив ее, запрашивает SPF и, вуаля, попадает опять на яндекс. Логично было бы указать в таком случае все ваши айпи в SPF и яндекса в придачу, но сколько у него их? Следовательно, нужно сделать нечто среднее. Указать все местные айпи, и добавить все те айпи, которые есть у spf.yandex.ru. В таком случае почта будет уходить как и от яндекс, и их айпи убавлять и добавлять будут они сами, так и наши айпи попадут в зону доверия.

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

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

Если Вы хотите отправлять письма не только с серверов Яндекса, Вам необходимо изменить значение 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 записей

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