Demasiadas búsquedas DNS en un registro SPF


Mi sitio web necesita enviar correos electrónicos con los servicios de Google Apps, SendGrid y MailChimp. Google Apps se utiliza para recibir y leer correos electrónicos entrantes en mi dominio.

Necesito establecer el registro SPF para mi dominio. Lo siguiente es sintácticamente correcto (no estoy seguro acerca de los tokens A y MX):

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

Pero si lo pruebo con http://www.kitterman.com/getspf2.py I get

PermError SPF Error permanente: Demasiadas búsquedas DNS

Problema similar al http://www.onlineaspect.com/2009/03/20/too-many-dns-lookups-in-an-spf-record /

¿Cómo puedo optimizar/reescribir mi registro SPF?

Author: Robert, 2013-01-10

7 answers

Nunca he tenido que hacer esto antes, pero basado en el artículo que me enviaste, esto es lo que se me ocurrió.

Empezamos con:

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

Obtenemos 10 búsquedas totales antes de lanzar el error 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

Así que sin siquiera seguir los registros SPF incluidos, tenemos 7 búsquedas.


Ahora, vamos a sumergirnos un nivel más profundo.

1. _spf.google.com

El registro SPF de Google evalúa a:

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

Cada uno de los cuales resuelve a la valores siguientes:

# _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

Así que Google nos da 2 búsquedas más, llevando el total hasta 9 Búsquedas.

2. servers.mcsv.net

Mailchimp es un poco un doosey porque agrega un conjunto de 3 búsquedas adicionales:

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

Me imagino que dependiendo de lo que estés enviando a través de Mailchimp, es posible que puedas eliminar uno o dos de estos registros (pero tendrás que evaluarlo tú mismo).

De todos modos, aquellos resuelven a la siguiente:

# 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

Esto nos lleva a un total de 12 Búsquedas (Que ya son dos sobre el límite).

2. sendgrid.net

SendGrid termina siendo el menor número de búsquedas adicionales para nosotros.

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

Así que la única búsqueda adicional aquí es sendgrid.biz, que evalúa a:

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

Esto eleva nuestro total general a 14 búsquedas.


Así que nuestro total general es 14 Búsquedas. Tenemos que bajar eso a 10. He esbozado un par de opciones a continuación, es posible que tenga que utilizar más de 1 de ellos para conseguir abajo.

  1. Incluya directamente algunos de los registros spf redirigidos. Ahora que sabemos a qué servidores redirigen los registros spf, podría eliminar al intermediario e incluirlos directamente. Nota: Si alguno de los servicios termina cambiando sus registros SPF, tendrás que pasar por el proceso de actualizar el tuyo manualmente.

  2. Elimina algunos de los servicios que eres utilizar. No estoy seguro de cuál es su caso de uso para tener todos estos servicios, pero definitivamente hay alguna superposición que podría usar. Por ejemplo, SendGrid admite (1) correo saliente transaccional, (2) correos electrónicos de newsletter / marketing y (3) correo entrante. Así que puede haber alguna redundancia reducible.

  3. Elimine el registro MX si es redundante. Dependiendo de su configuración, la búsqueda MX puede ser redundante.

Espero que esto ayude!

 58
Author: Swift,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-10 16:37:02

La respuesta de Swift es excelente.

Una técnica que no se menciona anteriormente es ver si subdominios separados con sus propios registros SPF se pueden usar para sistemas que envían correo a través de estas rutas diferentes.

Por ejemplo, si el dominio es example.com, haga que Google apps envíe desde direcciones como [email protected]. Luego puede haber un registro SPF para gapps.example.com que incluye _spf.google.com, y _spf.google.com puede eliminarse del registro SPF principal example.com, lo que reduce las búsquedas en 3.

 6
Author: mc0e,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-13 13:57:01

Eche un vistazo a SPF-tools* que ayudan a reensamblar el registro SPF del original que usa includes en uno estático que contiene simplemente campos ip4 y ip6. Se puede acoplar fácilmente junto con el servidor DNS de ejecución local o el servicio DNS alojado utilizando su API para mantener todo sincronizado con el upstream includes.

*Soy el autor (ahora junto con otros colaboradores) y es de código abierto bajo licencia Apache 2.0.

 4
Author: Ján Sáreník,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-31 08:37:12

Exploramos aplanar los registros SPF en IPs, así como crear subdominios. Todos parecían mucho trabajo. Hemos encontrado un servicio de spfproxy.org que literalmente toma un par de minutos para la configuración. Básicamente enmascaran las búsquedas DNS detrás de ellos usando macros SPF. No estoy seguro de por qué más empresas no ofrecen esto.

 0
Author: AngularNerd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-04 06:06:23

Hace unos años escribí hydrate-spf, una herramienta que busca incluye y fusiona el resultado en un registro gigante. Como se mencionó en el README, este enfoque no es ideal: elimina la capacidad de los dominios incluidos para actualizar sus registros. Sin embargo, cuando se está topando con el límite permitido, se resolverá el problema inmediato, y se puede mantener un poco mantenible a través de actualizaciones regulares.

 0
Author: Xiong Chiamiov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-12 00:21:26

El límite de búsqueda de 10 es un límite para las búsquedas de DNS. Aplanar el registro SPF para incluir menos búsquedas de DNS y sustituirlas por IPs (aplanar) es una forma de sortear el límite.

Puede hacer esto manualmente, pero luego debe actualizar sus registros SPF cada vez que uno de los proveedores cambie sus IPs (lo que sucede con frecuencia).

La solución ideal es utilizar un servicio de aplanamiento SPF. Este es gratis para volúmenes bajos, o barato para más de 500 correos electrónicos / mes. Sondea regularmente los registros SPF que desea incluir para las direcciones IP actualizadas.

Fraudmarc.com

Divulgación: No estoy asociado con esta compañía y este no es un enlace de referencia

 0
Author: Gaia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-31 19:08:33

Las implementaciones de SPF imponen este límite de búsqueda de 10 DNS para evitar ataques DDoS contra la infraestructura DNS.

Con la función SPF segura de DMARCLY, puede levantar el límite sin reescribir su registro SPF.

 0
Author: lgc_ustc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-15 05:47:44