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:
- Odczytują rekord PTR adresu, z którego przyszło połączenie →
mail.example.com. - Odczytują rekordy A (lub AAAA) tej nazwy.
- 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ętrzneserver01.localalbo 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ć
- 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
Receiveddodany 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. - 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.
- Powtórz dla IPv6, jeśli serwer ma adres IPv6.
Najczęstsze problemy i ich naprawa
| Objaw | Prawdopodobna przyczyna | Rozwiązanie |
|---|---|---|
| Brak rekordu PTR | Dostawca domyślnie go nie ustawia | Ustaw PTR w panelu dostawcy lub poproś o to pomoc techniczną |
| PTR jest, ale zapytanie w przód nie zwraca adresu IP | Brak rekordu A/AAAA albo wskazuje inny adres | Dodaj lub popraw rekord A/AAAA dla nazwy z PTR |
| Przez IPv4 działa, przez IPv6 Gmail odrzuca | Brak PTR dla adresu IPv6 | Ustaw PTR i AAAA dla IPv6 albo wysyłaj tylko przez IPv4 |
PTR wygląda jak 203-0-113-25.pool… | Domyślna nazwa dostawcy | Ustaw nazwę we własnej domenie |
| PTR dodany, nic się nie zmieniło | Rekord dodany w strefie własnej domeny | Liczy się tylko strefa odwrotna właściciela adresu IP |
EHLO pokazuje localhost lub nazwę wewnętrzną | Nie ustawiono nazwy hosta serwera | Ustaw 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
- Google — Email sender guidelines
- RFC 1035 — Domain Names: Implementation and Specification (sekcja 3.5: domena IN-ADDR.ARPA)
- RFC 3596 — DNS Extensions to Support IP Version 6 (sekcja 2.5: domena IP6.ARPA)
- RFC 2317 — Classless IN-ADDR.ARPA delegation
- RFC 1912 — Common DNS Operational and Configuration Errors (sekcja 2.1)
- RFC 5321 — Simple Mail Transfer Protocol (sekcja 4.1.4: EHLO)
- RFC 7208 — Sender Policy Framework (sekcja 2.3: tożsamość HELO)