Przejdź do treści
correct.email
Infrastruktura pocztowa

Null MX: jak ogłosić, że domena nie przyjmuje poczty

Czym jest rekord null MX (RFC 7505), dlaczego jest lepszy niż brak rekordu MX, jak reagują na niego serwery poczty i jak połączyć go z SPF i DMARC.

Autor: Exmoor Software5 min czytania

Null MX to jeden rekord DNS, który mówi: „ta domena nie przyjmuje poczty e-mail”. Definiuje go RFC 7505 z 2015 roku. To właściwy wybór dla domen zaparkowanych, domen służących tylko stronie internetowej i nazw takich jak www, na które poczta nigdy nie powinna przychodzić.

Jak wygląda

example.com.  3600  IN  MX  0  .

Null MX to rekord MX z priorytetem (preference) 0 i serwerem docelowym . — nazwą o zerowej długości, czyli korzeniem DNS. RFC 7505 (sekcja 3) definiuje go jako jedyny rekord MX domeny. Ponieważ . nie jest poprawną nazwą hosta, nie da się go pomylić z prawdziwym serwerem poczty.

Dlaczego nie wystarczy brak rekordu MX?

Bo „brak MX” nie oznacza „brak poczty”. Gdy domena nie ma rekordów MX, RFC 5321, sekcja 5.1 każe nadawcom potraktować samą domenę jako niejawny MX (implicit MX) i dostarczać pocztę na jej adres z rekordu A lub AAAA — zwykle na serwer WWW.

Dalej jest już tylko marnowanie czasu:

  • Jeśli pod tym adresem nic nie nasłuchuje na porcie 25, serwer nadawcy nie może się połączyć i ponawia próby. RFC 7505 zauważa, że trwa to zwykle około tygodnia, zanim nadawca się podda i powiadomi autora wiadomości.
  • Jeśli serwer WWW ma jednak usługę SMTP, jak w niektórych konfiguracjach hostingowych, może przyjmować pocztę, której nikt nie czyta.

Przy null MX serwer nadawcy już przy pierwszej próbie dowiaduje się, że domena nie przyjmuje poczty, i od razu zgłasza błąd doręczenia. Ktoś, kto pomylił adres — przykład z RFC 7505 to alice@www.example.com zamiast alice@example.com — dostaje odbicie po kilku sekundach, a nie po kilku dniach.

Poczta do domeny, która w ogóle nie istnieje, i tak szybko kończy się błędem: RFC 5321 wymaga, by nieistniejącą domenę zgłosić jako błąd. Problem dotyczy właśnie nazw, które istnieją — zwykle dlatego, że mają rekordy A lub AAAA dla strony internetowej.

Jak serwery poczty go obsługują

RFC 7505 przypisuje dwa kody statusu:

SytuacjaKod odpowiedziRozszerzony kod statusuZnaczenie
Domena odbiorcy ma null MX5565.1.10Recipient address has null MX
Domena nadawcy (koperta MAIL FROM lub nagłówek From) ma null MX5505.7.27Sender address has null MX

Pierwszy kod zobaczy w odbiciu osoba, która napisała na taką domenę. Sam kod 556 pochodzi z RFC 7504 i oznacza „domena nie przyjmuje poczty”.

Drugi ma znaczenie przy podszywaniu się. Serwer odbiorcy może odrzucić pocztę podającą się za wysłaną z domeny z null MX, bo żadne odbicie ani odpowiedź nigdy do niej nie wrócą. RFC 7505 zaleca kod, którego należy użyć; o tym, czy odrzucać, decyduje odbiorca.

Serwery, które nie implementują RFC 7505, również nie znajdą adresu dla .. Zgodnie z RFC 5321, gdy rekordy MX istnieją, ale żaden nie nadaje się do użycia, należy zgłosić błąd — wiadomość i tak nie zostanie dostarczona. Różnica polega na tym, jak szybko i jak czytelnie nadawca się o tym dowie.

Nie publikuj null MX w domenie, która wysyła pocztę

RFC 7505 (sekcja 4.2) mówi, że systemy poczty nie powinny publikować null MX dla domen używanych w adresie nadawcy z koperty (MAIL FROM) ani w nagłówku From. Wielu odbiorców odrzuca pocztę, której adres zwrotny nie może przyjąć odbić, i może do tego użyć wspomnianego kodu 5.7.27.

Null MX nie nadaje się więc dla:

  • domeny „no-reply”, z której aplikacja wysyła powiadomienia;
  • subdomeny odbić (return-path) używanej przez Twoją usługę pocztową, np. bounce.example.com — odbicia muszą do niej docierać;
  • żadnej subdomeny, z której wysyłasz newslettery albo pocztę transakcyjną.

Jeśli domena wysyła pocztę, ale nie powinna dostawać odpowiedzi, zostaw działający MX, a przychodzące wiadomości usuwaj na serwerze albo odpowiadaj na nie automatycznie.

Komplet dla domeny, która ani nie wysyła, ani nie odbiera

Null MX dotyczy tylko poczty przychodzącej. Żeby nikt nie wysyłał poczty w imieniu domeny, dodaj SPF i DMARC. Sam RFC 7505 wskazuje rekord SPF -all dla domen, które nie wysyłają poczty.

parked.example.          3600  IN  MX   0 .
parked.example.          3600  IN  TXT  "v=spf1 -all"
_dmarc.parked.example.   3600  IN  TXT  "v=DMARC1; p=reject;"
  • v=spf1 -all — żaden serwer nie jest upoważniony do wysyłania poczty z tej domeny (zob. Co to jest SPF).
  • p=reject — odbiorcy stosujący DMARC powinni odrzucać pocztę z tą domeną w nagłówku From. Według RFC 9989 polityka obejmuje też subdomeny, chyba że sp lub np mówią inaczej. Dodaj rua=, jeśli chcesz dostawać raporty o tym, kto próbuje używać domeny.
  • Żadnych kluczy DKIM. Bez opublikowanego klucza żaden podpis tej domeny nie przejdzie weryfikacji.

Więcej o tej konfiguracji i o domenach zaparkowanych w ogóle przeczytasz w poradniku Domeny bez poczty.

Subdomeny potrzebują własnego null MX

Rekordy MX nie są dziedziczone. www.example.com z rekordem A dla strony internetowej ma niejawny MX jak każda inna nazwa z adresem — nawet jeśli samo example.com ma prawidłowe rekordy MX. Jeśli poczta na takie nazwy ma od razu kończyć się błędem, daj im własny null MX:

www.example.com.  3600  IN  A   203.0.113.10
www.example.com.  3600  IN  MX  0 .

Dwa szczegóły:

  • Rekord wieloznaczny (wildcard) tu nie pomoże. *.example.com. MX 0 . działa tylko dla nazw, które w strefie nie istnieją, a www istnieje.
  • Obok rekordu CNAME nie może być innych rekordów. Jeśli www jest aliasem, nie dodasz pod tą nazwą rekordu MX. Wyszukiwanie serwera poczty podąża wtedy za aliasem (RFC 5321, sekcja 5.1), a wynik zależy od rekordów nazwy docelowej.

Typowe błędy

Null MX obok innych rekordów MX. RFC 7505 mówi, że domena publikująca null MX nie może publikować żadnego innego rekordu MX. Takie połączenie zwykle zostaje po migracji albo pojawia się, gdy panel DNS dodaje rekordy domyślne. RFC nie określa, co nadawcy mają z nim zrobić, więc wyniki bywają różne. Zdecyduj, czy domena odbiera pocztę, i zostaw albo prawdziwe rekordy MX, albo null MX — nie oba naraz.

Priorytet inny niż 0. MX 10 . nie jest null MX w postaci zdefiniowanej w RFC 7505, a oprogramowanie, które sprawdza dokładnie tę postać, go nie rozpozna. Użyj 0.

Zastępowanie kropki czymś innym. Jeśli panel DNS nie przyjmuje samej . jako celu, nie wpisuj zamiast niej nazwy domeny ani @: @ oznacza samą strefę, więc MX 0 @ kieruje pocztę na adres domeny — w praktyce to ten sam niejawny MX, którego chcesz uniknąć. Zapytaj dostawcę DNS, jak wprowadzić null MX.

Stare obejścia. Przed RFC 7505 administratorzy kierowali rekordy MX na localhost albo na nieistniejącą nazwę hosta. Takie rekordy nie dają nadawcom jasnej odpowiedzi i zamiast natychmiastowego, jednoznacznego błędu powodują opóźnienia i mylące komunikaty. Zastąp je rekordem null MX.

Poleganie wyłącznie na null MX. Nie mówi on nic o wysyłaniu. Bez SPF i DMARC sfałszowana poczta „z” tej domeny nadal może zostać dostarczona — odrzucanie jej z powodu null MX jest dla odbiorców opcjonalne.

Sprawdź swoje rekordy

Wyszukiwanie MX rozpoznaje null MX i ostrzega, gdy towarzyszą mu inne rekordy MX albo gdy ma priorytet inny niż 0. Z terminala:

$ dig +short MX parked.example
0 .

W systemie Windows:

Resolve-DnsName parked.example -Type MX

Następnie uruchom dla tej samej domeny sprawdzanie SPF i sprawdzanie DMARC, żeby potwierdzić, że wysyłanie też jest zamknięte.

Źródła