Perché i record MX non possono puntare a un indirizzo IP?


89

Sono consapevole che non dovresti indirizzare direttamente un record MX a un indirizzo IP, ma dovresti invece puntarlo a un Arecord che, a sua volta, punta all'indirizzo IP del tuo server di posta.

Ma, in linea di principio, perché è necessario?


Se è possibile impostare un record MX, è anche possibile impostare un record A. Non vedo il problema qui.
joshudson,

26
@joshudson Non è affatto un problema, solo io sto cercando di capire perché piuttosto che seguire semplicemente quello che fanno tutti gli altri.
dayuloli,

Ho appena provato in CloudFlare. Non accetta l'indirizzo IP come valore per il record MX.
LinuxBabe,

Non me ne sono mai preoccupato fino a quando non ho aggiunto un record SPF e ho avuto troppe ricerche. Ho dovuto trovare un modo diverso di ritagliarne un po '.
Gbryant,

Risposte:


90

L'idea alla base del record MX è quella di specificare un host o host che possono accettare la posta per un dominio. Come specificato in RFC 1035 , il record MX contiene un nome di dominio. Deve quindi puntare a un host che può essere risolto da solo nel DNS. Non è stato possibile utilizzare un indirizzo IP poiché sarebbe interpretato come un nome di dominio non qualificato, che non può essere risolto.

Le ragioni di ciò negli anni '80, quando le specifiche sono state scritte originariamente, sono quasi le stesse delle ragioni che lo hanno oggi: un host può essere collegato a più reti e utilizzare più protocolli.

Negli anni '80, non era raro avere gateway di posta che si collegavano sia alla (relativamente nuova) Internet che utilizzava TCP / IP sia ad altre reti legacy, che spesso utilizzavano altri protocolli. Specificare MX in questo modo consentiva record DNS che potessero identificare come raggiungere un tale host su una rete diversa da Internet, come Chaosnet . In pratica, tuttavia, ciò non è quasi mai accaduto; praticamente tutti hanno riprogettato le proprie reti per diventare invece parte di Internet.

Oggi, la situazione è che un host può essere raggiunto da più protocolli (IPv4 e IPv6) e da più indirizzi IP in ciascun protocollo. Un singolo record MX non può elencare più di un indirizzo, quindi l'unica opzione è quella di puntare a un host, dove è possibile cercare tutti gli indirizzi di quell'host. (Come ottimizzazione delle prestazioni, il server DNS invierà insieme i record di indirizzo per l'host nella sezione aggiuntiva di risposta se dispone di record autorevoli per loro, salvando un round trip.)

C'è anche la situazione che si verifica quando i tuoi scambiatori di posta sono forniti da terze parti (ad esempio Google Apps o Office 365). Puntare i record MX sui loro nomi host, ma può accadere che il fornitore di servizi debba modificare gli indirizzi IP dei server di posta. Poiché hai indicato un host, il fornitore di servizi può farlo in modo trasparente e non è necessario apportare modifiche ai tuoi record.


2
Ciò non impedisce in realtà la compatibilità con gli indirizzi IP; in effetti, la maggior parte dei server / client SMTP funzionano bene con gli indirizzi IP nei record MX dei piccoli test che ho fatto. Penso che l'intenzione fosse quella di scoraggiare l'industria dall'utilizzare gli indirizzi IP in massa - il che è probabilmente cosa sarebbe accaduto, se tale regola non fosse stata dichiarata - piuttosto che caso per caso. Quindi, "dovrebbe", al contrario di "deve". +1 per le informazioni fantastiche, però. Non ne avevo mai preso in considerazione la maggior parte.
Zenexer,

16
@Zenexer Le leggi sul traffico non esistono per l'inconveniente di relativamente pochi conducenti esperti che sanno esattamente cosa è sicuro e cosa no. Esistono a causa del sottogruppo molto più vasto di fottuti idioti che pensano di sapere cosa stanno facendo ma non lo fanno.
Shadur,

7
@Zenexer Potresti scoprire che un determinato MTA lo tollera oggi, e non domani. Dopotutto, non è un comportamento consentito dalla norma. E, naturalmente, non tutti gli MTA lo supporteranno, quindi ciò significa che si è sicuri di perdere la posta.
Michael Hampton

1
@MichaelHampton: se un record MX DOVREBBE contenere un nome host anziché un indirizzo IP, un MTA DEVE accettare un indirizzo IP. Ipoteticamente, se un record MX DEVE contenere un nome host, un MTA DOVREBBE accettare un indirizzo IP. Ecco come funziona RFC. La controparte di un consiglio di implementazione "DOVREBBE" può ottimizzare partendo dal presupposto che il consiglio è seguito, ma è praticamente tutto ciò che puoi fare con esso.
Saluti

2
@MSalters Penso che tu sia confuso. Non ho mai detto DOVREBBE nulla. In effetti, ho detto che il record MX DEVE contenere un nome host, che è anche quello che dicono gli RFC.
Michael Hampton

18

DNS come protocollo ha alcuni tipi diversi di valori, questi non sono intercambiabili.

È importante notare che il DNS è un protocollo binario con mappature rigorose tra il tipo di record e il tipo di dati in possesso di tale record.

Ad esempio:
un Arecord contiene un indirizzo IPv4 (4 byte di dati, lunghezza fissa).
Un AAAArecord contiene un indirizzo IPv6 (16 byte di dati, lunghezza fissa).

Un MXrecord, d'altra parte, contiene un nome (una sequenza di etichette sul formato <int number of bytes> <label> <int number of bytes> <label> <int 0>, lunghezza variabile).

Non è possibile che un MXrecord abbia un indirizzo IP come dati.


Potresti rendere l'etichetta la rappresentazione testuale di un indirizzo IP, ma non avrebbe senso farlo, dal momento che non può essere risolto come nome host.
Michael Hampton

@MichaelHampton In effetti, è possibile avere un nome con etichette tutto numeriche che nella normale rappresentazione a misura d'uomo sembra un indirizzo IPv4 a prima vista. Ciò non cambia nulla quando si tratta della domanda, poiché sarebbe comunque un nome e quindi verrà gestito come un nome (un nome che, almeno su Internet pubblico, sarà solo NXDOMAIN).
Håkan Lindqvist,

Questo non risponde realmente alla domanda del PO. In pratica dici "perché è così" .
dr01,

@ dr01 Considerando che la domanda dimostra chiaramente di non essere a conoscenza del "modo in cui è" ("non si dovrebbe puntare direttamente un record MX a un indirizzo IP, ma si dovrebbe invece puntarlo a un record A" quando in realtà non è una possibilità per hanno un valore diverso da un nome), non penso che sia fuori luogo sottolineare come stanno le cose e perché ciò rende impossibile qualsiasi altra opzione. Ho la sensazione che stai leggendo molto nella domanda che in realtà non c'è.
Håkan Lindqvist,

@ dr01 Vale a dire, non pensare che la domanda si legga come una domanda accademica sulle decisioni di progettazione nei primi giorni del DNS o qualcosa del genere, ma semplicemente una domanda su come i MXrecord che esistono realmente nel mondo possono o dovrebbero essere usati.
Håkan Lindqvist,

6

Lo proverò a indovinare. Certo, sono a casa con l'influenza, quindi forse sono nervoso.

RFC 974 afferma:

Il primo passo per il mailer su LOCAL è di inviare una query per MX RR per REMOTE. Si raccomanda vivamente di fare questo passo ogni volta che un mailer tenta di inviare il messaggio. La speranza è che le modifiche al database di dominio vengano rapidamente utilizzate dai mailer, e quindi gli amministratori di dominio saranno in grado di reindirizzare i messaggi in transito per host difettosi semplicemente modificando i loro database di dominio.

Richiedendo un nome anziché IP, incoraggia con forza questa pratica. I nomi possono rimanere gli stessi e, in caso di bilanciamento del carico o DR, non dovrai preoccuparti di modificare il record MX stesso e di attendere la propagazione del DNS.


8
Rispondere alle domande sullo scambio di pile durante il giorno libero mentre si è malati di influenza ... Ti consiglio il cappello, buon signore!
Mike B,

3

Alcuni server di posta elettronica (come exim) in particolare non consentono l'invio a record MX che puntano a un indirizzo IP puro, quindi è necessario utilizzare un nome di dominio completo per essere invece conforme. Questo perché la maggior parte dei server prevede che il record MX contenga un nome host, non un IP (ecco a cosa servono i record A).

Modifica: per elaborare, in DNS ogni record ha requisiti rigorosi per il tipo di dati che ogni record può contenere. Nel caso dei record MX, è solo un nome host .


Quindi perché exim non ha permesso ai record MX di puntare all'indirizzo IP in primo luogo? Mi sembra strano! Capisco che non dovrei a causa della convenzione, ma non capisco perché sia stato reso illegale .
dayuloli,

1
Non vedo come qualsiasi MTA possa supportare questo dato che un MXrecord non può avere un indirizzo IP come valore.
Håkan Lindqvist,

@ HåkanLindqvist La tua risposta sopra mi ha chiarito questo punto! Grazie!
Dayuloli,

2

IN RFC 1025 I record MX indicano solo un RR (record di risorse) di un record A o CNAME.

Quindi il server di posta che invia la posta richiede il RR di un record MX, il record mx elenca i record A dei server, il server di posta effettua una ricerca in avanti per ottenere un record A e quindi inoltra la posta via smtp all'host del servizio elencato come un server di posta "disposto" a ricevere posta per quel dominio.

La tua domanda - Perché non è possibile inviare la posta a un indirizzo IP

Risposta - A causa della fiducia

Molte delle regole in vigore relative alla posta si sono evolute al fine di mantenere la fiducia tra i domini secondo cui i messaggi inviati avanti e indietro sono effettivamente validi. Tutto ciò per ridurre in definitiva lo SPAM.

  • Ricerche IP inverse
  • Una ricerca di nome in avanti per quella materia

Tutti questi componenti essenziali per una fondazione su cui costruire un server di posta hanno almeno un piccolo componente fondato nella creazione di comunicazioni affidabili e nella riduzione di comunicazioni non attendibili.

Riferimento - RFC 1035 e 974

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

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


2

Lo scopo dei MXrecord è che un'applicazione (trasferimento di posta) può conoscere l'host da utilizzare. A livello di applicazione, i nomi host sono la cosa giusta da usare (non gli indirizzi IP).

Inoltre, l'aggiunta del concetto di record di tipo variante al DNS introduce una leva di complicazioni e quindi un punto di ingresso per problemi, disfunzioni nell'implementazione, problemi di sicurezza. Ad esempio, 1.2.3.4.example.com.è un nome host valido (sì, lo è, anche alla luce di RFC1034, 3.5). Specificare questo host come MXin un file di configurazione di bind per esempio.com potrebbe apparire

.  MX 10  1.2.3.4

e presumibilmente è esattamente lo stesso di un record MX con un IP. E anche per trasferire l'informazione in un datagramma DNS richiede alcuni eccentrici componenti aggiuntivi; il modo più semplice sarebbe quello di introdurre un nuovo tipo di record di risorse, MXAdiciamo, per chiarire le ambiguità. Ma ancora una volta, perché introdurre l'onere di un nuovo tipo di record quando

. MXA 10 5.6.7.8

potrebbe sempre essere sostituito con

. MX 10 dummy
dummy A 5.6.7.8

(e sarebbe supportato anche da client DNS che non sono a conoscenza dei MXArecord)?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.