В чем разница между директивами include и redirect в SPF?

У меня есть почтовые домены, размещённые на публичных почтовых платформах, таких как Яндекс и Мейл. Я хотел бы ужесточить правила SPF, разрешив отправку писем от имени моего домена только через Яндекс, при этом планирую использовать окончание записи -all. 

Яндекс предлагает несколько вариантов для настройки SPF: 
- v=spf1 redirect=_spf.yandex.net
- v=spf1 ip4:IP-1 ip4:IP-2 ip4:IP-3 include:_spf.yandex.net ~all

Однако, я заметил, что в записи _spf.yandex.ru указано: 
- v=spf1 include:_spf-ipv4.yandex.ru include:_spf-ipv6.yandex.ru include:_spf-ipv4-yc.yandex.ru ~all

Таким образом, в конце записи у них стоит ~all, а не -all. У меня есть подозрение, что redirect и include ведут себя по-разному, учитывая это ~all. Я ещё не ознакомился с RFC. Могли бы вы подсказать, как правильно настроить SPF?
  • 8 октября 2024 г. 12:25
Ответы на вопрос 2
Да, давайте разберем разницу между директивами `include` и `redirect`, а также как правильно настроить запись SPF.

### Разница между `include` и `redirect` в SPF:

- **`include:`** Эта директива позволяет включить SPF-запись другого домена и продолжить проверку на совпадение. Если проверка на совпадение в записи другого домена завершится неудачно, SPF-проверка будет продолжать проверять текущую запись.

- **`redirect:`** Эта директива перенаправляет проверку SPF на другую запись, которая полностью заменяет текущую. Как только срабатывает `redirect`, текущая запись больше не проверяется, а проверка переходит к записи, на которую ссылаются. При этом важно, что в конечной записи **должен** быть указан механизм (например, `-all` или `~all`), который будет применяться к исходному домену.

### Как правильно настроить SPF для вашего случая:

Если вы хотите разрешить отправку писем *только* через Яндекс и использовать строгую политику (то есть `-all`), можно использовать в качестве записи:

```plaintext
v=spf1 redirect=_spf.yandex.net
```

При этом все правила, определенные в `_spf.yandex.net`, будут применимы к вашему домену. Если в этой записи указано `~all`, то это означает, что все другие источники, помимо указанных в SPF Яндекса, будут оцениваются как "мягкое" отклонение, и это может привести к ситуации, когда письма от других источников не будут отклонены полностью. Однако, так как _spf.yandex.net уже включает `~all`, то в вашем домене будет та же политика.

Если вы хотите использовать `include`, то ваша запись может выглядеть так:

```plaintext
v=spf1 include:_spf.yandex.net -all
```

Таким образом, если в `_spf.yandex.net` указано `~all`, то это не повлияет на вашу запись, так как `-all` будет определять строгую политику для вашего домена.

### Общая рекомендация:

Если вы хотите, чтобы письма могли отправляться только через Яндекс и хотите сильное отклонение для остальных источников, то лучше использовать вариант с `include`:

```plaintext
v=spf1 include:_spf.yandex.net -all
```

Таким образом, ваш домен будет более защищен от подделки писем, и письма от других источников будут жестко отклоняться. 

Обратите внимание, что перед тем как вносить изменения, желательно протестировать SPF-запись с помощью соответствующих инструментов, чтобы удостовериться, что она работает корректно.
вот rfc как раз и стоит читать в таких случаях 
или гуглить, благо на тему spf dmarc dkim много информации
redirect означает конец записи. а значит применяться будет тот "all" модификатор который в редиректе, вы на это не повлияете
include , даже содержащий другие "all" модификаторы во включенных записях - читает spf до конца и применит ту опцию которая указана последней
Однако если у вас настроен DMARC и DKIM - для вас нет разницы между ~all и -all
Похожие вопросы