¿"~ All" en el medio de un registro SPF señala el final del registro cuando se analiza?

9

El formato de registro SPF de nuestra empresa es el siguiente:

"v = spf1 incluye: _spf.google.com ~ todo un mx ip4: XX0.0 / 23 incluye: spf.example.com? all"

Así que tenemos un "~ todos" en el medio de nuestro registro SPF. En el sitio web openspf.com , dicen esto con respecto al mecanismo "todos":

Este mecanismo siempre coincide. Suele ir al final del registro SPF.

Por lo tanto, no dicen que "todo" TIENE que ir al final del registro SPF, sino que generalmente va al final.

En nuestra compañía, últimamente hemos estado viendo algunos errores leves en los correos electrónicos enviados desde los servidores que figuran en nuestro registro SPF, sin embargo, nuestro registro SPF pasa todas las herramientas de validación que he encontrado hasta ahora.

Lo que me pregunto es si esto "~ todo" directamente después de la inclusión de Google Apps (_spf.google.com) provocaría que el análisis se detuviera y no reconociera las partes restantes del registro SPF. ¿La aprobación frente a la falla suave dependerá de quién la esté analizando y su implementación específica de cómo procesan los registros SPF? ¿Hay alguna razón para tener un mecanismo "todos" que no esté al final de un registro SPF?

Y sí, sé que podríamos cambiar nuestro registro SPF. Esta pregunta se trata más de aclarar cómo funciona todo esto y no necesariamente de resolver nuestra situación específica.

Whelanska
fuente

Respuestas:

11

RFC 7208 § 5.1 es explícito al respecto: después de que allaparece, todo lo que se DEBE ignorar.

Los mecanismos después de "todos" nunca serán probados. Los mecanismos enumerados después de "todos" DEBEN ser ignorados. Cualquier modificador de "redireccionamiento" ( Sección 6.1 ) DEBE ignorarse cuando haya un mecanismo de "todos" en el registro, independientemente del orden relativo de los términos.

El RFC que quedó obsoleto, el RFC 4408 , dijo casi lo mismo; La nueva versión del RFC simplemente aclara la intención.

Los mecanismos después de "todos" nunca serán probados. Cualquier modificador de "redirección" ( Sección 6.1 ) no tiene efecto cuando hay un mecanismo de "todos".

Entonces, las implementaciones conformes de SPF ignorarán completamente todo después del primero ~all. Sin embargo, esto no significa que cada implementación se ajuste a la especificación. En particular, esto probablemente se consideró digno de aclaración precisamente porque una o más implementaciones no se ajustaban.

No está del todo claro por qué una herramienta de validación en línea no detectaría esta configuración incorrecta, pero si tiene la intención de allusar algo después del primero , debe corregir el registro, ya que las implementaciones adecuadas lo ignorarán.

Michael Hampton
fuente
7

"v = spf1 incluye: _spf.google.com ~ todo un mx ip4: XX0.0 / 23 incluye: spf.example.com? all"

dice en orden:

"el correo electrónico que pasa el registro SPF _spf.google.comes válido para nuestro dominio"

"softfail en todos los demás remitentes de nuestro dominio"

"el correo electrónico que proviene de nuestros registros A es válido para nuestro dominio"

"el correo electrónico procedente de nuestros registros MX es válido para nuestro dominio"

"el correo electrónico que proviene del rango de IP x.x.0.0/23es válido para nuestro dominio"

"el correo electrónico que pasa el registro SPF spf.example.comes válido para nuestro dominio"

"el correo electrónico de todos los demás remitentes para nuestro dominio no se puede validar de una forma u otra"

Por la sintaxis de registro:

Los mecanismos se evalúan en orden. Si no coincide ningún mecanismo o modificador, el resultado predeterminado es "Neutral".

Entonces, para los suyos, una vez que llegue al "softfail para todos los demás", eso es realmente sobre eso ... debería ignorar el resto de los mecanismos que ha especificado.

Su registro SPF debe ser lo más breve posible. Dudo mucho que tenga una red completa / 23 que debería enviar correos electrónicos para su dominio, ni todos sus registros A. Tal vez sí ... pero lo más probable es que no.

Un buen registro limpio de SPF debería verse así:

"v = spf1 incluye: _spf.google.com incluye: spf.example.com mx -todos"

Lo que básicamente diría que _spf.google.com, spf.example.com y sus registros MX son los únicos remitentes válidos para su dominio ... todo lo demás debe tratarse como no válido.

El limpiador
fuente
0

Un verificador SPF implementado correctamente hará un cortocircuito en una coincidencia de mecanismo y la función check_host () devolverá el valor calificador como resultado. No tengo datos del "mundo real" para proporcionarle si la mayoría de los servidores de correo electrónico siguen o no el RFC.

Fuente: RFC7208 (ver página 17)

pk.
fuente