Що робить перевірка SPF
Інструмент читає TXT-записи введеного домену та знаходить запис, який починається з v=spf1. Потім він переходить за кожним include і redirect так, як це робив би сервер-одержувач, фіксує кожну перевірку, що потребує DNS-запиту, і перевіряє синтаксис кожного терміна.
IP-адреса тут не використовується. Перевіряється, чи дійсний запис і чи вкладається його обробка в допустиму кількість DNS-запитів, а не те, чи може певний сервер надсилати пошту. Щоб перевірити це, надішліть лист через повний тест. У звіті буде показано результат, який фактично отримав сервер-одержувач.
Забагато DNS-запитів: ліміт становить десять
RFC 7208 обмежує перевірку SPF десятьма термінами, які потребують DNS-запиту: include, a, mx, ptr, exists і redirect. Враховується все дерево, тому include, який сам містить ще три include, використовує чотири запити. Перевищення ліміту дає результат permerror, який DMARC вважає непроходженням SPF.
Інструмент враховує кожен термін, зокрема ті, до яких перевірка може ніколи не дійти, оскільки фактична перевірка зупиняється після першого збігу. Сервери, зазначені на початку, продовжують проходити перевірку, а сервери нижче в записі починають її не проходити. З боку це виглядає так, ніби для одних листів пошта працює, а для інших ні.
Терміни ip4 та ip6 не використовують DNS-запити. Заміна include діапазонами адрес, тобто спрощення запису, зменшує кількість запитів, але ці діапазони доведеться вручну синхронізувати зі змінами у ваших провайдерів.
Помилки, які варто перевірити
Два SPF-записи для одного домену. Таке трапляється, коли в інструкції з налаштування другого провайдера сказано додати запис, але ніхто не об’єднує його з першим. Наявність двох записів сама по собі дає permerror.
Закінчення +all, яке дозволяє пройти перевірку будь-якому серверу в інтернеті, або ?all, яке нічого не визначає ні для кого, а тому не забезпечує захисту. Термін ptr, який RFC 7208 не рекомендує використовувати. include для сервісів, якими компанія перестала користуватися багато років тому, усе одно потребують по одному DNS-запиту.
Запитання
Який вигляд має SPF-запис?
Це один TXT-запис домену, який починається з v=spf1, містить перелік дозволених відправників і закінчується правилом для всіх інших. Запис v=spf1 include:_spf.google.com ip4:203.0.113.5 ~all дозволяє надсилати пошту через Google Workspace та один сервер, а для решти повертає softfail. Домен може публікувати лише один SPF-запис.
SPF softfail чи hardfail: ~all чи -all?
Після налаштування DMARC працюватимуть обидва варіанти, оскільки DMARC визначає, що робити з повідомленням, яке не пройшло перевірку. ~all (softfail) є безпечнішим варіантом, поки ви ще шукаєте всі сервіси, які надсилають пошту від вашого імені. Перейдіть на -all, коли звіти DMARC покажуть, що жодне легітимне повідомлення не провалює перевірку.
Чому мій запис проходить повну перевірку, але тут показано понад десять DNS-запитів?
Сервер одержувача припинив перевірку на першому механізмі, який відповідав вашому серверу, тому решту DNS-запитів не було виконано. Інший сервер, що відповідає механізму далі у списку, перевищить ліміт у десять DNS-запитів під час тієї самої перевірки, і вона завершиться помилкою.
Що таке порожній DNS-запит?
DNS-запит, який не повертає жодного запису, або запит імені, якого не існує. RFC 7208 допускає два такі результати під час перевірки, третій спричиняє permerror. Зазвичай причиною є include для доменів, які більше не існують.
Чи може домен мати два SPF-записи?
Ні. RFC 7208 дозволяє один запис, що починається з v=spf1. Якщо таких записів два, кожна перевірка завершується з permerror. Об’єднайте їх: залиште один v=spf1, додайте до нього елементи include та ip4 з обох записів і завершіть одним all. v=spf1 include:_spf.google.com include:servers.mcsv.net ~all охоплює двох провайдерів в одному записі.
Повна інструкція: Multiple SPF records
Що означає SPF permerror?
Постійна помилка: опублікований запис неможливо перевірити, тому повторна спроба дасть той самий результат. Звичайні причини: понад десять DNS-запитів, два SPF-записи в одному домені, синтаксична помилка та третій порожній DNS-запит. DMARC вважає permerror непроходженням SPF.
Повна інструкція: SPF permerror: too many DNS lookups
Що робити, якщо SPF-запис не знайдено?
Одержувачі отримують результат none, який DMARC трактує так само, як fail. Будь-хто може вказати ваш домен в адресі відправника конверта. Опублікуйте в самому домені один TXT-запис, що починається з v=spf1, містить перелік сервісів, які надсилають пошту від вашого імені, і завершується на ~all або -all.