чтобы проверка SPF прошла, отправляющий IP-адрес должен пройти хотя бы один из механизмов. Включить механизмы проверьте входящий IP-адрес с помощью включенной записи SPF и "возврат" результат.
используя Ваш пример:
a.example.com IN TXT "v=spf1 include:b.example.com +all"
b.example.com IN TXT "v=spf1 -all"
включенная запись не будет возвращена, так как она содержит только -all
механизм. Тем не менее, первая запись пройдет, потому что она имеет +all
механизм.
используя детальное пример:
a.example.com IN TXT "v=spf1 ip4:1.2.3.4 mx include:spf.example.org -all"
a.example.com IN MX 0 mailserver.example.com
mailserver.example.com IN A 1.2.3.5
spf.example.org IN TXT "v=spf1 ip4:4.3.0.0/16 -all"
я запишу результат каждого механизма, в том же порядке, как они указаны в протоколе. Таким образом, результаты будут отформатированы следующим образом:
- a.example.com:
[ip4] [mx] [include] [-all]
- spf.example.org:
[ip4] [-all]
со следующими адресами отправителя:
1.2.3.4
- spf.example.org ->
fail fail
- a.example.com ->
pass fail fail fail
конечный результат будет pass
, так как хотя бы одна проверка прошла
1.2.3.5
- spf.example.org ->
fail fail
- a.example.com ->
fail pass fail fail
конечный результат будет pass
, так как хотя бы одна проверка прошла
4.3.10.20
- spf.example.org ->
pass fail
- a.example.com ->
fail fail pass fail
конечный результат будет pass
, так как хотя бы одна проверка прошла
TL; DR: механизм включения оценивается отдельно, и результат передается обратно в оценку записи, в которую он включен. Оценка записи не выполняется, если механизмы не совпадают. Так как вы закончили свой пример с +all
, Он всегда будет соответствовать и поэтому проходит.