Подтвердить что ты не робот

Слишком много запросов DNS в записи SPF

Мой сайт должен отправлять электронные письма службам Google Apps, SendGrid и MailChimp. Google Apps используется для приема и чтения входящей почты в моем домене.

Мне нужно установить запись SPF для моего домена. Следующие синтаксически корректны (не уверены в токенах A и MX):

"v = spf1 a mx include: _spf.google.com включают: servers.mcsv.netвключают: sendgrid.net ~ all"

Но если я тестирую его с помощью http://www.kitterman.com/getspf2.py, я получаю

Постоянная ошибка PermError SPF: слишком много запросов DNS

Аналогичная проблема как http://www.onlineaspect.com/2009/03/20/too-many-dns-lookups-in-an-spf-record/

Как я могу оптимизировать/перезаписать мою запись SPF?

4b9b3361

Ответ 1

Итак, мне никогда не приходилось делать это раньше, но на основе статьи, которую вы отправили, это то, что я придумал.

Мы начали с:

v=spf1 a mx include:_spf.google.com include:servers.mcsv.net include:sendgrid.net ~all

Мы получаем 10 общих запросов, прежде чем выбросить ошибку Too many DNS lookups:

  2 (Initial TXT & SPF Lookups)
  2 (a & mx Lookups)
  1 (_spf.google.com)
  1 (servers.mcsv.net)
 +1 (sendgrid.net)
 -----------------
  7 Lookups

Таким образом, даже после включения записей SPF у нас есть 7 запросов.


Теперь давайте погрузим уровень глубже.

1. _spf.google.com

Запись SPF в google оценивается как:

v=spf1 include:_netblocks.google.com include:_netblocks6.google.com ?all

Каждый из них разрешает следующие значения:

# _netblocks.google.com
v=spf1 ip4:216.239.32.0/19 ip4:64.233.160.0/19 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:209.85.128.0/17 ip4:66.102.0.0/20 ip4:74.125.0.0/16 ip4:64.18.0.0/20 ip4:207.126.144.0/20 ip4:173.194.0.0/16 ?all

# _netblocks6.google.com
v=spf1 ip6:2607:f8b0:4000::/36 ip6:2a00:1450:4000::/36 ?all

Итак, google дает нам еще два поисковых запроса, в результате чего общее количество 9 Lookups.

2. servers.mcsv.net

Mailchimp немного довольный, потому что он добавляет целых 3 дополнительных поиска:

v=spf1 include:spf1.mcsv.net include:spf2.mcsv.net include:spf.mandrillapp.com ?all

Я бы предположил, что в зависимости от того, что вы отправляете через Mailchimp, вы можете удалить одну или две из этих записей (но вы должны сами оценить это).

В любом случае, они разрешают следующее:

# spf1.mcsv.net
v=spf1 ip4:207.97.237.194/31 ip4:207.97.238.88/29 ip4:207.97.240.168/29 ip4:69.20.10.80/29 ip4:69.20.41.72/27 ip4:74.205.22.1/27 ip4:69.20.90.0/26 ?all

# spf2.mcsv.net
v=spf1 ip4:204.232.163.0/24 ip4:72.26.195.64/27 ip4:74.63.47.96/27 ip4:173.231.138.192/27 ip4:173.231.139.0/24 ip4:173.231.176.0/20 ip4:205.201.128.0/24 ?all

# spf.mandrillapp.com
v=spf1 ip4:205.201.136.0/24 ip4:205.201.137.0/24 ?all

Это приводит нас к общей сложности 12 Lookups (что уже два над лимитом).

2. sendgrid.net

SendGrid заканчивается как наименьшее количество дополнительных запросов для нас.

v=spf1 ip4:208.115.214.0/24 ip4:74.63.202.0/24 ip4:75.126.200.128/27 ip4:75.126.253.0/24 ip4:67.228.50.32/27 ip4:174.36.80.208/28 ip4:174.36.92.96/27 ip4:69.162.98.0/24 ip4:74.63.194.0/24 ip4:74.63.234.0/24 ip4:74.63.235.0/24 include:sendgrid.biz ~all

Итак, единственный дополнительный поиск здесь sendgrid.biz, который оценивается как:

v=spf1 ip4:208.115.235.0/24 ip4:74.63.231.0/24 ip4:74.63.247.0/24 ip4:74.63.236.0/24 ip4:208.115.239.0/24 ip4:173.193.132.0/24 ip4:173.193.133.0/24 ip4:208.117.48.0/20 ip4:50.31.32.0/19 ip4:198.37.144.0/20 ~all

Это приносит наш общий итог до 14 поисков.


Итак, наша общая сумма 14 Lookups. Нам нужно довести это до 10. Я изложил несколько вариантов ниже, вам может потребоваться использовать более 1 из них, чтобы их убрать.

  • Непосредственно включите некоторые перенаправленные spf-записи. Теперь, когда мы знаем, к каким серверам перенаправляются записи SPF, вы можете вырезать посредника и включить их напрямую. Примечание. Если какая-либо из служб в конечном итоге изменит свои записи SPF, вам придется пройти процесс обновления вручную вручную.

  • Удалите некоторые из служб, которые вы используете. Не уверен, что ваш вариант использования заключается в том, чтобы иметь все эти службы, но там определенно есть несколько совпадений, которые вы могли бы использовать. Например, SendGrid поддерживает (1) транзакционную исходящую почту, (2) рассылку новостей/маркетинговые сообщения и (3) входящую почту. Таким образом, может быть некоторая сокращаемая избыточность.

  • Удалите запись MX, если она избыточна. В зависимости от вашей установки поиск MX может быть избыточным.

Надеюсь, это поможет!

Ответ 2

Быстрый ответ отличный.

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

например. если домен example.com, приложения google отправляются с адресов, таких как [email protected]. Тогда может быть запись SPF для gapps.example.com, которая включает _spf.google.com, а _spf.google.com может быть удалена из основной записи example.com SPF, что уменьшает поиск на 3.

Ответ 3

Посмотрите SPF-tools *, которые помогают с повторной сборкой записи SPF из исходной, которая использует включает в статическую, содержащую просто ip4 и ip6. Он может быть легко связан с локальным DNS-сервером или размещенной службой DNS с использованием их API, чтобы поддерживать все в синхронизации с восходящим потоком.

* Я являюсь автором (теперь вместе с другими участниками) и является открытым исходным кодом под лицензией Apache 2.0.

Ответ 4

Мы исследовали выравнивание записей SPF в IP-адресах, а также создание поддоменов. Все они казались большой работой. Мы нашли сервис от spfproxy.org, который буквально занимает пару минут для настройки. Они в основном маскируют DNS-запросы позади них, используя макросы SPF. Не уверен, почему другие компании этого не предлагают.

Ответ 5

Несколько лет назад я написал hydrate-spf, инструмент, который ищет, включает и объединяет результат в одну гигантскую запись. Как упоминалось в README, этот подход не идеален - он удаляет возможности ваших включенных доменов обновлять свои записи. Однако, когда вы сталкиваетесь с допустимым пределом, он будет решать ближайшую проблему и может сохраняться в некоторой степени поддерживаемым посредством регулярных обновлений.

Ответ 6

Предел поиска 10 является пределом поиска DNS. Сглаживание записи SPF включает меньше DNS-запросов и их замену для IP-адресов (выравнивание) - это способ обойти предел.

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

Идеальное решение заключается в использовании службы SPF flattening. Это бесплатно для небольших объемов или дешево для более 500 писем/месяц. Он регулярно проверяет записи SPF, которые вы хотите включить для обновленных IP-адресов.

Fraudmarc.com

Раскрытие информации: я не связан с этой компанией, и это не реферальная ссылка