Przejdź do treści
correct.email
Infrastruktura pocztowa

Odwrotny DNS (rekord PTR) serwera poczty

Jak działa odwrotny DNS i jego potwierdzenie w przód (FCrDNS), kto ustawia rekord PTR, czego wymaga Gmail i jak naprawić problemy z HELO oraz IPv6.

Autor: Exmoor Software6 min czytania

Gdy Twój serwer łączy się, żeby dostarczyć wiadomość, serwer odbiorcy widzi tylko jego adres IP. Odwrotny DNS zamienia ten adres z powrotem na nazwę, a wielu odbiorców — w tym Gmail — oczekuje, że ta nazwa istnieje i wskazuje z powrotem na ten sam adres.

Ma to znaczenie, jeśli utrzymujesz własny serwer wysyłający: serwer poczty na VPS-ie, lokalny Exchange lub Postfix, serwer aplikacji, który sam dostarcza pocztę. Jeśli wysyłasz przez Google Workspace, Microsoft 365 albo dostawcę usług e-mail, o odwrotny DNS swoich adresów IP dba dostawca.

Jak działa odwrotny DNS

Zapytania odwrotne korzystają ze specjalnych stref DNS. Dla IPv4 jest to in-addr.arpa, w której cztery części adresu zapisuje się w odwrotnej kolejności (RFC 1035, sekcja 3.5). Nazwę przechowuje rekord PTR:

25.2.0.192.in-addr.arpa.  3600  IN  PTR  mail.example.com.

To wpis odwrotny dla 192.0.2.25. Dla IPv6 strefą jest ip6.arpa, a nazwę buduje się z każdej cyfry szesnastkowej (półbajtu) pełnego adresu, w odwrotnej kolejności (RFC 3596, sekcja 2.5). Dla 2001:db8::25:

5.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.  IN  PTR  mail.example.com.

Rzadko trzeba pisać te nazwy ręcznie: dig -x i narzędzie Odwrotny DNS (PTR) budują je za Ciebie.

Kto zarządza rekordem PTR

Nie Ty — a przynajmniej nie przez DNS Twojej domeny. Strefa odwrotna adresu należy do tego, kto dysponuje pulą adresów: do Twojego dostawcy hostingu lub chmury albo do operatora internetu. Rekord PTR dodany w strefie example.com niczego nie zmienia.

Jak go ustawić:

  • Dostawcy hostingu i chmury zwykle mają pole „reverse DNS” lub „PTR” w ustawieniach serwera albo adresu IP, ewentualnie ustawiają rekord na prośbę zgłoszoną do pomocy technicznej. Najpierw utwórz rekord A/AAAA dla wybranej nazwy, żeby para była kompletna, gdy tylko pojawi się PTR.
  • Własna pula adresów — strefa odwrotna jest delegowana do Ciebie i publikujesz w niej rekordy PTR jak każde inne. Pule mniejsze niż /24 można delegować techniką z rekordami CNAME opisaną w RFC 2317.
  • Łącza domowe i adresy dynamiczne mają zwykle stałą, ogólną nazwę, której nie zmienisz. Nie wysyłaj z nich poczty bezpośrednio — użyj serwera pośredniczącego (relay).

Potwierdzenie w przód (FCrDNS)

Kto kontroluje pulę adresów IP, może wpisać w jej rekordach PTR dowolną nazwę — także mail.bank.example. Dlatego odbiorcy nie ufają samej nazwie z PTR i sprawdzają ją w obu kierunkach:

  1. Odczytują rekord PTR adresu, z którego przyszło połączenie → mail.example.com.
  2. Odczytują rekordy A (lub AAAA) tej nazwy.
  3. Lista adresów musi zawierać pierwotny adres IP.

Jeśli krok 3 się powiedzie, nazwa jest potwierdzona w przód (forward-confirmed reverse DNS, FCrDNS): właściciel domeny zgadza się, że ten serwer nosi jego nazwę. Z terminala:

$ dig +short -x 192.0.2.25
mail.example.com.
$ dig +short A mail.example.com
192.0.2.25

W systemie Windows użyj Resolve-DnsName 192.0.2.25, a potem Resolve-DnsName mail.example.com.

Łańcuch najczęściej rwie się z dwóch powodów: serwer dostał nowy adres IP i zaktualizowano tylko jeden kierunek albo nazwa z PTR w ogóle nie ma rekordu A. Rekord PTR powinien też wskazywać nazwę z własnym rekordem A/AAAA, a nie alias: RFC 1912 mówi, że rekordy PTR muszą wskazywać poprawny rekord A, a nie nazwę zdefiniowaną przez CNAME.

Czego wymaga Gmail

Wytyczne Google dla nadawców wymieniają odwrotny DNS wśród wymagań dla wszystkich nadawców, nie tylko masowych: domeny lub adresy IP, z których wysyłasz, muszą mieć poprawne rekordy DNS w przód i odwrotne (PTR). Część o infrastrukturze precyzuje to tak:

  • publiczny adres IP serwera wysyłającego musi mieć rekord PTR wskazujący nazwę hosta;
  • ta nazwa musi mieć rekord A (IPv4) lub AAAA (IPv6) wskazujący ten sam adres IP;
  • rekordy PTR powinny wskazywać Twoją domenę.

Najważniejszą zasadę Google zapisuje jednym zdaniem: adres IP, z którego wysyłasz, musi być zgodny z adresem IP nazwy hosta podanej w rekordzie PTR. Inni dostawcy skrzynek publikują własne wymagania — zob. Wymagania Gmaila, Yahoo i Outlook.com dla nadawców.

Spójna nazwa w HELO

Na początku każdej sesji SMTP serwer wysyłający przedstawia się poleceniem EHLO (albo starszym HELO) i nazwą. RFC 5321 wymaga, by była to — o ile to możliwe — podstawowa nazwa hosta serwera, czyli pełna nazwa (FQDN) wskazująca adres, a w przeciwnym razie literał adresu, np. [192.0.2.25].

Serwer odbiorcy może sprawdzić, czy nazwa z EHLO pasuje do adresu IP połączenia, ale RFC 5321 zabrania odrzucania wiadomości wyłącznie z tego powodu. Odbiorcy korzystają z niej jednak inaczej:

  • SPF można sprawdzać także dla nazwy z HELO (RFC 7208, sekcja 2.3 to zaleca), a dla odbić, które mają pusty adres nadawcy z koperty, SPF używa nazwy z HELO jako domeny nadawcy.
  • Nazwa w rodzaju localhost, wewnętrzne server01.local albo nazwa, która się nie rozwiązuje, to oczywisty znak źle skonfigurowanego serwera.

Najprostsza konfiguracja używa jednej nazwy w trzech miejscach: w rekordzie PTR, w rekordzie A/AAAA i w powitaniu EHLO. W Postfiksie nazwa z EHLO pochodzi z parametru myhostname. Opublikuj też rekord SPF dla tej nazwy hosta:

mail.example.com.            IN  A    192.0.2.25
mail.example.com.            IN  TXT  "v=spf1 a -all"
25.2.0.192.in-addr.arpa.     IN  PTR  mail.example.com.

Unikaj nazw generycznych

Dostawcy często nadają każdemu adresowi domyślną nazwę utworzoną z adresu IP, np. 203-0-113-25.static.hosting.example albo host-203-0-113-25.pool.isp.example. Taka nazwa może nawet przejść potwierdzenie w przód, ale nie wskazuje Twojej domeny, jak zaleca Google, i przypomina nazwy łączy klientów indywidualnych. Filtry antyspamowe mogą ją tak właśnie potraktować.

Wybierz prostą, opisową nazwę we własnej domenie — mail.example.com, smtp1.example.com — ustaw ją jako PTR i utwórz pasujący rekord A/AAAA.

Szczegóły IPv6

Przy IPv6 odwrotny DNS psuje się najczęściej, bo łatwo o nim zapomnieć:

  • Serwer może wysyłać przez IPv6, choć o tym nie wiesz. Jeśli ma adres IPv6, a serwer MX odbiorcy ma rekord AAAA, połączenie może pójść właśnie przez IPv6. Wtedy adres IPv6 potrzebuje własnych rekordów PTR i AAAA — poprawna konfiguracja IPv4 nic tu nie pomoże. Gmail zgłasza ten problem błędem w rodzaju 550 5.7.1 This message does not meet IPv6 sending guidelines regarding PTR records and authentication.
  • Poczta musi wychodzić z adresu, dla którego ustawiono PTR. Serwer może mieć kilka adresów IPv6, a część z nich jest generowana automatycznie. Przypisz serwer poczty do stałego adresu (w Postfiksie smtp_bind_address6) i ustaw PTR dokładnie dla niego.
  • Nie da się ustawić PTR dla IPv6? Skonfiguruj serwer poczty tak, żeby wysyłał tylko przez IPv4 (w Postfiksie inet_protocols = ipv4), dopóki nie będzie to możliwe.
  • Nie zapomnij o SPF. Adres IPv6 też musi być autoryzowany, np. przez ip6:2001:db8::25.

Każdy adres wysyłający potrzebuje własnego PTR

Każdy adres, z którego może wychodzić Twoja poczta, potrzebuje rekordu PTR i pasującego rekordu w przód — RFC 1912 mówi to samo o hostach z wieloma adresami. DNS dopuszcza kilka rekordów PTR dla jednego adresu, ale jedną nazwę najłatwiej utrzymać w zgodzie z rekordem A i nazwą z EHLO.

Jak sprawdzić

  1. Ustal adres, z którego naprawdę wychodzi poczta. Wyślij wiadomość na zewnętrzną skrzynkę, otwórz jej oryginał i znajdź najwyższy nagłówek Received dodany przez serwer odbiorcy. Widać w nim adres IP połączenia, zwykle nazwę, którą odbiorca dla niego znalazł, i nazwę z EHLO użytą przez Twój serwer. Analizator nagłówków e-mail pokazuje to dla każdego etapu trasy.
  2. Uruchom narzędzie Odwrotny DNS (PTR) dla tego adresu. Pokaże nazwę z PTR i to, czy zapytanie w przód o tę nazwę zwraca ten sam adres.
  3. Powtórz dla IPv6, jeśli serwer ma adres IPv6.

Najczęstsze problemy i ich naprawa

ObjawPrawdopodobna przyczynaRozwiązanie
Brak rekordu PTRDostawca domyślnie go nie ustawiaUstaw PTR w panelu dostawcy lub poproś o to pomoc techniczną
PTR jest, ale zapytanie w przód nie zwraca adresu IPBrak rekordu A/AAAA albo wskazuje inny adresDodaj lub popraw rekord A/AAAA dla nazwy z PTR
Przez IPv4 działa, przez IPv6 Gmail odrzucaBrak PTR dla adresu IPv6Ustaw PTR i AAAA dla IPv6 albo wysyłaj tylko przez IPv4
PTR wygląda jak 203-0-113-25.pool…Domyślna nazwa dostawcyUstaw nazwę we własnej domenie
PTR dodany, nic się nie zmieniłoRekord dodany w strefie własnej domenyLiczy się tylko strefa odwrotna właściciela adresu IP
EHLO pokazuje localhost lub nazwę wewnętrznąNie ustawiono nazwy hosta serweraUstaw nazwę hosta serwera poczty na nazwę z PTR

Po każdej zmianie pamiętaj, że resolwery mogą zwracać starą odpowiedź, dopóki nie minie TTL rekordu.

Źródła