Dlaczego rekordy MX nie mogą wskazywać adresu IP?

89

Rozumiem, że nie należy kierować rekordu MX bezpośrednio na adres IP, ale zamiast tego należy skierować go do Arekordu, który z kolei wskazuje adres IP serwera pocztowego.

Ale w zasadzie dlaczego jest to wymagane?

dayuloli
źródło
Jeśli możesz skonfigurować rekord MX, możesz także skonfigurować rekord A. Nie widzę tutaj problemu.
joshudson
26
@ joshudson To wcale nie jest problem, tylko ja próbuję zrozumieć, dlaczego, a nie po prostu postępować zgodnie z tym, co robią wszyscy inni.
dayuloli
Właśnie próbowałem w CloudFlare. Nie akceptuje adresu IP jako wartości dla rekordu MX.
LinuxBabe,
Nigdy nie przejmowałem się tym, dopóki nie dodałem rekordu SPF i nie miałem zbyt wielu wyszukiwań. Musiałem znaleźć inny sposób na wycięcie.
gbryant

Odpowiedzi:

90

Ideą rekordu MX jest określenie hosta lub hostów, które mogą akceptować pocztę dla domeny. Jak określono w RFC 1035 , rekord MX zawiera nazwę domeny. Musi zatem wskazywać host, który sam może zostać rozwiązany w DNS. Nie można użyć adresu IP, ponieważ byłby interpretowany jako niekwalifikowana nazwa domeny, której nie można rozwiązać.

Przyczyny takiego stanu rzeczy w latach osiemdziesiątych, kiedy specyfikacje zostały pierwotnie napisane, są prawie takie same, jak przyczyny, dla których dzisiaj: host może być podłączony do wielu sieci i używać wielu protokołów.

W latach 80-tych często zdarzało się, że bramy pocztowe łączyły się zarówno z (stosunkowo nowym) Internetem, który korzystał z TCP / IP, jak iz innymi starszymi sieciami, które często używały innych protokołów. Określenie MX w ten sposób dozwolone dla rekordów DNS, które mogą wskazywać, jak dotrzeć do takiego hosta w sieci innej niż Internet, takiej jak Chaosnet . W praktyce jednak prawie nigdy tak się nie stało; praktycznie wszyscy przeprojektowali swoje sieci, aby zamiast tego stały się częścią Internetu.

Obecnie sytuacja jest taka, że ​​do hosta może dotrzeć wiele protokołów (IPv4 i IPv6) i wiele adresów IP w każdym protokole. Pojedynczy rekord MX nie może zawierać więcej niż jednego adresu, więc jedyną opcją jest wskazanie hosta, na którym można następnie wyszukać wszystkie adresy tego hosta. (Aby zoptymalizować wydajność, serwer DNS prześle rekordy adresu dla hosta w dodatkowej sekcji odpowiedzi, jeśli ma dla niego wiarygodne rekordy, oszczędzając podróż w obie strony).

Istnieje również sytuacja, w której wymienniki poczty są dostarczane przez osoby trzecie (np. Google Apps lub Office 365). Wskazujesz rekordy MX na ich nazwy hostów, ale może się zdarzyć, że usługodawca musi zmienić adresy IP serwerów pocztowych. Ponieważ wskazałeś hosta, usługodawca może to zrobić w przejrzysty sposób i nie musisz wprowadzać żadnych zmian w swoich rejestrach.

Michael Hampton
źródło
2
To tak naprawdę nie uniemożliwia zgodności z adresami IP; w rzeczywistości większość serwerów / klientów SMTP działa dobrze z adresami IP w rekordach MX z małego testu, który przeprowadziłem. Myślę, że intencją było zniechęcenie branży do masowego wykorzystywania adresów IP - co jest prawdopodobne, co by się stało, gdyby nie podano tej zasady - zamiast rozpatrywania poszczególnych przypadków. Stąd „powinien”, w przeciwieństwie do „musi”. +1 za wspaniałe informacje. Nigdy nie zastanawiałem się nad większością tego.
Zenexer
16
@Zenexer Przepisy o ruchu drogowym nie istnieją dla niedogodności stosunkowo niewielu ekspertów, którzy dokładnie wiedzą, co jest bezpieczne, a co nie. Istnieją z powodu znacznie większej grupy pieprzonych idiotów, którzy myślą, że wiedzą, co robią, ale nie wiedzą.
Shadur
7
@Zenexer Może się okazać, że określony MTA toleruje go dzisiaj, a jutro nie. W końcu nie jest to zachowanie dozwolone przez standard. I oczywiście nie wszystkie MTA będą go obsługiwać, więc oznacza to, że masz gwarancję utraty poczty.
Michael Hampton
1
@MichaelHampton: Jeśli rekord MX POWINIEN zawierać nazwę hosta zamiast adresu IP, MTA MUSI zaakceptować adres IP. Hipotetycznie, jeśli rekord MX MUSI zawierać nazwę hosta, MTA POWINIEN zaakceptować adres IP. Tak działa RFC. Kontrahent porady w sprawie „POWINNY” może zoptymalizować przy założeniu, że ta rada jest przestrzegana, ale to prawie wszystko, co możesz z tym zrobić.
MSalters
2
@MSalters Myślę, że jesteś zdezorientowany. Nigdy nie powiedziałem, że NALEŻY. Rzeczywiście powiedziałem, że rekord MX MUSI zawierać nazwę hosta, co również mówią RFC.
Michael Hampton
18

DNS jako protokół ma kilka różnych typów wartości, których nie można zamieniać.

Należy zauważyć, że DNS jest protokołem binarnym z ścisłym odwzorowaniem między typem rekordu a typem danych przechowywanych przez taki rekord.

Na przykład: rekord posiada adresu IPv4 (4 bajty danych, stała długość). Rekord posiada adres IPv6 (16 bajtów danych, stała długość).
A
AAAA

Z MXdrugiej strony rekord ma nazwę (ciąg etykiet w formacie <int number of bytes> <label> <int number of bytes> <label> <int 0>, zmienna długość).

To nie jest możliwe za MXrekord mieć adres IP jako jego danych.

Håkan Lindqvist
źródło
Możesz ustawić etykietę jako tekstową reprezentację adresu IP, ale nie ma to sensu, ponieważ nie można go rozpoznać jako nazwy hosta.
Michael Hampton
@MichaelHampton Rzeczywiście, możliwe jest posiadanie nazwy z numerycznymi etykietami, które w normalnej, przyjaznej dla człowieka reprezentacji wyglądają jak adres IPv4 na pierwszy rzut oka. To jednak tak naprawdę nic nie zmienia, jeśli chodzi o pytanie, ponieważ nadal będzie to nazwa, a zatem będzie traktowana jak nazwa (nazwa, która przynajmniej w publicznym Internecie będzie po prostu NXDOMAIN).
Håkan Lindqvist
To tak naprawdę nie odpowiada na pytanie PO. Mówisz w zasadzie „bo tak już jest” .
dr01
@ dr01 Biorąc pod uwagę, że pytanie wyraźnie pokazuje, że nie zdaje sobie sprawy z „tego, jak jest” („nie należy kierować rekordu MX bezpośrednio na adres IP, ale zamiast tego należy skierować go do rekordu A”, gdy w rzeczywistości nie ma możliwości mają jakąkolwiek wartość inną niż nazwa), nie sądzę, że nie jest właściwe wskazywanie, jakie są rzeczy i dlaczego uniemożliwia to jakąkolwiek inną opcję. Mam wrażenie, że dużo czytasz w pytaniu, którego tak naprawdę nie ma.
Håkan Lindqvist
@ dr01 Tj. nie sądzę, że pytanie to brzmi jak pytanie akademickie dotyczące decyzji projektowych we wczesnych dniach DNS lub coś w tym rodzaju, ale po prostu pytanie o to, w jaki sposób MXrekordy istniejące na świecie mogą lub powinny być używane.
Håkan Lindqvist
6

Wyrzucę to jako przypuszczenie. Oczywiście, jestem w domu z grypą, więc może mam bzika.

RFC 974 stwierdza:

Pierwszym krokiem dla mailera w LOCAL jest wydanie zapytania o RR RR dla ZDALNEGO. Zdecydowanie zaleca się, aby ten krok był podejmowany za każdym razem, gdy program pocztowy próbuje wysłać wiadomość. Mamy nadzieję, że zmiany w bazie danych domen będą szybko wykorzystywane przez mailerów, a zatem administratorzy domen będą mogli przekierowywać wiadomości przesyłane do uszkodzonych hostów, po prostu zmieniając swoje bazy danych domen.

Wymagając nazwy zamiast adresu IP, zdecydowanie zachęca do tej praktyki. Nazwy mogą pozostać takie same, aw przypadku równoważenia obciążenia lub odzyskiwania po awarii nie będziesz musiał martwić się o zmianę samego rekordu MX i czekanie na propagację DNS.

TheCleaner
źródło
8
Odpowiedzi na pytania dotyczące wymiany stosów w dniu wolnym od grypy ... Daję ci kapelusz, dobry panie!
Mike B
3

Niektóre serwery poczty e-mail (np. Exim) w szczególności nie zezwalają na wysyłanie do rekordów MX wskazujących czysty adres IP, dlatego musisz użyć nazwy FQDN, aby była zgodna. Jest tak, ponieważ większość serwerów oczekuje, że rekord MX zawiera nazwę hosta, a nie adres IP (do tego służą rekordy A).

Edycja: aby rozwinąć, w DNS każdy rekord ma ścisłe wymagania dotyczące rodzaju danych, które może przechowywać każdy rekord. W przypadku rekordów MX jest to tylko nazwa hosta .

Nathan C.
źródło
Dlaczego więc exim nie pozwolił rekordom MX wskazywać na adres IP? Wydaje mi się dziwne! Rozumiem, że nie powinienem z powodu konwencji, ale nie rozumiem, dlaczego jest to nielegalne .
dayuloli
1
Nie rozumiem, jak jakikolwiek MTA mógłby to obsługiwać, ponieważ MXrekord nie może mieć adresu IP jako wartości.
Håkan Lindqvist
@ HåkanLindqvist Twoja odpowiedź powyżej wyjaśniła mi ten punkt! Dziękuję Ci!
dayuloli
2

Rekordy IN RFC 1025 MX wskazują tylko RR (rekord zasobu) rekordu A lub CNAME.

Tak więc serwer pocztowy wysyłający pocztę prosi o RR rekordu MX, rekord mx wyświetla rekordy A serwerów, serwer poczty wyszukuje do przodu, aby uzyskać rekord A, a następnie przesyła pocztę przez smtp do hosta usługi wymienionego jako serwer pocztowy „chętny” do otrzymywania poczty dla tej domeny.

Twoje pytanie - dlaczego poczta nie może zostać wysłana na adres IP?

Odpowiedź - z powodu zaufania

Wiele obowiązujących zasad dotyczących poczty ewoluowało w celu utrzymania zaufania między domenami, że wiadomości wysyłane tam i z powrotem są rzeczywiście ważne. Wszystko to ma ostatecznie zmniejszyć SPAM.

  • Odwrotne wyszukiwania adresów IP
  • Wyszukiwanie nazwy do przodu w tej sprawie

Wszystkie te niezbędne komponenty, na których można zbudować serwer poczty, mają przynajmniej jakiś niewielki komponent oparty na tworzeniu niezawodnej komunikacji i ograniczeniu niezaufanej komunikacji.

Odniesienie - RFC 1035 i 974

https://www.ietf.org/rfc/rfc1035.txt35

https://www.ietf.org/rfc/rfc974.txt

Obywatel
źródło
2

Celem MXzapisów jest to, że aplikacja (transfer poczty) może dowiedzieć się o używanym hoście. Na poziomie aplikacji należy używać nazw hostów (nie adresów IP).

Ponadto dodanie do DNS wymyślenia rekordu typu wariantu wprowadza powikłanie, a tym samym punkt wejścia dla problemów, wpadek w realizacji, wyzwań związanych z bezpieczeństwem. Na przykład 1.2.3.4.example.com.jest prawidłową nazwą hosta (tak, nawet w świetle RFC1034, 3.5). Określenie tego hosta jako MXpliku konfiguracyjnego powiązania na przykład example.com może wyglądać

.  MX 10  1.2.3.4

i przypuszczalnie taki właśnie powinien być rekord MX z adresem IP. Nawet przeniesienie informacji do datagramu DNS wymaga dziwnych dodatków; najprostszym sposobem byłoby wprowadzenie nowego typu rekordu zasobu, MXApowiedzmy, w celu ujednoznacznienia. Ale z drugiej strony, po co wprowadzać ciężar takiego nowego typu rekordu, kiedy

. MXA 10 5.6.7.8

zawsze można go zastąpić

. MX 10 dummy
dummy A 5.6.7.8

(i będzie obsługiwany także przez klientów DNS, którzy nie wiedzą o MXArekordach)?

Hagen von Eitzen
źródło