Думаю, что вам хорошо известен такой протокол, как DMARC и как он связан с SPF и DKIM.
Недавно выяснилось, что письма от Аэрофлота не проходят проверку по данному протоколу.
Кому интересно, почему, прошу под кат.
DMARC разработан для того, чтобы можно было защититься от фишинговых сообщений электронной почты. Делается это настройкой политик для домена, все настройки прописываются в DNS домена.
На Хабре о DMARC есть несколько статей.
Например, здесь и здесь.
В общем функция данного протокола заключается в том, что делать принимающему почтовому серверу с почтовыми сообщения от вашего домена, если они не прошли проверку SPF и DKIM.
То есть для работы DMARC в вашем домене должны быть корректно настроены SPF и DKIM.
Про DKIM, тоже есть не мало статей в Сети, поэтому на его специфике останавливаться не буду.
В почтовых системах своих клиентов я всегда настраиваю пометку сообщений, которые не прошли проверку DMARC, путем изменения темы сообщения, чтобы пользователь был осторожен с данным сообщением.
Периодически я провожу аудит подобных сообщений путем изучения их заголовков.
Примерно неделю назад заметил, что письмо от Аэрофлота было помечено одной из систем, как не прошедшее проверку.
Начал разбираться и оказалось, что в домене aeroflot.ru неправильно прописана запись SPF.
Смотрим SPF при помощи nslookup
> nslookup
> set type=txt
> aeroflot.ru
aeroflot.ru text = "v=spf1 " "ip4:80.92.36.15 ip4:80.92.36.16 ip4:80.92.36.63 ip4:80.92.36.64 ip4:80.92.39.28 ip4:80.92.36.156 ip4:80.92.36.157 ip4:80.92.39.17 ip4:80.92.39.18 " "ip4:213.219.245.120 ip4:213.219.245.121 ip4:79.137.209.178 ip4:151.193.220.17 ip4:151.193.220.18 ip4:151.193.220.20 ip4:151.193.224.244 ip4:151.193.224.245 ip4:5.104.224.147 " "ip4:185.69.80.40 ip4:185.69.81.40 ip4:185.69.82.20 ip4:185.69.83.20 ip4:89.208.149.202 ip4:5.8.180.34 ip4:77.95.225.47 ip4:95.213.152.75 " "ip4:185.69.80.10 ip4:185.69.80.20 ip4:185.69.80.30 ip4:185.69.81.10 ip4:185.69.81.20 ip4:185.69.81.30 a:mta.mindbox.ru include:mailgun.org ~all"
Ошибку видно почти сразу. В RFC4408, который описывает SPF, в 3.1.3 написано:
3.1.3. Multiple Strings in a Single DNS record
As defined in [RFC1035] sections 3.3.14 and 3.3, a single text DNS
record (either TXT or SPF RR types) can be composed of more than one
string. If a published record contains multiple strings, then the
record MUST be treated as if those strings are concatenated together
without adding spaces. For example:
IN TXT "v=spf1 .... first" "second string..."
MUST be treated as equivalent to
IN TXT "v=spf1 .... firstsecond string..."
То есть, если у вас в домене, в записи SPF содержится несколько строк, то они должны объединяться без пробелов.
Например, в SPF Аэрофлота, в строке "v=spf1 " "ip4:80.92.36.15...
лишний пробел после "v=spf1 "
Должно быть "v=spf1" "ip4:80.92.36.15...
Также лишние пробелы содержаться в других строках.
Я сразу же попытался связаться с админами Аэрофлота, но это было безуспешно. Звонил по номерам Аэрофлота, просил переключить на ИТ-отдел, но оператор сказала, что не может этого сделать.
Создал в их системе заявку, где детально описал проблему. Пришло подтверждение, что заявка создана и вскоре будет обработана, но ответа так и нет.
Данную заметку пишу с надеждой, что админы Аэрофлота читают Хабр, или кто-то из вас знает данных админов и передаст им информацию.
P.S! Знаю, что не совсем корректно писать об ошибках своих коллег, но другого способа донести до них важную информацию, к сожалению, не вижу.
Коллеги, если вы считаете, что данная заметка кому-либо навредит, то напишите мне об этом. Убрать ее в черновики не сложно.
Спасибо!
Всем добра!
Автор: NRinat