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

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

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

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

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

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

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

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


person Robert    schedule 10.01.2013    source источник
comment
Предложение по улучшению: ссылка на инструмент SPF Query, размещенный на kitterman, должна иметь следующий вид: kitterman.com/spf /validate.html   -  person phpenthusiast    schedule 14.03.2019


Ответы (7)


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

Мы начали с:

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

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

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 дает нам еще 2 поиска, в результате чего общее количество запросов составляет 9 запросов.

2. server.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 запросов (что на два уже превышает лимит).

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 запросов. Нам нужно уменьшить это число до 10. Я выделил несколько вариантов ниже, вам может потребоваться использовать более одного из них, чтобы их уменьшить.

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

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

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

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

person Swift    schedule 10.01.2013
comment
По поводу варианта 3: я не разбираюсь в записях MX. Поскольку я использую только Google Apps для получения электронной почты, могу ли я настроить SPF на получение MX только от Google, а не SendGrid и MailChimp? - person Robert; 10.01.2013
comment
Это работает, например, но не включает MX (поэтому я думаю, что мне нужен MX для Google) v = spf1 a include: _spf.google.com include: servers.mcsv.net include: sendgrid.net ~ all - person Robert; 10.01.2013
comment
Я, честно говоря, не знаю, требуется ли MX для Google. Для получения подробной информации обратитесь к их документации. Я знаю, что вам нужна отдельная запись MX для входящих из SendGrid (не уверен, зачем она вам нужна в поиске SPF) - person Swift; 10.01.2013
comment
В SPF запись MX означает доверять тому хосту, который назначен MX для вашего домена. Если у вас нет отдельной записи MX для вашего домена или она уже охвачена другими имеющимися у вас правилами SPF, вам не нужно ее включать. С другой стороны, если у вас есть назначенный MX для вашего домена, который обрабатывает исходящую почту, не разрешать ему отправлять почту будет казаться ... контрпродуктивным. - person tripleee; 15.01.2013
comment
Для всех, кто ищет, здесь - это соответствующий раздел RFC, ограничивающий поиск MX до 10. - person Xiong Chiamiov; 11.04.2014
comment
Соответствующий раздел RFC для поиска DNS в целом - 10.1. Ограничения на обработку - person cherdt; 03.11.2014
comment
Для всех, кто читает это сейчас, обратите внимание, что RFC 4408 теперь устарел. Текущий RFC - 7208, и ограничения обработки можно найти здесь: tools.ietf. org / html / rfc7208 # section-4.6.4 - person Steve365; 17.02.2016
comment
Также обратите внимание, что приведенный выше пример немного неверен, начальные поиски TXT и SPF не включены в ограничение в 10 поисков (по крайней мере, так я интерпретирую RFC ...!) - person Steve365; 17.02.2016
comment
include= считаются поисками? Если для них не указан какой-либо spf.example.com поддомен, они могут искать множество записей TXT. - person Martijn; 16.08.2017
comment
Привет, @Swift, откуда вы знаете, что дополнительные поиски? Я имею в виду, откуда вы знаете, что _spf.google.com оценивает также _netblocks.google.com include: _netblocks6.google.com, а те разрешают IP-адреса, которые вы упоминаете? Спасибо большое - person Jose Gallo; 22.04.2019

Ответ Свифта отличный.

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

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

person mc0e    schedule 22.12.2015

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

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

person Ján Sáreník    schedule 19.04.2015

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

person AngularNerd    schedule 04.08.2016
comment
Похоже, spfproxy.org больше не обслуживается. - person alexcline; 31.01.2017

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

person Xiong Chiamiov    schedule 12.08.2016
comment
С этим нужно быть осторожнее. Технически запись SPF длиной более 255 символов также недопустима. - person Mike; 01.03.2017
comment
Действительно кажется, что нам нужна современная замена SPF, которая учитывает все эти ограничения, которые в то время казались разумными, но в настоящее время мы сталкиваемся с ними регулярно. - person Xiong Chiamiov; 27.03.2017

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

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

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

Fraudmarc.com

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

person Gaia    schedule 31.12.2017

Это ограничение в 10 DNS-запросов налагается реализациями SPF для предотвращения DDoS-атак на инфраструктуру DNS.

С помощью функции Safe SPF DMARCLY вы можете снять ограничение без перезаписи записи SPF.

person lgc_ustc    schedule 15.09.2018