Przejdź do treści
correct.email
Uwierzytelnianie poczty

Jak chronić domeny, które nie wysyłają poczty

Zabezpiecz domeny zaparkowane i używane tylko dla WWW: SPF -all, DMARC p=reject, null MX, opcjonalne unieważnienie kluczy DKIM i subdomeny (sp, np).

Autor: Exmoor Software6 min czytania

Większość organizacji ma domeny, z których nikt nie wysyła poczty: rejestracje obronne literówek i dawnych nazw marek, domeny kupione na jedną kampanię, domeny, pod którymi działa wyłącznie strona WWW. Nikt ich nie pilnuje, a bez odpowiednich rekordów DNS odbiorca nie ma jak rozpoznać, że wiadomość podająca się za nadaną z takiej domeny jest fałszywa. M3AAWG zwraca uwagę, że szczególnie łakomym kąskiem dla oszustów są domeny łudząco podobne do znanych.

Kilka rekordów DNS mówi wprost: „ta domena nie wysyła ani nie odbiera poczty”. Nic nie kosztują i prawie nie wymagają utrzymania.

Rekordy w skrócie

Dla domeny example.net, która nigdy nie wysyła ani nie odbiera poczty:

example.net.          3600  IN  MX   0 .
example.net.          3600  IN  TXT  "v=spf1 -all"
_dmarc.example.net.   3600  IN  TXT  "v=DMARC1; p=reject"

Opcjonalnie dochodzi wieloznaczny rekord unieważniający klucze DKIM i adres dla raportów DMARC. Kolejne sekcje omawiają każdy rekord i to, jak objąć ochroną subdomeny.

SPF: nikt nie może wysyłać

v=spf1 -all zawiera jeden mechanizm, all z kwalifikatorem - (fail). all pasuje do każdego serwera wysyłającego, więc każdy serwer dostaje wynik fail. RFC 7505 wskazuje właśnie ten rekord jako sposób, w jaki domena niewysyłająca poczty może to jednoznacznie zadeklarować.

SPF nie jest dziedziczony: sprawdzenie dla shop.example.net dotyczy tylko shop.example.net. Opublikuj rekord pod każdą istniejącą nazwą albo dodaj rekord wieloznaczny, jak proponuje M3AAWG:

*.example.net.        3600  IN  TXT  "v=spf1 -all"

Rekord wieloznaczny działa tylko dla nazw, które nie mają w strefie żadnych własnych rekordów. Nazwa z własnymi rekordami — np. www.example.net z rekordem A — nie dostanie wieloznacznego TXT, więc potrzebuje własnego v=spf1 -all.

DMARC: odrzucaj wszystko

Skoro SPF nikogo nie autoryzuje, a żaden klucz DKIM nie jest używany, żadna wiadomość nie może uzyskać dla tej domeny zgodnego wyniku pass z SPF ani z DKIM. Każda wiadomość z example.net w nagłówku From nie przechodzi więc DMARC, a p=reject prosi odbiorców o jej odrzucenie.

Ponieważ sp domyślnie przyjmuje wartość p, a np — wartość sp, a potem p (RFC 9989), ten jeden tag obejmuje także subdomeny. Niektóre wytyczne, na przykład brytyjskiego rządu, dopisują jawnie sp=reject i ścisłą zgodność domen (adkim=s; aspf=s) — to nie szkodzi. Odbiorcy, którzy wciąż stosują RFC 7489, nie znają np, ale wracają do sp lub p, a te również nakazują odrzucenie.

p=reject to stanowcza prośba, a nie polecenie. RFC 9989 każe odbiorcom brać pod uwagę także inne przesłanki przed odrzuceniem, a niektórzy zamiast tego przenoszą takie wiadomości do spamu.

Raporty są opcjonalne

M3AAWG uznaje tag rua dla domen zaparkowanych za opcjonalny: nie ma tu prawidłowej poczty, której dostarczanie trzeba by naprawiać, choć raporty pokazują, ile nadużyć udaje się zatrzymać. Jeśli chcesz je dostawać, adres musi być w domenie, która przyjmuje pocztę — nie w zaparkowanej domenie z null MX. Adres raportów spoza domeny organizacyjnej domeny zaparkowanej musi zostać autoryzowany przez domenę, która te raporty odbiera (RFC 9990, sekcja 4):

_dmarc.example.net.                       IN  TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"
example.net._report._dmarc.example.com.   IN  TXT  "v=DMARC1"

Rekord wieloznaczny *._report._dmarc.example.com autoryzuje raporty dla wszystkich Twoich zaparkowanych domen naraz — ale też dla każdej innej domeny, która wpisze Twój adres, więc używaj go tylko wtedy, gdy chcesz przyjmować także takie raporty. Sprawdzanie DMARC pokazuje, czy każdy adres raportów jest autoryzowany.

Wiele zaparkowanych domen

M3AAWG pokazuje, jak zarządzać dziesiątkami domen z jednego miejsca: każda nazwa _dmarc wskazuje rekordem CNAME wspólny rekord.

_dmarc.example.net.          IN  CNAME  _dmarc.parked.example.com.
_dmarc.example.org.          IN  CNAME  _dmarc.parked.example.com.
_dmarc.parked.example.com.   IN  TXT    "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"

Każda zaparkowana domena nadal potrzebuje własnego rekordu autoryzacji w domenie raportów albo rekordu wieloznacznego.

Null MX: poczta nie wchodzi

example.net.  3600  IN  MX  0 .

Null MX (RFC 7505) to pojedynczy rekord MX z priorytetem 0 i samą kropką jako nazwą serwera. Musi być jedynym rekordem MX domeny.

Bez niego serwer nadawcy wiadomości zaadresowanej do tej domeny sięga po jej rekord A lub AAAA i — jeśli nie odpowiada tam żaden serwer pocztowy — ponawia próby, według RFC 7505 zwykle przez tydzień. Z null MX doręczenie kończy się błędem od razu; RFC 7505 zaleca kod 556 z rozszerzonym statusem 5.1.10. Odbiorcy mogą też odrzucać pocztę, w której domena nadawcy z koperty lub domena z From ma null MX (550 ze statusem 5.7.27). Dlatego RFC 7505 zaleca, by nie publikować go dla domen, z których wysyłasz pocztę.

Dla subdomen M3AAWG proponuje rekord wieloznaczny *.example.net. MX 0 .. Niektóre panele DNS nie pozwalają utworzyć null MX; jeśli Twój nie pozwala, po prostu pomiń rekord MX — SPF i DMARC nadal chronią domenę przed podszywaniem się. Wynik sprawdzisz narzędziem Wyszukiwanie MX.

Bez skrzynek nie działają też adresy postmaster@ i abuse@. M3AAWG proponuje podać kontakt w rekordzie SOA strefy, żeby nadal dało się dotrzeć do osoby odpowiedzialnej za domenę. Więcej o samym rekordzie w poradniku Null MX: jak ogłosić, że domena nie przyjmuje poczty.

DKIM: nic nie publikuj albo jawnie unieważnij

Są dwa podejścia i oba dają ten sam wynik DMARC:

  • Nie publikuj nic. M3AAWG zaleca brak jakichkolwiek rekordów DKIM dla domen zaparkowanych: podrobionego podpisu z tą domeną nie da się zweryfikować, bo klucz nie istnieje.
  • Unieważnij wszystko rekordem wieloznacznym. Wytyczne brytyjskiego rządu zalecają opublikowanie pustego klucza dla każdego selektora i unieważnienie wszystkich istniejących selektorów, zarówno rekordów TXT, jak i CNAME:
*._domainkey.example.net.  3600  IN  TXT  "v=DKIM1; p="

Puste p= oznacza klucz unieważniony (RFC 6376), więc każdy selektor wybrany przez fałszerza zwraca jednoznaczną odpowiedź „unieważniony” zamiast „brak klucza”.

W obu przypadkach poszukaj pozostałości. Selektory opublikowane jawnie mają pierwszeństwo przed rekordem wieloznacznym, a CNAME, który wciąż wskazuje klucz byłego dostawcy, to ważny klucz podpisujący, który kontroluje ktoś inny. Usuń je albo unieważnij. Gdy rekord wieloznaczny jest na miejscu, Sprawdzanie DKIM powinno dla dowolnego zmyślonego selektora zgłosić klucz unieważniony.

Subdomeny: sp, np i nazwy tylko dla WWW

Te same zasady chronią niewysyłające części domeny, która pocztę wysyła. Załóżmy, że example.com wysyła e-maile, a www.example.com i shop.example.com obsługują tylko strony WWW.

  • Każda istniejąca subdomena, która nie wysyła poczty, dostaje własne v=spf1 -all, a ponieważ ma rekord A — także null MX (to przykład M3AAWG dla nazw używanych tylko przez WWW).
  • Jej polityka DMARC pochodzi z rekordu example.com, z tagu sp (lub p). Jeśli example.com ma jeszcze p=none, opublikuj osobny rekord, na przykład _dmarc.www.example.com z p=reject; odbiorcy najpierw szukają rekordu samej subdomeny.
  • Subdomeny, które nie istnieją, obejmuje np. Oszuści lubią zmyślone nazwy w rodzaju faktury.example.com, a np=reject odrzuca je nawet wtedy, gdy p ma jeszcze wartość quarantine:
_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=quarantine; np=reject; rua=mailto:dmarc-reports@example.com"

Dla DMARC nazwa nie istnieje wtedy, gdy DNS odpowiada na zapytanie o nią NXDOMAIN — co oznacza też, że nie istnieje nic pod nią (RFC 9989, sekcja 3.2.13). Rekord wieloznaczny sprawia więc, że „istnieje” każda nazwa: jeśli masz w strefie rekordy *.example.com, np nigdy nie zadziała i decyduje sp. Tag np jest nowy w RFC 9989 (pochodzi z RFC 9091); odbiorcy stosujący jeszcze RFC 7489 go ignorują i używają sp lub p.

Zanim zablokujesz domenę

  • Upewnij się, że naprawdę nic z niej nie wychodzi. Stare systemy fakturowe, formularze kontaktowe na stronie i automatyczne powiadomienia potrafią używać zapomnianej domeny w From. Autoodpowiedzi i przekazywanie poczty ze skrzynek w tej domenie to też wysyłanie. Jeśli nie masz pewności, opublikuj najpierw na kilka tygodni p=none z adresem rua i przeczytaj raporty — zobacz Jak czytać raporty zbiorcze DMARC.
  • Domena, która odbiera, ale nie wysyła, to inny przypadek. Jeśli domena przyjmuje pocztę — np. alias przekazywany do głównej skrzynki — zostaw jej MX i nie publikuj null MX. v=spf1 -all i p=reject nadal pasują, o ile nic nie jest wysyłane z tą domeną w From ani w adresie nadawcy z koperty.

Sprawdź efekt

  1. Wyszukiwanie MX: domena ma null MX i nic poza nim.
  2. Sprawdzanie SPF: jeden poprawny rekord, v=spf1 -all.
  3. Sprawdzanie DMARC: p=reject, polityki obowiązujące dla subdomen i autoryzowane adresy raportów.
  4. Sprawdzanie DKIM: dla zmyślonego selektora klucz unieważniony, jeśli używasz rekordu wieloznacznego; brak selektorów pozostałych po dawnych usługach.

Pełne wdrożenie DMARC dla domen, które wysyłają pocztę, opisuje poradnik Jak poprawnie skonfigurować DMARC.

Źródła