Почему у Сбербанка некорректная SPF-запись для домена?
> host -t txt sberbank.ru
sberbank.ru descriptive text "v=spf1 mx mx:shark11.sberbank.ru mx:shark12.sberbank.ru mx:shark13.sberbank.ru mx:shark14.sberbank.ru mx:email1.sberbank.ru -all"
Ну, а для тех кто осилит прочитать — добро пожаловать под кат.
Зачем нужен SPF?
SPF помогает бороться с подделкой адресов отправителя. Не путайте SPF c DMARC, SPF позволяет только установить, мог ли данный IP-адрес отправлять почту от имени вот того домена (с поддержкой целого ряда исключений и реверансов).
Существует мнение, что SPF не нужен и вреден, однако как показывает практика, SPF на сегодня есть основной механизм в DMARC и пока на горизонте ничего подобного нет.
Как это работает?
Почтовый сервер, принимая почту, смотрит на адрес отправителя, а потом идет и запрашивает у домена отправителя особые записи, где на хитром языке сформулировано, какой IP может слать почту этого домена, а какой нет. В результате принимается решение, принимать ли данное письмо или нет, а может быть принять и посчитать спамом.
И что, реально работает?
Ну, в целом, не совсем. Изначально в SPF был предусмотрен тип записи, который позволяет делать Softfail. Это как бы косяк, но простительный. То есть, я говорю, что почта от моего домена может идти с вот этих адресов, тогда она точно нормальная. И если с каких-то других, то это ничего, простительно.
Вот эта извинительная приписка вообще на сегодня практически сводит к нулю толк от SPF, поскольку спамеры часто в эту извинительную приписку попадают.
В чем Сбербанк молодец?
А в том, что у них запись содержит -all, это как раз недопущение извинительного Softfail. То есть, ребята из Сбера как бы говорят нам, что почта от них может идти только с заданных адресов и никак иначе. Молодцы, это здорово.
А в чем же Сбербанк ошибся?
А в том, что запись у них сформулирована неверно. Это вызывает ошибку Permerror, и тогда у большинства почтовых систем запись даже не проверяется, а письмо просто пропускается.
Согласитесь, глупо делать -all, жесткую запись и при этом допускать ошибку, делая всю запись некорректной.
Да где же ошибка?
RFC 7208 вводит некоторые ограничения на количество DNS-запросов, которые должен сделать почтовый сервер, чтобы получить нужные данные в SPF. Оно же самое RFC ограничивает количество запросов с пустым результатом или ошибкой.
Разбираем запись:
"v=spf1 mx mx:shark11.sberbank.ru mx:shark12.sberbank.ru mx:shark13.sberbank.ru mx:shark14.sberbank.ru mx:email1.sberbank.ru -all"
0. v=spf1
Версия SPF-записи, т.е. синтаксис
1. mx
Почту от домена sberbank.ru могут отправлять только те серверы, что перечислены, как MX
> host -t mx sberbank.ru
sberbank.ru mail is handled by 50 shark11.sberbank.ru.
sberbank.ru mail is handled by 50 shark14.sberbank.ru.
sberbank.ru mail is handled by 50 email1.sberbank.ru.
sberbank.ru mail is handled by 50 shark12.sberbank.ru.
sberbank.ru mail is handled by 50 shark13.sberbank.ru.
Хорошо, видим эти пять серверов.
2. mx: shark11.sberbank.ru
Почту от домена sberbank.ru могут отправлять те серверы, что перечислены, как MX для домена shark11.sberbank.ru
СТОП! Еще раз.
Почту от домена sberbank.ru могут отправлять те серверы, что перечислены, как MX для домена shark11.sberbank.ru
> host -t mx shark11.sberbank.ru
shark11.sberbank.ru has no MX record
И вот этот результат засчитывается, как пустой. А по RFC, после первых двух таких ошибок надо прекратить анализировать SPF-запись и посчитать ее ошибочной. Что и происходит.
Короче говоря, ребята немного перестарались.
Как надо было сделать?
"v=spf1 mx -all"
А может коллеги сделали лучше?
На самом деле, сам Сбербанк редко шлет письма, вернее, в нашей почтовой системе их, например, не так много. Гораздо больше их приходит от площадки «Сбербанк АСТ», давайте посмотрим туда.
> host -t txt sberbank-ast.ru
sberbank-ast.ru descriptive text "v=spf1 mx a:mail2.sberbank-ast.ru a:mail3.sberbank-ast.ru a:mail4.sberbank-ast.ru a:gw.sberbank-ast.ru a:mail7.sberbank-ast.ru ~all"
А тут, увы, Softfail. Что сводит к нулю ценность SPF-записи.
Комментарии (5)
16 августа 2016 в 12:22
0↑
↓
Походу у сбербанка еще и dkim нет))16 августа 2016 в 12:26
0↑
↓
Знаю, что шансов мало (я их и сам когда-то просил включить HSTS на online.sberbank.ru, о чём получил классический ответ ни о чём), но вы всё-таки попробовали бы написать им в саппорт.16 августа 2016 в 12:27
+1↑
↓
Да, разумеется, отписано.
16 августа 2016 в 12:30
0↑
↓
Ух ты, это вы ловко нашли! За статью спасибо, ошибка действительно достойна огласке.
Интересно, если указать тупо ip-адреса, запись работать будет?16 августа 2016 в 12:38
0↑
↓
Если тупо — нет.
Надо делать согласно RFC.