Что такое SPF, уже
было. Что значат a mx в начале записей там тоже можно найти.
Когда нужен include? Представим, что у нас много своих айпи или просто много доменов и мы хотим при переезде 1 сервера на новые айпи менять не все домены, что там сидели (а это может быть даже 1500 доменов), а 1 общий. В этом случае на этих доменах создается TXT запись вида
@ TXT "v=spf1 a mx include:OurMainDomain.ru -all"
Теперь достаточно поменять запись только для OurMainDomain.ru и всё.
Могут быть варианты и сложнее, с несколькими include, хотя тут уже лучше не увлекаться.
А что если для самого OurMainDomain.ru также нужна SPF запись? В этом случае надо вынести нашу служебную TXT на отдельный поддомен.
Для начала, посмотрим на include:_spf.google.com
host -a _spf.google.com
Trying "_spf.google.com"
;; ->>HEADER<<- data-blogger-escaped-25361="25361" data-blogger-escaped-br="br" data-blogger-escaped-id:="id:" data-blogger-escaped-noerror="noerror" data-blogger-escaped-opcode:="opcode:" data-blogger-escaped-query="query" data-blogger-escaped-status:="status:">
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4
;; QUESTION SECTION:
;_spf.google.com. IN ANY
;; ANSWER SECTION:
_spf.google.com. 300 IN TXT "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"
;; AUTHORITY SECTION:
google.com. 324838 IN NS ns2.google.com.
google.com. 324838 IN NS ns4.google.com.
google.com. 324838 IN NS ns1.google.com.
google.com. 324838 IN NS ns3.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 206645 IN A 216.239.32.10
ns2.google.com. 206645 IN A 216.239.34.10
ns3.google.com. 206645 IN A 216.239.36.10
ns4.google.com. 140190 IN A 216.239.38.10
Похоже, что для такого подключения сейчас стандарт _spf.domain, типа TXT
Таким образом, на нашем OurMainDomain.ru надо добавить запись
_spf IN TXT "v=spf1 ip4:x.x.x.x ?all"
?all нужен: если у нас после этого include идёт ещё (можно писать больше 1 include), чтобы проверка почтовиком не остановилась и проверяла записи дальше.
Означает "если адрес не подошёл ни к одному правилу, считать, что проверка не проводилась".
Важный нюанс: не стоит делать include, который показывает на нестабильный dns: если не удалось получить эти данные, почта перестанет ходить. Во всяком случае, так пишут во всех мануалах. Как я понимаю, ошибка подключения фактически выдаст "-all".