![Что делает «-all» во включенной (вторичной) записи SPF?](https://rvso.com/image/1518620/%D0%A7%D1%82%D0%BE%20%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D1%82%20%C2%AB-all%C2%BB%20%D0%B2%D0%BE%20%D0%B2%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20(%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B9)%20%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8%20SPF%3F.png)
В записи SPF эта -all
опция означает: «Я вношу в белый список только те машины/домены, которые я явно перечислил здесь, и никакие другие серверы не могут отправлять электронную почту для этого домена».
Так что же означает, когда используется include:
опция в записи SPF для включения второй записи SPF, и чтовторичныйЗапись SPF имеет -all
? Какой эффект от ее наличия?
решение1
Механизм include запустит рекурсивную оценку для включенной записи. Если эта оценка не удалась (например, из-за -all во включенной записи), результат механизма include будет считаться "Не совпадает". Таким образом, на практике механизм -all (или любой другой механизм с - квалификатором) во включенной записи SPF не оказывает никакого влияния на оценку первичной записи.
Полный обзор того, как механизм включения влияет на оценку первичной записи, можно увидеть в таблице в разделе 5.2 RFC 7208 (https://www.rfc-editor.org/rfc/rfc7208#section-5.2)
решение2
Для прохождения проверки 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
, он всегда будет соответствовать и, следовательно, пройдет.
решение3
Символ -all
в конце интерпретируется после обработки всех включений.
Его цель — объяснить, как следует обрабатывать электронные письма, отправленные не через перечисленные ресурсы.
-all
означает отбросить их как подделки, в то время ~all
как они все еще могут быть законными и к ним следует относиться с большим подозрением.