С чего всё начиналось

Что было в моменте между тем, как вымерли динозавры и через каких-нибудь десять сотен тысяч лет, когда начали появляться первые человекоподобные млекопитающие, а затем компьютер, интернет и электронная почта, а SPF пока ещё не изобрели...?

Это были тёмные времена - интернет создавался в сравнительно благих, научных целях; Электронная почта являлась неотъемлемой его частью, и когда это стало частью жизни многих людей - внедрение SPF стало некоторой гарантией легитимности отправителя.

Представьте себе: вы ведете деловую переписку по крупной сделке, у вас запрашивают доступы к стороннему сервису или пытаются узнать конфиденциальную информацию, которая может быть передана только клиентам вашей компании через электронную почту. Вы могли бы получить письмо, в обратном адресе которого (заголовок From:) указан знакомый вам электронный ящик, с которым вы планировали обменяться некоторой чувствительной информацией.

Но откуда вам знать, что это не мошенник какой-нибудь? Вас, возможно бы раньше успокаивал тот факт, что в обратном адресе указана электронная почта от знакомого вам лица. Но, вы же понимаете - "Обратный адрес" как и в настоящей бумажной почте (От кого) - это просто текст, написанный так, как это вздумалось отправителю письма.
Как его проверить? На самом деле письмо написал тот человек, которого Вы знаете? Можно было бы ему позвонить или использовать какой-нибудь шифр (PGP-подпись), возможно использование шифрования было бы лучшим вариантом, чтобы обеспечить высокую безопасность вашей переписки, при условии конечно, что вы знаете как это использовать...

А если, как и 99% людей, вы знать не знаете ничего о PGP-ключах?

SPF

Когда один из компьютеров, в сети интернет, пытается отправить сообщение по электронной почте какому-нибудь адресату, происходит много занятных процессов.

Для начала, машина-отправитель (далее Отправитель), пытается узнать MX-запись у домена, который указан в адресате сообщения. Таким образом, отправитель поймет, как можно связаться с машиной-получателем (далее получателем). Допустим я Муфта, и отправляю письма самому себе до востребования, с почтового ящика mybox@bk.ru в ящик на другом домене thebox@dimti.ru.

Что при этом начинает происходить:

  • Отправитель узнаёт MX-запись (доменное имя, являющееся адресом почтового сервера "dimti.ru")
    • Допустим, MX-запись, записанная на DNS-сервере для домена dimti.ru выглядит так: dog.dimti.ru
  • Отправитель соединяется по TCP/IP по IP-адресу MX-домена и отправляет письмо, в котором: служебные заголовки (From, Reply-To и пр.) + содержимое письма (текст, файлы).

Ну что там с SPF?

Первым делом сервер-получатель (далее Получатель) узнает IP-адрес отправителя.

Теперь считаем SPF у домена "dimti.ru" (именно у домена, указанного в адресе электронной почты отправителя, не у MX-домена)

Посмотрим: dig TXT dimti.ru | grep spf

"v=spf1 a mx ip4:93.88.78.237 include:_spf1.beget.ru"

А теперь сервер Получателя сопоставит IP-адрес отправителя и список разрешенных IP-адресов в SPF-записи домена.
Этим и решит можно ли принимать письмо.

Подробнее?

DNS-записи - это источник доверия. Их настраивает владелец домена Отправителя - этой информации можно доверять.

Что-нибудь может пойти не так?
Если коротко, то да. Но это уже область ответственности интернет-провайдеров.
Какой-нибудь роутер на маршруте от Отправителя к Получателю может отдавать не тот IP-адрес или DNS-сервер почтового сервера Получателя отправит не настоящую информацию (среди которой будут настройки SPF, содержащиеся в TXT-записи главного домена) — информация об отправителе не может быть гарантированно безопасной. Хотя потенциальный риск этого сценария мал - маловероятно, что взломают DNS сервер почтовой системы или кто-то "вклинится" в сетевой маршрут между дата-центрами.

Что значит доверенный IP-адрес отправителя?
Для Получателей это означает что именно этот сервер Отправителя может записывать легитимные заголовки "From".

Сервер злоумышленника нет в списке IP-адресов SPF - не может, таким образом, является доверенным почтовым сервером, который мог бы задавать заголовки From (то есть указывать название ящика@домена отправителя).
Сервер получателя сверит IP-адрес отправителя, и если его нет в записи SPF, то, в зависимости и от настроек в SPF и от своих собственных предпочтений, решит – отказываться от письма или же принять его.

А доверенный сервер Отправителя, указанный в SPF - подразумевается что он сам отвечает за справедливое использование поля From в отправляемых от себя письмах.


Как правило, на нормально настроенном почтовом сервере система не даст подписаться в письме каким-нибудь другим именем, поэтому возможность подмены поля FROM, исключается на уровне ПО сервера отправителя.

SPF составляет небольшой кусочек пазла в деле о безопасности электронных писем. В приближенным к реальности мире, SPF используется для того, чтобы добавлять в неё почтовые сервера сервисов маркетинговых рассылок. От этого зависит - будут ли доходить письма рассылок, в том числе и транзакционные письма с сайта через почтовый SMTP-сервер домена.

Если в SPF указать a то сервер, на котором находится веб-сайт - сможет без проблем отправлять письма, подписываясь "кем-нибудь" из отправителей своего домена.