Назад | Перейти на главную страницу

Ошибка записи SPF - Как проверить IP-адрес сервера и управлять несколькими записями SPF

Я пытаюсь проверить почту, отправленную нашим сервером. При наших текущих настройках DNS при отправке почты с нашего сервера отображается SPF нейтральный ответ.

Я попытался добавить комбинацию IP-адреса моего сервера и домена.

v=spf1 a mx ipv4:XXX.XX.XXX.XX -all
v=spf1 include:mydomain.com -all

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

v=spf1 a mx include:mydomain.com ipv4:XXX.XX.XXX.XX include:cmail1.com include:mail.zendesk.com -all

Я снова протестировал отправку почты и теперь получил SPF Fail ответ.

Я много искал в Интернете и не вижу, как исправить свои записи DNS, чтобы получить PASS для записей SPF. Я не знаю, нужны ли мне дополнительные CNAME, A, MX, или мне что-то совсем не хватает.

Я использую сервер Plesk с фиксированным адресом IPv4 и использую CloudFlare для управления своими DNS и серверами имен.

Вот как выглядит полный отказ:

SPF:    FAIL with IP XXX.XX.XXX.XX
spf=fail (google.com: domain of accounts@mydomain.com does not designate XXX.XX.XXX.XX as permitted sender) smtp.mailfrom=accounts@mydomain.com
Received-SPF: fail (google.com: domain of accounts@mydomain.com does not designate XXX.XX.XXX.XX as permitted sender) client-ip=XXX.XX.XXX.XX;
spf=fail (google.com: domain of accounts@mydomain.com does not designate XXX.XX.XXX.XX as permitted sender) smtp.mailfrom=accounts@mydomain.com

ФИКСИРОВАННЫЙ. Я просто постоянно разговаривал со своим провайдером, и мы не могли понять, почему он не работает.

Быть осторожен! Я скопировал свой код с сайта, который сказал, что использовать ipv4, он должен быть ip4! (нет v)

Исправляя единственную синтаксическую ошибку (ipv4 вместо того ip4) похоже устранил вашу проблему, но это не единственная проблема с вашей записью SPF. Вот почему всегда полезно прочитать официальную документацию, чтобы понять проблему.

  • Первый, который вы выяснили уже в своем вопросе методом проб и ошибок, но RFC 7208 3.2 источник, который ясно говорит об этом: вы должны объединить свои правила SPF для одного имени хоста как одного TXT запись.

    Доменное имя НЕ ДОЛЖНО иметь несколько записей, из-за которых при проверке авторизации выбирается более одной записи.

  • Вы должны понимать, что include механизм на самом деле: указанный домен ищется совпадение, т.е. ищет другие правила SPF. Ваш include:mydomain.com предлагает вам попробовать использовать это как a механизм. Если это в mydomain.com. TXT, это ссылка, которая пытается включить себя!

    Вам также следует пересмотреть все остальные includes и убедитесь, что у них действительно есть запись SPF. Вам следует только include существующие записи.

    Предупреждение: Если в домене нет действующей записи SPF, результатом будет постоянная ошибка. Некоторые получатели почты отклонят запрос на PermError.

  • Если ваш a или mx разрешается к тому же IP-адресу, что и ip4 они не нужны и должны быть удалены. Список серверов только один раз.

    В конечном итоге поиск SPF разрешается по IP-адресу.

    Если IP-адрес сервера меняется редко, рассмотрите возможность использования ip4:x.x.x.x (или ip6), чтобы получатели могли полностью избежать поиска в DNS. Поскольку существует ограничение в 10 запросов DNS на одну запись SPF, указание IP-адреса или диапазона адресов предпочтительнее для длинных списков серверов исходящей почты.

    Часто запись SPF может быть сокращена до чего-то вроде v=spf1 ip4:x.x.x.x -all если есть только один сервер исходящей почты.

Чтение связанных статей о синтаксисе SPF и распространенных ошибках - действительно хороший обзор всей темы. Связанный RFC добавляет все технические детали, если вам также интересно, как это работает.