2013-04-08 17 views
7

Abbiamo un'applicazione in esecuzione su Microsoft Azure e abbiamo impostato un record CNAME per coprire il dominio in modo che possiamo avere il piacevole URL di http://example.com (nota che sto sostituendo il nostro dominio reale con example.com in tutto questo).CNAME per l'applicazione Azure causa problemi di posta elettronica con MX e record A ignorati

CNAME 
mydomain.com -> mydomainapp.cloudapp.net 

Abbiamo MX e un setup record correttamente in modo MX contiene mailserver.example.com e un record che punta server di posta per l'indirizzo IP corretto.

MX 
mailserver.example.com 

A 
mailserver -> 198.168.111.111 (note this IP is fictitious) 

All fine, per la maggior parte e-mail, ma per alcuni server di posta (non so cosa la tecnologia ancora) stanno ora utilizzando il CNAME al posto del record MX e A.

Quindi un'email inviata a [email protected] viene effettivamente inviata a [email protected] dove example.cloudapp.net è il dominio su Azure che abbiamo mappato con CNAME.

EMAIL TO: [email protected] 
BECOMES: [email protected] 

Gli unici suggerimenti che posso trovare semplicemente dire non hanno livello di dominio CNAME o non usare CNAME a tutti, ma naturalmente gli indirizzi IP possono cambiare Azure quindi dobbiamo usare CNAME. Potremmo prefissare tutto www.example.com ma sicuramente ci deve essere una soluzione migliore.

Tutte le idee molto apprezzate.

+0

Ho fatto una serie di ricerche su questo e non facendo molti progressi. Una soluzione suggerita che ho visto è quella di impostare un listener di posta elettronica nell'app Azure sulla porta 25 e quindi di inviare nuovamente l'email (vedere http://blog.smarx.com/posts/emailtheinternet-com-sending-and-receiving -email-in-windows-azure) che è un esempio. Sledgehammer e nut vengono in mente. – Jezbers

risposta

1

OK, dopo molte ricerche sembra la soluzione migliore (almeno nella mia mente) è utilizzare un record A anziché CNAME per il record del dominio.

Si potrebbe gridare "che cosa! Ma l'indirizzo IP viene assegnato dinamicamente!". Sì, ma solo se abbattete la distribuzione e la sostituite. Windows Azure manterrà l'indirizzo VIP finché pubblichi per la gestione temporanea e utilizzi l'opzione "swap production and staging". In questo modo puoi conservare il tuo indirizzo VIP in modo da poter utilizzare un record A nel tuo DNS anziché in un CNAME.

Vedere http://www.windowsazure.com/en-us/develop/net/common-tasks/custom-dns/ per alcuni sfondi.

Nota linea ufficiale MS è di raccomandare CNAME piuttosto che un record a causa del possibile scambio di un indirizzo IP, ma credo che non stanno pensando di persone che vogliono eseguire http://mydomain.com sulla piattaforma Azure.

Ho trovato anche altre possibili soluzioni tra cui la creazione di un listener SMTP nell'app che legge la posta sulla porta 25 e la inoltra indietro. Tecnicamente buono, ma mazza e martello ti vengono in mente, in più è ancora una cosa da sbagliare, e ovviamente un altro mucchio di risorse da pagare.

2

Sì, c'è una soluzione migliore: utilizzare un dominio di secondo livello per l'app. Lascia che sia portal.mydomain.com e utilizza CNAME per mappare portal.mydomain.com per mydomainapp.cloudapp.net e imposta il record MX per mydomain.com e avere tutti gli indirizzi nel formato [email protected]. In questo modo è ancora chiaro che possiedi mydomain.com e tutte le tue e-mail sembrano ancora serie - [email protected], non [email protected].

Btw tecnicamente la configurazione descritta sopra indica effettivamente che non si dispone di un livello di dominio CNAME.

+0

Grazie, ma voglio davvero che l'applicazione principale sia su http://mydomain.com. Capisco che potremmo abbandonare il livello di dominio CNAME e consentire solo www.mydomain.com o qualsiasi altro sottodominio per quella materia, ma l'azienda vuole eseguire senza il prefisso, che è una richiesta ragionevole. – Jezbers

+0

@Jezbers: Sì, è un obiettivo chiaro, ma non ho trovato alcuna soluzione per raggiungerlo. – sharptooth

+0

Grazie per aver segnalato questo. Dal momento che tutte le altre soluzioni sono complicate e mi terranno impegnato per ore almeno, lo farò in questo modo. – Tillito

0

Utilizziamo un record A per il nostro dominio radice e questo funziona correttamente, come @Jezbers menzionato nella sua risposta. Il record A non interromperà la posta.Tuttavia, il record CNAME influisce sugli altri record (consente di disporre della funzionalità di "reindirizzamento del dominio" in modo che [email protected] funzioni anche per [email protected]).

Se si era alla ricerca di una soluzione migliore "work-around" rispetto al Listener SMTP work-around, allora si può considerare quanto segue:

ospitare il vostro sito ad un www sottodominio e mettere il CNAME lì. Chiedi a qualcos'altro di ospitare un reindirizzamento 301 a www e utilizza un record A per indirizzare il tuo dominio di root a questo sito di reindirizzamento.

Non perfetto ma molto probabilmente un'opzione migliore dell'opzione SMTP.

3

Non è possibile utilizzare un record CNAME sul livello di dominio, come CNAME è un alias per tutti i tipi di RR in modo da esso sempre causa reindirizzamento per MX, SOA, NS, ecc ricerche pure.

Il seguente estratto dalla sezione RFC1912 2.4 dice molto chiaramente:

record A CNAME non è consentito a coesistere con qualsiasi altro dato. In
altre parole, se suzy.podunk.xx è un alias per sue.podunk.xx, si
non può avere anche un record MX per suzy.podunk.edu, o di un record, o addirittura un
Record TXT. Soprattutto non cercare di coniugare CNAME e NS
dischi come questo !:

 podunk.xx.  IN  NS  ns1 
         IN  NS  ns2 
         IN  CNAME mary 
     mary   IN  A  1.2.3.4 

Questo è spesso tentato dagli amministratori inesperti come un evidente modo per consentire al nome del dominio da un host. Tuttavia, i server DNS come BIND vedranno il CNAME e si rifiuteranno di aggiungere altre risorse per quel nome. Poiché nessun altro record è consentito per coesistere con un CNAME, le voci NS vengono ignorate. Pertanto, tutti gli host nel dominio podunk.xx vengono ignorati!

Quindi non deve utilizzare un CNAME-record per mydomain.com!

Quindi è necessario impostare un record A per mydomain.com (tra MX: se altri record secondo necessità), poiché questa è l'unica soluzione funzionante DNS-wise.

+0

Sì, comprendo la RFC, tuttavia è interessante notare che la maggior parte dei server di posta leggerà prima un record MX anche se è presente un livello di dominio CNAME. È solo una minoranza che segue le raccomandazioni RFC appropriate.Ciò lo rende più confuso in quanto sembra funzionare nella maggior parte delle circostanze e quindi fallisce per una minoranza. Tuttavia, hai ragione, secondo la soluzione pubblicata, l'unica risposta è un record A. Sarebbe utile se Microsoft includesse questo e gli svantaggi di un CNAME nelle loro spiegazioni sull'impostazione del DNS per le app in hosting di Azure. – Jezbers

+0

Questo probabilmente dipende dal software del ** server DNS **. I server DNS conformi probabilmente si rifiuteranno di caricare la zona in memoria o ignoreranno le voci aggiuntive se è presente un record CNAME. – krisku

+0

Le email non richiedono necessariamente un record MX, poiché i server di posta useranno un record A se non riescono a trovare un record MX. O quando cerchi un record MX e un server dei nomi ricorsivo nella cache trova il CNAME, il server dei nomi ricorsivo risolverà il CNAME e riproverà la ricerca MX con il nome alias. Confuso, sì, perché puoi provare a configurare il tuo DNS in modo rotto, e ciò che effettivamente viene visto dal mondo potrebbe essere qualcosa di completamente diverso. Sempre bene controllare con es. 'dig' per vedere che i record DNS restituiti corrispondono a ciò che hai inteso. – krisku

Problemi correlati