PRACTICA SERVIDOR DE CORREO USANDO POSTFIX Y DOVECOT. Christian Loaiza Garcia.
1. OBJETIVOS.
Comprender el funcionamiento de un servidor de correo electrónico. Comprender cómo configurar postfix. Comprender cómo configurar dovecot. Comprender cómo configurar un cliente de correo electrónico.
2. PROCEDIMIENTO Para implementar un servicio de correo electrónico hay que tener en cuenta tres conceptos fundamentales (mta, mda, mua). MTA (Mail Transport Agent) es el agente de transporte, es él encargado de enviar el mensaje al MTA de destino. El MTA le entrega el correo al servidor de correo entrante, llamado MDA (Mail Delivery Agent), el MDA se encarga de almacenar el corre hasta que el usuario lo lea. Para leer un correo electrónico existen dos protocolos POP3 (Post Office Protocol), el cual descarga el mensaje del servidor sin dejar copia, y el otro protocolo es IMAP (Internet MEssage Access Protocol), el cual descarga el correo del servidor dejando una copia en él. La recuperación de los correos electrónicos se realiza por medio de un software, llamadod MUA (Mail User Agent), estos programas permiten descargar los correos y almacenarlos en el computador. Para que el servidor de correos funcione correctamente se le debe de asociar un servidor de nombres (DNS), el servidor de nombres que se utilizó es Bind y para configurarlo el Bindconf. En la configuración del servidor de nombres se le agrega una extensión MX (Mail Exchange) para que reconozca el servidor de correos (Imagen 1).
Imagen 1. Configuración Binconf
Para realizar el transporte de correo se utilizó postfix ya que es de fácil configuración, para instalarlo se utiliza el comando ¨yum install postfix¨, Centos trae por defecto un MTA el cual es Sendmail, para dejar a postfix como MTA por defecto se descarga una aplicación llamada system-switch-mail (Imagen 2) y para descargarla se utiliza el comando “yum system-switchmail”.
Imagen 2. Interfaz cambio MTA
Luego de dejar a postfix como MTA por defecto, se desactiva el servicio Sendmail con el comando ¨service sendmail stop¨ y se deshabilita su arranque al iniciar el sistema con el comando ¨chkconfig sendmail off¨. Postfix tiene dos archivos de configuración main.cf, donde se configuran los parámetros del servicio, y master.cf archivo utilizado para habilitar la seguridad del correo. Inicialmente se modificaron los parámetros de main.cf como se ve en la tabla 1. Directriz $myhostname = $mydomain = $myorigin = $inet_interfaces = $mydestination = $home_mailbox = $mynetworks = $mailbox_command =
Valor mail.christian.com christian.com $mydomain all $myhostname, localhost.$mydomain, localhost, $mydomain Maildir/ 127.0.0.0/8 192.168.0.0/24 10.0.0.0/8 Tabla 1. Configuración postfix
Luego de modificar las directrices se reinicia postfix con cualquiera de los siguientes comandos “service postfix reload” o “service postfix restart”. Luego de configurar el MTA se procede a configura el MDA, para esta práctica se utilizó dovecot y en su archivo de configuración se des comenta el parámetro “protocols” y se reinicia el servicio con el comando “service dovecot restart”. Para probar el correcto funcionamiento del servidor de correos se enviará un correo a un usuario (user1) desde el centOS y el MUA lo debe de recibir, el MUA que se utilizará en esta práctica es Outlook. En Outlook se agrega una cuenta nueva, con los parámetros de la tabla 2.
Nombre para mostrar Dirección de correo electrónico Servidor de correo entrante Servidor de correo saliente Nombre de la cuenta
Felipe Perez
[email protected] 10.0.0.1 10.0.0.1 user1
Tabla 2. Parámetros configurados en Outlook
Luego de crear la cuenta se probó el servicio de correo mandando un mensaje desde el servidor (imagen 3a) de correos al usuario registrado en el Outlook llegando un mensaje (imagen 3b)
Imagen 3b. Mensaje recibido en Outlook Imagen 3a. Mensaje usuario desde el servidor
En las imágenes se puede observar que el correo recibido coincide con el correo enviado desde el servidor. El servicio de correo permite utilizar alias, nombres “ficticios” que representan a los usuarios, en este caso el alias de user1 fue felipe. Para administrar los alias en el servidor de correo se abre el documento etc/aliases, al final del documento se ingresan los datos de la siguiente forma, nombre ficticio: nombre real, quedando de la siguiente forma felipe : user1. Para probar el uso de los alias se envía un correo desde el servidor (imagen 4a) teniendo como receptor el alias del usuario, en el Outlook se recibe el correo (imagen 4b).
Imagen 4b. Mensaje recibido en Outlook Imagen 4a. Mensaje alias desde el servidor
En las imágenes se observa que el mensaje enviado desde el servidor coincide con el recibido por el Outlook.
A demás del uso de alias para un solo usuario se puede asociar varios usuarios a un solo alias. El alias se llamó hermanos y las cuentas asociadas son user1 (Felipe Pérez) y user2 (Alejandro Pérez).
Imagen 5b. Bandeja de entrada Felipe y Alejandro Imagen 5a. Mensaje grupo desde el servidor
Imagen 5c. Mensaje recibido en Outlook
En la imagen 5a se observa el contenido enviado desde el servidor de correos al hermanos, alias que contienen a user1 y user2. En la imagen 3b se observa que el mensaje es recibido por los dos usuarios y en la imagen 3c se muestra el contenido del correo él cual concuerda con el enviado desde el servidor. Luego de probar el correcto funcionamiento del correo, se procedió a aplicarle seguridad al correo, la seguridad en correo es generar una encriptación de la información para que no pueda ser captada por personas o empresas ajenas al destinatario, el transporte del correo seguro se realiza por un puerto diferente y con un protocolo diferente al correo normal. Los puertos usados para el correo se muestran en la tabla 3. Agente MTA
MDA
Protocolo SMTP SMTPS POP3 IMAP POP3S IMAPS Tabla 3. Protocolos y puertos del servidor de correos
Puerto 25 25 o 465 110 143 995 993
Para aplicarle seguridad al correo se debe de hacer lo siguiente. Inicialmente se instala dos elementos con el comando “yum install openssl mod_ssl”, luego de la instalación se debe situar en la ruda “cd /etc/postfix” y dentro de la carpeta postfix se crean los archivos de seguridad .key y .cert con el comando openssl (imagen 6).
Imagen 6. Creación de archivos de seguridad
Durante la creación de los archivos de seguridad se piden algunos datos para configurar los certificados, los parámetros utilizados se muestran en la tabla 4. Country Name (2 letter code) State or Province Name (Full Name) Locality Name (eg, city) Organization Name (eg, company) Organizationa Unit Name (eg, section) Common Name (eg, Your name) Email Address
co cali valle personal laptop 10.0.0.1
[email protected]
Tabla 4. Datos para crear archivos de seguridad
Luego de crearse los archivos de seguridad se deben de agregar una líneas en el archivo main.cf situado en /etc/postfis mostrado en la tabla 4. smtpd_enforce_tls = smtpd_tls_loglevel = smtpd_use_tls = smtpd_tls_key_file = smtpd_tls_cert_file =
no 1 Yes /etc/postfix/smtpd.key /etc/postfix/smtpd.cert
Tabla 5. Líneas para aceptar seguridad en el servicio decorreo
Hay dos formas para verificar que la seguridad en el servidor de correos se está ejecutando, desde el CentOS utilizando el comando telnet por el puerto 25 y al conectarse al servidor se verifica con el comando STARTTLS (Imagen 7a). Otra forma de verificar la seguridad es abriendo el MUA, activar en las propiedades de las cuentas la aceptación del SSL, y cuando el MUA se conecte al servidor de correos genere una ventana avisando la conexión de un certificado de seguridad (Imagen 7b).
3. ANALISIS TRAMAS. 3.1. SMTP. En la captura 1 se observan todos los mensajes enviados entre el cliente y el servido, debido que dentro del espacio del protocolo SMTP (puerto 25) presenta la misma información que en la pestaña de información no se indagará, solo se describirá el proceso de envío de un correo, se describirá a fondo IMF datagrama donde se encuentra los datos del mensaje.
Captura 1. Proceso envió de un correo
a. En la captura se observa el siguiente proceso, Inicialmente el servidor envía un mensaje “220” indicando que el servidor se encuentra disponible y que tipo de MTA se encuentra usando (postfix). b. El cliente menda un mensaje “HELO” indicando el nombre del computador cliente; el servidor devuelve un mensaje “250” indicando el nombre del servidor de correos (mail.christian.com). c. El cliente le indica que el usuario “user1” va a enviar un correo (MAIL FROM:). d. El servidor responde con un mensaje “250” indica que si es permitido enviar un correo con ese usuario (OK), el servidor indica que se enviará un correo a dos destinatarios (RCPT TO:), user1 y user2. e. el servidor le indica que los dos usuarios se encuentran en su base de datos.
f.
El cliente usa el comando DATA indicando que se va a escribir el mensaje, el servidor indica al usuario que cuando termine de digitar la información use un punto en una sola línea. g. La información es encapsulada en un datagrama IMF (Internet Message Format) con los parámetros del receptor, emisor y asunto. h. El servidor indica que se al encolado el correo en el servidor. i. El cliente se desconecta del MTA. En paso ‘g’, se indica un datagrama IMF, este datagrama indica todos los parámetros de envío del correo, entre los parámetros se indica quien es el emisor del mensaje, quien es el receptor del mensaje, si el mensaje va enviado con copia (CC) a otro destinatario, además indica cual fue el agente que se utilizó (para este caso fue Outlook).
3.2. POP3 Al igual que el protocolo SMTP la información intercambiada entre el servidor y el cliente en el protocolo POP, captura 2, no muestra muchas características, excepto al momento de cuando el servidor le muestra la información del correo al cliente, el proceso es el siguiente:
Captura 2. Recepción correo POP3
a. b. c. d. e. f. g. h.
El servidor indica al cliente que el MDA se encuentra disponible (dovecot ready). El cliente indica que desea entrar a la cuenta de user1, para esto utiliza el comando USER. El servidor reconoce a user1 como usuario del servidor. El cliente envía la contraseña de user1, usando el comando PASS. El servidor indica que la contraseña es correcta e inicia la sesión de user1. El cliente usa el comando LIST para revisar si tiene correos no leído. El servidor le indica la cantidad de correos sin leer, para esta captura fue solo un correo. El cliente usa el comando RETR para indicar cual correo desea leer, en este caso se leyó el primer correo (RETR 1). i. El servidor le muestra al usuario la información del correo (imagen 8) indicando la cantidad de bits (octetos) del archivo. j. El usuario elimina el correo con el comando DELE. k. El servidor marca el mensaje que será eliminado. l. El cliente utiliza el comando QUIT para cerrar la sesión. m. El servidor cierra la sesión de user1 y elimina el mensaje.
Imagen 8. Correo recibido por user1
El correo recibido por user1 (imagen 8), muestra las siguientes características. a. Indica cual es el servidor que tiene almacenado el correo, el correo mostrado lo tiene almacenado el servidor mail.christian.com. b. A quien o quienes va dirigido el y cuál es el asunto asignado.
c. Un texto plano que dice “prueba para el wireshark”, este es el que recibe el cliente. d. Como se está usando un MUA, el texto se pasa a formato HTML, mostrando el mismo texto que anterior.
3.3. IMAP Este protocolo al igual que POP y SMTP, no presenta mucha profundidad dentro de sus tramas, aunque si es más complejo que POP. IMAP descarga y almacena la el servidor de correo mientras que POP solo descarga el correo y no deja una copia en el servidor, el proceso de lectura de correos de IMAP se muestra de la siguiente forma:
Captura 3. Recepción correo IMAP
a. El servidor indica que el MDA se encuentra disponible. b. EL cliente envía una petición al servidor preguntando si tiene capacidad, para esto usa el c. d. e. f. g. h. i. j. k. l. m. n.
o. p.
comando CAPABILITY. El servidor envía una respuesta indicando que tiene Capacidad. El cliente manda la petición de inicio de sesión de “user2” usando el comando LOGIN. El servidor reconoce a user2 como usuario del servidor de correos. EL cliente realiza una petición (automáticamente) IDLE al servidor, esta petición permite sincronizar la bandeja del servidor con el cliente. El servidor le indica al cliente que se está iniciando la sincronización. El cliente le indica al servidor que se ha completado la sincronización. El servidor le indica al cliente que ha aceptado la terminación de sincronización. El cliente le pide al servidor que abra la bandeja del servidor, para eso se utiliza el comando INBOX. El servidor le envía al usuario una respuesta con los FLAGS (Imagen 9), indicando las etiquetas. Respondidos, Eliminado, Visto y Borradores. El cliente pide una nueva sincronización. El servidor sincroniza los mensajes nuevamente. El cliente pide la cantidad de correos que tiene el usuario “user2” usando el comando FETCH, dentro del comando se especifica la forma de búsqueda, en este caso se indica inicialmente el cuerpo del mensaje, junto con su encabezad, referencias y prioridades. El servidor le envía al cliente la cantidad de mensajes que no se han leído junto con sus datos (imagen 10) El usuario leer el correo y envía una nueva sincronización.
q. El servidor sincroniza toda la bandeja. r. El cliente envía un mensaje indicando que se almacenan los mensajes y una bandera FLAG.SILENT indicando que se han visualizado los mensajes. s. Se realiza una nueva sincronización entre el servidor y el usuario. t. El cliente envía una petición de desconexión.
4. REFERENCIAS. Valk, Richard. Switching.
WordPress, 2006. Web. 17 Apr. 2013.
.
Kioskea. CCM Benchmark, 2003. Web. 17 Apr. 2013.
.