Насколько я понимаю, в спецификации SPF указывается, что получателю электронной почты не нужно выполнять более 10 поисков DNS, чтобы собрать все разрешенные IP-адреса для отправителя. Таким образом, если запись SPF имеет include:foo.com include:bar.com include:baz.com
и у каждого из этих трех доменов есть записи SPF, которые также имеют 3 include
записи, то теперь мы имеем до 3 + 3 + 3 + 3 = 12 поисков DNS.
правильно ли мое понимание выше?
Я использую только 2 или 3 услуги для своего домена, и я уже преодолел этот предел. Этот ли предел обычно (или когда-либо) применяется крупными / второстепенными почтовыми провайдерами?
Ответы:
И
libspf2
(C), иMail::SPF::Query
(perl, используемый в sendmail-spf-milter ) реализуют ограничение в 10 механизмов , вызывающих DNS , но последний (AFAICT) не применяет ограничения MX или PTR.libspf2
ограничивает каждый из mx и ptr до 10 также.Mail::SPF
(perl) имеет ограничение в 10 вызывающих DNS механизмов и ограничение в 10 поисков на механизм, на MX и на PTR. (Два пакета perl обычно, но не по умолчанию, используются в MIMEDefang .)pyspf
имеет ограничения по 10 для всех: «поиск», MX, PTR, CNAME; но он явно умножает MAX_LOOKUPS на 4 во время работы. Если только не в «строгом» режиме, он также умножает MAX_MX и MAX_PTR на 4.Я не могу комментировать коммерческие / проприетарные реализации, но вышеприведенные (кроме
pyspf
) явно реализуют верхний предел 10 механизмов запуска DNS (подробнее об этом ниже), дают или принимают, хотя в большинстве случаев он может быть переопределен при запуске время.В вашем конкретном случае вы правы, оно включает 12 включений и превышает лимит 10. Я ожидаю, что большинство программ SPF возвратит «PermError», однако сбои будут влиять только на конечных «включенных» поставщиков, поскольку будет рассчитываться как промежуточный итог: механизмы SPF оцениваются слева направо, и проверки будут «ранними» на проходе, поэтому это зависит от того, где в последовательности появляется отправляющий сервер.
Обходной путь - использовать механизмы, которые не запускают поиск DNS, например,
ip4
иip6
, а затем использовать,mx
если это возможно, так как это дает вам до 10 дополнительных имен, каждое из которых может иметь более одного IP.Поскольку SPF приводит к произвольным запросам DNS с потенциально экспоненциальным масштабированием, его можно легко использовать для атак DOS / усиления. У него есть преднамеренно низкие пределы, чтобы предотвратить это: он не масштабируется так, как вы хотите.
10 механизмов (строго механизмы + модификатор «редирект»), вызывающих поиск DNS, не совсем то же самое, что 10 поисков DNS. Даже «DNS-поиски» открыты для интерпретации, вы не знаете заранее, сколько требуется дискретных поисков, и вы не знаете, сколько дискретных поисков может потребоваться вашему рекурсивному преобразователю (см. Ниже).
RFC 4408 §10.1 :
Таким образом, вы можете использовать до 10 механизмов / модификаторов, которые запускают поиск DNS. (Формулировка здесь плохая: кажется, что она устанавливает только верхнюю границу ограничения, подтверждающая реализация может иметь предел 2.)
§5.4 для механизма mx и §5.5 для механизма ptr имеют ограничение в 10 поисков такого типа имени, и это относится только к обработке этого механизма, например:
т. е. у вас может быть 10 mx-механизмов с до 10 MX-именами, поэтому каждый из них может вызвать 20 операций DNS (10 MX + 10 A DNS-запросов каждый) на общую сумму 200. Это похоже на ptr или % {p} , вы может искать 10 механизмов ptr , следовательно, 10x10 PTR, каждый PTR также требует поиска A, опять же всего 200.
Это именно то, что проверяет тестовый набор 2009.10 , см. Тесты « Пределы обработки ».
Не существует четко установленного верхнего предела общего количества операций поиска DNS-клиента для каждой проверки SPF, я вычисляю это как неявно 210, отдача или взятие. Существует также предложение ограничить объем данных DNS для каждой проверки SPF, хотя фактическое ограничение не предлагается. Вы можете получить приблизительную оценку, поскольку записи SPF ограничены 450 байтами (что, к сожалению, является общим для всех других записей TXT), но общий объем может превысить 100 кБ, если вы щедры. Оба эти значения явно открыты для потенциального злоупотребления в качестве усиления атаки, что именно то, что §10.1 говорит, что вам следует избегать.
Эмпирические данные свидетельствуют общие 10 механизмов подстановок обычно реализуются в записях (проверить SPF для microsoft.com , которые , кажется, пошли на некоторые длины , чтобы держать его ровно 10). Трудно собрать доказательства сбоя слишком большого числа поисков, потому что обязательный код ошибки - просто «PermError», который охватывает все виды проблем ( хотя в этом может помочь отчетность DMARC ).
Часто задаваемые вопросы по OpenSPF увековечивают ограничение в «10 поисков DNS», а не более точные «10 механизмов, вызывающих или перенаправляющих DNS». Этот FAQ, возможно, неправильный, так как на самом деле он говорит:
который не согласен с RFC, который налагает ограничения на операцию «проверки SPF», не ограничивает операции поиска DNS таким образом и ясно заявляет, что запись SPF представляет собой отдельную текстовую запись DNS RR. Часто задаваемые вопросы подразумевают, что вы перезапускаете счетчик при обработке «включения», поскольку это новая запись SPF. Какой беспорядок
DNS-поиск
Что такое DNS-поиск? Как пользователь . Я бы подумал, что «
ping www.microsoft.com
» включает в себя один DNS-запрос: есть одно имя, которое я ожидаю превратить в один IP. Просто? К сожалению нет.Как администратор, я знаю, что www.microsoft.com может быть не простой записью A с одним IP-адресом, это может быть CNAME, который, в свою очередь, нуждается в другом дискретном поиске для получения записи A, хотя тот, который, вероятно, будет выполнять мой восходящий преобразователь а не решатель на моем рабочем столе. Сегодня для меня www.microsoft.com представляет собой цепочку из 3 CNAME, которые в конечном итоге становятся записью A на akamaiedge.net, то есть (по крайней мере) для 4 операций DNS-запросов для кого-то. SPF может видеть CNAME с механизмом «ptr», хотя запись MX не должна быть CNAME.
Наконец, как администратор DNS, я знаю, что для ответа (почти) на любой вопрос требуется много отдельных операций DNS, отдельных вопросов и транзакций ответов (UDP-дейтаграммы) - при условии, что пустой кеш, рекурсивный преобразователь должен запускаться в корне DNS и работать по-своему вниз:
.
→com
→microsoft.com
→www.microsoft.com
запрашивать конкретные типы записей (NS, A и т. д.), как требуется, и иметь дело с CNAME. Вы можете увидеть это в действии сdig +trace www.microsoft.com
, хотя вы, вероятно, не получите тот же самый ответ из-за хитрости геолокации (пример здесь ). (Существует даже немного больше этой сложности, так как SPF встраивается в записи TXT, а устаревшие ограничения в 512 байт для ответов DNS могут означать повторную попытку запросов через TCP.)Так что же SPF считает поиском? Он действительно наиболее близок к точке зрения администратора , ему необходимо знать специфику каждого типа DNS-запросов (но не до той точки, где ему фактически необходимо подсчитывать отдельные дейтаграммы DNS или соединения).
источник
Как вы отметили, RFC4408 s10.1 накладывает некоторые ограничения на работу DNS. В частности:
и более того
Обратите внимание, что первый ограничивает количество механизмов , а не количество выполненных поисков; но это все еще предел.
Насколько я могу сказать, да, эти ограничения применяются довольно жестко. Они предназначены для того, чтобы люди не могли создавать произвольно сложные записи SPF и использовать их для серверов DoS, которые проверяют свои записи, останавливая их в огромной цепочке поисков DNS, поэтому в интересах тех, кто внедряет средство проверки SPF для почитай их.
Вы правы, отметив, что вложенные включения, вероятно, вызовут наибольшую проблему с этими ограничениями, и если вы решите включить несколько доменов, каждый из которых интенсивно использует сами включения, то вы можете довольно быстро обойти их. Нетрудно найти примеры людей, для которых это создало конкретные проблемы .
В результате, как представляется, проблемы обычно возникают, когда люди решают использовать как SPF, так и несколько отдельных и разрозненных компаний для обработки своей исходящей электронной почты. Из вашего вопроса я делаю вывод, что вы вписываетесь в эту категорию. SPF, похоже, не предназначен для обслуживания людей, которые решили это сделать . Если вы настаиваете на этом, вам, скорее всего, придется иметь какую-то задачу cron на вашем DNS-сервере, которая постоянно оценивает все записи SPF, которые вы хотели бы включить, выражает их в виде последовательности
ip4:
иip6:
механизмов (от числа которых нет предела) и повторно публикует результат как запись SPF.Не забудьте закончить с
-all
, или все упражнение было бессмысленным.источник
spf-tools github
), я один из авторов, это бесплатное программное обеспечение, предназначенное для того, чтобы вернуть сообществу, от которого я так много взял, и было бы радо, если бы оно помогло кому-то еще. Самореклама они называют это. И нет места для обсуждения.