Clientes Mail y DNS
Para la mayoría de los usuarios, el funcionamiento del correo electrónico es algo sencillo, lo que significa que se puede utilizar sin entender cómo funciona. Sin embargo, por detrás de dicho funcionamiento existen un conjunto de reglas un poco más complejas que las de la Web. A continuación, haremos una introducción al funcionamiento del correo electrónico para comprender los principios básicos y ampliar nuestro conocimiento en clientes mail y DNS.
Table of Contents
ToggleAgentes de Correo
En una red como internet, cuando se envía un correo electrónico la información se entrega servidor por servidor, hasta llegar al servidor de correo electrónico del destinatario. Es decir, la información se envía al MTA (Agente de transferencia de correo). Luego, el MTA del destinatario entregará el correo electrónico al servidor de recepción de correo MDA (Agente de entrega de correo). Este guardará el correo electrónico y esperará a que el usuario lo reciba. Para evitar que otros vean los correos electrónicos de las personas, el MDA debe verificar el nombre de usuario y la contraseña para acceder a ellos. Finalmente llega al destinatario (también llamado host o nodo). El trabajo de recibir correos lo realiza el MUA (Agente de correo de ususarios).
Veamos la siguiente analogía:
Podríamos decir que el MTA vendría siendo una oficina de correo (ejemplos de estos son Sendmail, Postfix y Exim), mientras que el MDA es el buzón, cuyo funcionamiento es almacenar el correo y esperar a que el destinatario lo revise. Esto significa que el destinatario no necesita permitir que el remitente establezca una conexión con él. En cuanto al MUA, se lo denomina así al cliente de correo. Este puede ser un programa en la computadora del usuario (como Mozilla Thunderbird, Microsoft Outlook, Apple Mail, etc) u otro dispositivo.
Protocolos en Agentes de Correo
Los MTA, utilizan el protocolo SMTP (Simple Mail Transfer Protocol) para la comunicación, por lo que lógicamente se denominan servidores SMTP (a veces llamados servidores de envío de correo).
Lo mismo ocurre con los MUA, solo que estos aparte de SMTP, también utilizan otros protocolos como POP O IMAP:
- POP (Protocolo de oficina de correos), es uno de los más antiguos, y es utilizado para buscar correo y copiar el correo en el servidor.
- IMAP (Protocolo de acceso a mensajes de Internet) es utilizado para coordinar el estado de los correos electrónicos (movidos, leídos, eliminados) entre varios clientes de correo electrónico. A través del mismo, cada operación se guardará en el servidor, por lo que el estado del correo puede sincronizarse en muchos lugares. Por lo tanto, el servidor que recibe el correo se denomina servidor POP o servidor IMAP según el protocolo utilizado.
En el caso de MDA, este solo usa el protocolo LMTP
Tener en cuenta
LMTP se recomienda en situaciones donde las colas de correo no son posibles (caso contrario sucede con SMTP), ya que un servidor de almacenamiento de correo solo debe administrar su almacén de correo sin tener que asignar más espacio para una cola de correo. Esto no es posible con SMTP cuando hay varios destinatarios para un mensaje de correo electrónico.
SMTP solo puede indicar la entrega o error de todos o ninguno de los destinatarios, creando la necesidad de una cola separada para manejar los destinatarios fallidos. Sin embargo, con LMTP podemos decirle al cliente el éxito o el fracaso de cada destinatario, permitiendo que el mismo cliente maneje la cola en su lugar. En este caso, el cliente normalmente sería una puerta de enlace de correo frente a Internet. LMTP no está diseñado para su uso en redes de área amplia (WAN). Es decir, el agente de transferencia de mensajes todavía maneja todo el correo saliente, incluido el flujo de correo desde el LMTP a otro servidor de correo ubicado en algún lugar de Internet.
Resumen
Agentes de Correo | Función | Protocolos |
MTA | Envía correos de un dominio a otro. Encola correo. Recibe el mail de los dominios que tiene a cargo. | SMTP |
MDA | Entrega el correo en las casillas. | LMTP |
MUA | Cliente de correo. | SMTP, POP, IMAP Dichos protocolos son usados únicamente como cliente |
Clientes DNS en Linux
Los nombres de dominio fueron creados para convertir las direcciones numéricas en nombres simples y reconocibles. El Sistema de nombres de dominio (DNS) utiliza un conjunto distribuido de servidores para resolver los nombres asociados con estas direcciones IP. Por tanto, el protocolo DNS define un servicio automatizado que coincide con nombres de recursos que tienen la dirección de red numérica solicitada. Incluye las consultas sobre formato, las respuestas y los formatos de datos.
Las comunicaciones del protocolo DNS utilizan un formato simple llamado mensaje. Este formato de mensaje se utiliza para todos los tipos de solicitudes de clientes y respuestas del servidor, mensajes de error y para la transferencia de información de registro de recursos entre servidores.
Por lo tanto, podemos definir Cliente DNS como todo programa capaz de preguntar (o buscar información) a un servidor DNS e interpretar sus respuestas.
CLIENTE INTERNET (ISP) SERVIDOR DNS
NOMBRE | DIRECCIÓN |
www.example.com | 198.133.320.25 |
¿Cómo funciona la resolución DNS?
Cuando un cliente realiza una consulta, el proceso «nombrado» del servidor hace una observación en sus propios registros para ver si puede resolver (o encontrar) el nombre.
Si no puede resolver el nombre utilizando los registros almacenados, contacta a otros servidores para hacerlo. La solicitud puede pasar por un número de servidores, lo cual lleva tiempo adicional y consume ancho de banda. Una vez que se encuentra una coincidencia y se devuelve al servidor solicitante original, el servidor almacena temporalmente en la caché la dirección numerada que coincide con el nombre.
El sistema de nombres de dominio utiliza un sistema jerárquico para crear una base de datos y así proporcionar una resolución de nombres. La jerarquía es similar a un árbol invertido con la raíz en la parte superior y las ramas por debajo. En la parte superior de la jerarquía, los servidores raíz mantienen registros sobre cómo alcanzar los servidores de dominio de nivel superior, los cuales a su vez, tienen registros que apuntan a los servidores de dominio de nivel secundario y así sucesivamente.
Configuración habitual:
La aplicación pregunta al cliente DNS por un nombre de dominio o de host.
El cliente DNS consulta la caché que se almacena en memoria. En caso de estar allí, entrega la respuesta a la aplicación.
Si el nombre a buscar no se encuentra en la caché, el cliente DNS buscará en el fichero hosts del equipo. En Linux el archivo se encuentra en /etc/hosts. Si el nombre está almacenado en dicho archivo, entrega la respuesta a la aplicación.
Si el nombre a buscar no se encuentra en el archivo hosts, el cliente DNS realiza una consulta recursiva al servidor DNS que esté configurado y entregará la respuesta de este a la aplicación.
Los diferentes dominios de primer nivel representan el tipo de organización o país de origen.
Algunos ejemplos de dominios de primer nivel son:
.au: Australia.
.co: Colombia.
.jp: Japón.
.com: Una empresa o industria.
.org: Una organización sin fines de lucro.
Después de los dominios de primer nivel se encuentran los dominios de segundo nivel y, debajo de estos, hay otros dominios de nivel inferior. Cada nombre de dominio es una ruta a través de este árbol invertido que comienza desde la raíz.
Tipos de Registro DNS
Los registros DNS son combinaciones de letras que se utilizan para definir ciertas acciones al servidor DNS. A continuación veremos una lista de los más conocidos:
A
Estos registros se resuelven en direcciones IPv4. Por tanto, como el tamaño de las direcciones IPv4 es de 4 bytes, el valor rdlenght, siempre será de 4.
AAAA
Estos registros hacen referencia a las direcciones IPv6 de un host. Las direcciones IPv6 necesitan de 128 bits, por lo cual el valor rdlenght también será fijo. Por este motivo se denomina AAAA, siendo cuatro veces más larga que A.
CNAME
La función de este registro es hacer que un dominio sea el alias de otro dominio. Por lo general, se utilizan para referenciar nuevos subdominios con dominios ya existentes en el registro A. Por ejemplo, teniendo en cuenta el dominio store.example.com, un subdominio que haga referencia a este podría ser shop.example.com. Luego se haría otra solicitud a shop.example.com para averiguar su direccion IP.
MX
Este registro, conocido como Mail Exchange. A diferencia de los registros anteriores, este no vincula un dominio a una dirección IP, sino que indica la ubicación de un servidor de correo electrónico. Este registro se emplea cuando se envían correos a los email personalizados que hemos creado para nuestro dominio. Por ejemplo, para el dominio google.com, cada correo de usuario será redirigido a un servidor de correo de google como alt1.aspmx.google.com.
NS
El registro Name Sever, especifica cuál es el nombre de un servidor autoritativo para un dominio o subdominio en específico. Un servidor DNS autorizado, también llamados servidores autoritativos, es aquel responsable de almacenar los registros DNS para un nombre de dominio en particular y donde se realizarán las actualizaciones de los registros DNS de su nombre de dominio. Por ejemplo, para el dominio lathack.com los servidores de dominio son lola.ns.cloudflare.com y gordon.ns.cloudflare.com.
TXT
El registro Text son campos de texto libre donde se pueden almacenar datos basados en texto. Por tanto, estos registros tienen múltiples usos, por ejemplo enumerar servidores que tienen la autoridad para enviar un correo electrónico en nombre del dominio (esto puede ayudar a luchar contra el spam (correo no deseado) y el correo electrónico falsificado). También se pueden usar para verificar la propiedad del nombre de dominio al registrarse en servicios de terceros.
Herramienta para cliente DNS
Existen programas que funcionan como Clientes DNS y permiten definir qué tipo de consulta se quiere realizar a un Servidor DNS. Estos son utilizados para depurar u obtener información de servidores DNS y del proceso de resolución. Algunos de estas herramientas son los comandos dig y host
Comando dig
Esta herramienta está disponible en prácticamente cualquier distribución Linux que permite hacer consultas a un servidor DNS. Este comando precisa conocer la dirección IP de un servidor DNS, cuya dirección es tomada del archivo /etc/resolv.conf.
Algunas opciones del mismo:
-t Define el tipo de consulta
-4 Fuerza al comando a usar solo direcciones IPv4
-6 Fuerza al comando a usar solo direcciones IPv6
-c Sustituye la clase de consulta por defecto
-b Establece la dirección IP de origen de dicha consulta
-p Consulta de números de puertos no estándar
-x Opción de búsqueda inversa (mapeo de direcciones a nombres)
Veamos algunos ejemplos:
# dig google.com
Ahora veremos, concatenando con el comando strace, los archivos que utiliza para realizar dicha operación.
# strace dig www.duck.com |& grep –color open.*etc
Por último, le diremos que indique en cualquier registro disponible, cuyo dominio específico será el de google (8.8.8.8).
# dig –t cisco.com @8.8.8.8
Comando host
Esta herramienta sirve para darnos información sobre la dirección IP del dominio dado. Y la también muestra el nombre del dominio para la IP dada. No es muy distinta a dig
Algunas opciones del mismo:
-a Muestra todos los registros DNS para el hostname dado
-l Lista todos los host en un dominio usado AXFR
-t Se utiliza para seleccionar el tipo de query (CNAME, NS,SOA,KEY,etc)
-T Utiliza TCP en vez de UDP
-W Especifica cuanto tiempo se debe esperar para obtener una respuesta
-v Salida verbose
Veamos algunos ejemplos:
# host www.duck.com
Con una dirección IP:
# host 72.163.4.185
# host 198.133.219.25
Configuración de cliente DNS
A continuación, veremos la configuración de un cliente DNS ya que es importante a la hora de saber dónde estamos trabajando y que estamos modificando en un servidor o equipo de escritorio.
Los principales archivos de configuración son:
Archivo /etc/hosts
Este archivo de configuración contiene los nombres de equipos dentro de una red local y se utilizar para resolver su nombre cuando no se tiene un servidor de DNS en la red local. También este archivo define la dirección de loopback que representa al propio equipo independientemente de la dirección IP que se le haya asignado.
Este archivo debe tener la siguiente forma:
Direccion_IP Nombre_Del_Equipo
Las modificaciones realizadas en este archivo de configuración son reflejadas inmediatamente. Es decir, en este archivo se encuentra la dirección de loopback (127.0.0.1), esta dirección es utilizada por varias aplicaciones para su funcionamiento. Se recomienda que no modifique esta línea.
# cat /etc/hosts
Archivo /etc/resolv.conf
Este archivo de configuración contiene las direcciones IP de los servidores DNS. Sus parámetros de configuración son:
- nameserver: Define las direcciones IP de los servidores de nombre en los cuales se deberán resolver las búsquedas. El archivo hosts solo permite hasta 3 servidores de nombre diferentes.
- domain: Define el nombre de dominio local en el cual pertenecen los equipos en una red local.
- search: Este parámetro define la lista de búsqueda nombres de equipos útiles cuando se busca un equipo dentro de la red local por un nombre corto.
- sortlist: Este parámetro indica la preferencia de los nameserver definidos.
# cat /etc/resolv.conf
Archivo /etc/nsswitch.conf
El archivo se usa para configurar los servicios que serán utilizados para determinar información como nombres de host, archivos de contraseñas y de grupo.
Algunas de las configuraciones de acceso son:
- passwd
- group
- shadow
- hosts
- networks
- protocols
- services
- ethers
- rpc
Algunas distros usan el servicio ncsd para cachear /var/db.
Una parte del contenido podría ser la siguiente:
# cat /etc/nsswitch.conf
Si tiene algún problema o necesita ayuda con algunas de las configuraciones anteriores, recuerde que tenemos un apartado donde repasamos problemas básicos en configuraciones con respecto a redes en Linux. Hasta aquí, podemos darnos una idea de la importancia que tiene saber el funcionamiento y aplicación de los clientes mail y dns en redes.