LW IT Solutions
« Przegląd bloga /IT & Networks/Tutorials / SPF, DKIM i DMARC prosto wyjaśnione: co...
Ten artykuł w innych językach:

SPF, DKIM i DMARC prosto wyjaśnione: co sprawdza każdy rekord i który odrzuca pocztę

SPF, DKIM i DMARC prosto wyjaśnione: co sprawdza każdy rekord i który odrzuca pocztę
Spis treści
  1. Czym są SPF, DKIM i DMARC
  2. Dlaczego samo SPF niczego nie zatrzymuje
  3. Ukryty budżet: dziesięć zapytań i ani jednego więcej
  4. Jak długi musi być klucz DKIM
  5. Dlaczego większość domen zostaje przy p=none
  6. Co pokazuje pięć minut sprawdzania
  7. Pytania i odpowiedzi
  8. Źródła

Na kopercie można napisać dowolne nazwisko. Z pocztą elektroniczną jest tak samo: adres nadawcy w wiadomości to linijka tekstu, napisana przez tę stronę, która wysyła, i nic w protokole nie wymaga, żeby był prawdziwy.

Przeciw temu istnieją trzy wpisy DNS. Dwa z nich to sprawdzenia. Tylko jeden jest poleceniem – i ta różnica rozstrzyga, czy sfałszowana wiadomość w imieniu domeny dotrze, czy się odbije.

Wiadomość mija trzy punkty kontrolne: SPF i DKIM odpowiadają na jedno pytanie każdy, a tylko DMARC wydaje polecenie odrzucenia
Wszystkie trzy widzą tę samą wiadomość. Tylko trzecie może zareagować na to, co widzi.

Czym są SPF, DKIM i DMARC

SPF to lista serwerów. Właścicielka domeny ogłasza, które maszyny mogą wysyłać pocztę w imieniu tej domeny. Odbierający serwer pocztowy porównuje maszynę wysyłającą z listą i dostaje tak albo nie.

DKIM to podpis. Serwer wysyłający podpisuje wiadomość kluczem tajnym; pasujący klucz publiczny stoi w DNS. Jeśli podpis nadal pasuje w chwili dotarcia, po drodze nic nie zostało zmienione, a wiadomość rzeczywiście pochodzi z systemu mającego ten klucz.

DMARC to polecenie. Mówi, co ma się stać, gdy dwa pierwsze zawiodą: mimo to przepuścić, odłożyć do spamu albo wprost odrzucić.

To cała budowa. Dwa pytania i jedna odpowiedź na nie. Zaskakujące bywa zwykle to, której części brakuje w większości domen – brakuje trzeciej.

Dlaczego samo SPF niczego nie zatrzymuje

Sprawdzenie SPF wytwarza wynik. Nie wytwarza następstwa.

Odbierający serwer dowiaduje się, że maszyna wysyłająca nie stoi na liście. Co zrobi z tą wiedzą, zależy wyłącznie od niego, a bez dalszego polecenia większość robi rzecz ostrożną: doręcza, może z oznaczeniem. Odrzucenie uprawnionej wiadomości jest dla dostawcy poczty znacznie gorsze niż przyjęcie sfałszowanej – w razie wątpliwości zostaje więc przyjęta.

Same wpisy SPF coś o tym mówią. Wpis może kończyć się na -all, co znaczy „wszystko pozostałe to fałszerstwo”, albo na ~all, co znaczy „wszystko pozostałe jest podejrzane”. To drugie jest prośbą o pobłażliwość i właśnie to ogłasza większość domen – często dlatego, że tak było ustawione w instrukcji, a nie dlatego, że ktoś tak postanowił.

DKIM ma tę samą granicę. Nieudany podpis to ustalenie, nie wyrok.

Ukryty budżet: dziesięć zapytań i ani jednego więcej

SPF ma granicę, o którą potyka się wiele domen, bo w samym wpisie nic jej nie widać.

Wpis może odsyłać do innych wpisów. include:_spf.google.com znaczy: „wszystko, co tam dozwolone, obowiązuje i tutaj”. Wygodne i tak właśnie dokłada się usługi wysyłkowe. Ale każde takie odesłanie kosztuje jedno zapytanie DNS, wpis odsyłany może odsyłać dalej, a w sumie dozwolonych jest dziesięć.

Powyżej dziesięciu sprawdzenie nie tylko zawodzi – kończy się trwałym błędem, a wedle reguł cały wpis przestaje się wtedy liczyć. Każda pozycja w nim, także poprawnie wpisane serwery.

Haczyk polega na tym, że tę granicę da się przekroczyć, nie ruszając własnego wpisu. Usługa wysyłkowa dokłada we własnym wpisie jedno odesłanie, ten wpis kosztuje teraz jedno zapytanie więcej, a domena, która stała na dziesięciu, stoi po cichu na jedenastu. W domenie nic się nie zmieniło. Sprawdzenie po prostu przestaje działać.

Znany dostawca płatności stoi obecnie na dziewięciu z dziesięciu. To nie zaniedbanie – tak to wygląda w koncernie z wieloma systemami wysyłkowymi i dzieli go od awarii jedno odesłanie.

Troje drzwi w rzędzie: dwoje pierwszych to otwarte ramy, trzecie są zamknięte

Jak długi musi być klucz DKIM

Klucz DKIM da się znaleźć i odczytać, a jego długość warta jest odczytania.

1024 bity były przez lata standardem i wciąż są rozpowszechnione. Za wystarczające już nie uchodzą; zalecane są dziś 2048. Klucz nie jest tajny – połowa publiczna stoi w DNS i każdy może ją pobrać – a klucz możliwy do złamania pozwala obcym wytwarzać podpisy, które się zgadzają.

Jest i drugi powód, dla którego krótkie klucze przetrwały: klucz 2048-bitowy nie mieści się w jednym kawałku we wpisie DNS i trzeba go podzielić. To działa, ale jest krokiem, który bywa pomijany – i stary klucz zostaje.

Należy się tu uczciwa granica. Klucze DKIM leżą pod selektorem, czyli dowolnie wybraną nazwą, a DNS nie daje możliwości wypisania selektorów domeny. Każde sprawdzenie z zewnątrz może tylko przepróbować nazwy używane powszechnie – default, google, selector1, s1 i kilkadziesiąt innych. Domena, której selektora wśród nich nie ma, nie pokaże żadnych kluczy, a to znaczy „tutaj żadnego nie znaleziono”, nigdy „żadnego nie ma”.

Dlaczego większość domen zostaje przy p=none

DMARC jest jedynym z trzech, które może zarządzić odrzucenie, i jest tym, którego większość domen nigdy nie kończy urządzać.

Wpis DMARC zawiera politykę: p=none, p=quarantine albo p=reject. Tylko ostatnia rzeczywiście odprawia wiadomości. p=none znaczy: sprawdzić, zgłosić, mimo to doręczyć.

p=none to właściwy początek. Przychodzą raporty, obraz tego, kto wysyła w imieniu domeny, wypełnia się, a zapomniane systemy wychodzą na jaw – narzędzie do faktur, usługa newslettera, stary sklep, o którym nikt już nie pamiętał. Trwa to kilka tygodni.

Potem następuje krok na quarantine, potem na reject, i właśnie na tym kroku sprawa staje, bo jest on jedynym, który może w widoczny sposób pójść źle. Dopóki polityka stoi na none, wpis istnieje i niczego nie chroni.

Tak powstaje najczęstszy stan w sieci: trzy wpisy, wszystkie poprawne, wszystkie czytelne, wszystkie przechodzą każde powierzchowne sprawdzenie – a sfałszowana wiadomość w imieniu tej domeny i tak dociera.

Co pokazuje pięć minut sprawdzania

Wszystko to jest jawne. SPF, DKIM i DMARC stoją w DNS, dla każdej domeny czytelne dla każdego, a są cztery pytania, które warto zadać o każdą z nich.

Czy istnieje wpis SPF, czy kończy się na -all, czy na ~all, i jak blisko jest granicy dziesięciu zapytań. Czy klucze DKIM dają się znaleźć i jak są długie. Czy istnieje wpis DMARC i co mówi jego polityka. Oraz czy serwery pocztowe domeny są w ogóle osiągalne.

Sprawdzarka uwierzytelniania poczty odpowiada na wszystkie cztery dla dowolnej domeny. Liczy zapytania tak, jak liczy je serwer odbierający, przepróbowuje powszechne selektory DKIM, odczytuje politykę DMARC i wyraźnie mówi, które ustalenia są faktami, a które granicami sprawdzania z zewnątrz.

Użyteczna odpowiedź jest krótka: czy sfałszowana wiadomość w imieniu tej domeny zostałaby odprawiona – czy tylko zauważona.

Pytania i odpowiedzi

Dlaczego sfałszowana wiadomość może przejść SPF, a mimo to nie przejść DMARC?

Bo SPF sprawdza inny adres niż ten, który widać w skrzynce. SPF odnosi się do adresu nadawcy z koperty, podawanego przy przekazaniu wiadomości i widocznego później w wiadomości jako Return-Path. Widoczna linia nadawcy (From) jest od niego niezależna. Fałszerz może więc wpisać do koperty własną domenę z pasującym wpisem SPF, w linii nadawcy umieścić cudzą i przejść sprawdzenie SPF.

DMARC zamyka tę lukę dodatkowym warunkiem, zwanym wyrównaniem (alignment): zaliczone SPF albo DKIM liczy się tylko wtedy, gdy sprawdzana domena zgadza się z domeną w widocznej linii nadawcy. W przypadku DKIM jest to domena podana w podpisie. Wiadomość przechodzi DMARC, gdy co najmniej jedno z dwóch sprawdzeń zakończy się powodzeniem i będzie wyrównane.

Z tego wynika kolejność przejścia na reject. Poczta przekazywana dalej zwykle traci wyrównany wynik SPF, bo doręcza ją teraz inny serwer; podpis DKIM przetrwa przekazanie, dopóki nikt nie zmieni wiadomości. Listy mailingowe, które zmieniają temat albo dodają stopkę, łamią natomiast także podpis. Zanim polityka zostanie zaostrzona, każdy system wysyłający w imieniu domeny powinien więc podpisywać pocztę wyrównanym podpisem DKIM. Raporty z fazy p=none pokazują, gdzie tego jeszcze brakuje.

Czy domena, która w ogóle nie wysyła poczty, potrzebuje tych wpisów?

Właśnie ona. Domenę bez wysyłki da się zablokować bez żadnego ryzyka: wpisem SPF v=spf1 -all, który nie dopuszcza żadnego serwera, i wpisem DMARC z p=reject. Skoro nie istnieje żadna uprawniona wiadomość, żadna nie zostanie odrzucona przez pomyłkę, a tygodnie z p=none są zbędne.

Źródła

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Napisanie komentarza

Doświadczenia z innym sprzętem lub inną wersją oprogramowania oraz pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

Artykuły i kategorie

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Wszystkie artykuły w tej kategorii (16) Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (58) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (37) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Music Production

Wszystkie artykuły w tej kategorii (16) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

SaaS & Internet Earning

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Wszystkie artykuły w tej kategorii (13) Śledź tę kategorię przez RSS