Resolución de Smart Hosts en conectores Exchange 2003/2007

por Daniel Seveso

Introducción

Cuando configuramos un conector de SMTP (“SMTP Connector” en Exchange 2003 o “Send Connector” en Exchange 2007) uno de los parámetros a definir es como serán entregados los mensajes que pasen por este conector.

En Exchange 2003, esta opción se define en el tab General de las propiedades del SMTP Connector:

image

En Exchange 2007, se define en el tab Network del Send Connector:

image

Estas opciones nos permiten definir si el/los bridgehead/s a cargo de este conector utilizarán DNS para resolver el próximo salto del mensaje, o utilizarán un “Smart Host” (también conocido como “Relay Host”).

 

Entrega por DNS

Si utilizamos DNS, no hay ningún misterio: A grandes razgos, el servidor bridgehead inspecciona el mensaje a entregar, extrae el dominio de su destinatario (parte a la derecha del @ por ej: folk@contoso.com) y consulta por un registro MX “contoso.com” al servidor DNS.  El servidor DNS responderá con una lista de 1 o varios registros tipo A con su respectiva dirección IP de cada servidor smtp recibiendo mensajes para el dominio contoso.com. Nuestro bridgehead entonces se conectará a una de ellas dependiendo de varios factores como disponibilidad, peso de cada una, etc.

 

Entrega por Smart Hosts

Este es el punto que veremos en detalle: “Forward all mail through this connector to the following smart hosts” en Exchange 2003 y “Route mail through the following smart hosts” en Exchange 2007.

Esta opción nos permite configurar el conector para que entrege los mensajes a un tercero, quien se hará cargo de su ruteo a destino final.  Esta configuración se usa habiltualmente para enviar todos los mensajes a través de un Anti Virus, o para enviar los mensajes a un servidor de borde cuando nuestro servidor no tiene acceso directo a Internet.

Al configurar el relay host podemos especificar su dirección IP o su nombre completo (FQDN por Fully Qualified Domain Name), por lo que es importante entender como se resuelve ese valor en cada caso.

 

Cuando especificamos su dirección IP el servidor realizará una conexión directa a la misma, evitando la resolución DNS.

Nota: En Exchange 2003 tenemos que especificar la dirección o direcciones IP entre parentesis rectos por ej: “[192.168.31.1]” o “[192.168.31.1; 192.168.31.2]”

 

Cuando especificamos el nombre completo FQDN el servidor resolverá este nombre a una dirección IP de la siguiente forma:

  1. Consulta al DNS por un registro MX
  2. Si no obtiene respuesta útil, consultará al DNS por un registro A

Este dato, que actualmente no está explícitamente documentado, es de utilidad cuando realizamos seguimientos de problemas de entrega de mensajes a un grupo de Smart Hosts.

Para configurar entrega de mensajes a un grupo de Smart Hosts, podemos usar diferentes mecanismos de balanceo de carga. El primero y más intuitivo es configurar más de un Smart Host en la configuración del conector, quien se encargará de balancear la carga dispensada a cada uno. La resolución de nombres en este caso, sigue el mismo principio mencionado anteriormente. Supongamos que configuramos 2 Smart Hosts smarthost1.domain.com y smartnost2.domain.com, la resolución de sus nombres a direcciones IP sería :

  • Consulta al DNS por un registro MX “smarthost1.domain.com”
  • Consulta al DNS por un registro MX “smarthost2.domain.com”
  • Si no obtiene respuesta para el MX “smarthost1.domain.com”, consulta al DNS por un registro A “smarthost1.domain.com”
  • Si no obtiene respuesta para el MX “smarthost2.domain.com”, consulta al DNS por un registro A “smarthost2.domain.com”

Otra forma es configurar el conector con un sólo Smart Host “balanceado”, utilizando alguno de los siguientes mecanismos: NLB (Network Load Balancing), HLB (Hardware LB), un grupo de registros A con un único nombre (caso en el que DNS realiza una asignación Round Robin de la resolución), o un registro MX conteniendo un grupo de registros A con sus pesos específicos.

Uno sólo de los mecanismo mencionados es suficiente para balancear la carga de entrega de mensajes.

 

Como averiguar que mecanismos de resolución estamos utilizando

Sea cual sea el mecanismo de balanceo de carga que utilicemos el principio de resolución de nombres por parte del Bridgehead server no cambia, por lo tanto, es útil saber qué mecanismo de resolución estamos utilizando realmente. Si registros MX o registros A, y a partir de este dato poder verificar la configuración de DNS.

Lo más fácil es utilizar NSLookup.exe

Conectado al servidor que oficia de Bridgehead averiguamos la dirección de los DNS que utiliza:

C:\>ipconfig /all

….

DNS Servers . . . . . . . . . . . : 192.168.31.160
192.168.31.161
192.168.31.162

….

Ejecutamos nslookup y realizamos el mismo procedimiento para los (3 en este caso) servidores DNS

C:\>nslookup

> server 192.168.31.160
Default Server: <nombre de tu servidor DNS>
Address: 192.168.31.160

Configuramos el tipo de registro a consultar como “MX” y consultamos por el nombre del Smart Host

> set type=MX

> smarthost1.domain.com.
Default Server: <nombre de tu servidor DNS>
Address: 192.168.31.160

En caso que no encuentre un registro MX, te dara un mensaje “Unknown can’t find smarthost1.domain.com: Non-existent domain” o una referencia a quien es el SOA (Start of Authority) de la zona domain.com o smarthost1.domain.com como el siguiente:

smarthost1.domain.com
primary name server = dns1.domain.com
responsible mail addr = admin
serial = 2416123
refresh = 900 (15 mins)
retry = 600 (10 mins)
expire = 86400 (1 day)
default TTL = 3600 (1 hour)

Si encuentra el registro MX mostrará algo similar a:

smarthost1.domain.com MX preference = 10, mail exchanger = smtp1.smarthost1.domain.com
smarthost1.domain.com MX preference = 10, mail exchanger = smtp2.smarthost1.domain.com
smtp1.smarthost1.domain.com internet address = 192.168.31.89
smtp2.smarthost1.domain.com internet address = 192.168.31.90

Aqui sabes que el Bridgehead resolverá por MX a las direcciones 192.168.31.89 y 192.168.31.90

 

Si no encuentra un registro MX, preguntamos por un registro A:

> set type=A

> smarthost1.domain.com.
Default Server: <nombre de tu servidor DNS>
Address: 192.168.31.160

Name: smarthost1.domain.com
Address: 192.168.131.91

Aqui sabes que el Bridgehead resolverá smarthost1.domain.com resolverá a la dirección ip 192.168.131.91

Deberás realizar este procedimiento para cada servidor DNS configurado en tu bridgehead y consultar por cada FQDN en el Smart Host para confirmar si la configración de cada DNS es correcta.

 

Referencias