lunes, 27 de septiembre de 2010

Instalación de un servidor de correo (parte 3)

Ya hemos visto cómo instalar un servidor sendmail que nos permita enviar y recibir mensajes a Internet, en esta ocasión vamos a habilitarlo para que nos permita el uso de un cliente de correo electrónico instalado en nuestra estación de trabajo. Este cliente puede ser cualquiera que soporte el SMTP para el envío y el POP3 o el IMAP para recibir mensajes.

El servicio de correo que requerimos, básicamente, funciona de esta forma:

El servidor de correo utiliza el protocolo SMTP para recibir mensajes dirigidos a cuentas del mismo y los agrega a un archivo "buzón" (inbox) para cada usuario, en estos archivos, los mensajes se van acumulando, su formato es de texto y si en ellos hay archivos adjuntos, estos están codificados en un formato de texto llamado MIME.

Los mensajes de cada inbox pueden recibirse en un lector de mensajes empleando un protocolo, actualmente existen el POP3 y el IMAP, es importante resaltar que estos protocolos solo permiten recibir correo.

Para el envío de mensaje también se utiliza el protocolo SMTP de tal forma que el servidor recibe los mensajes desde el lector de mensajes del usuario y los reenvía a los destinatarios que corresponda, locales o remotos. A este reenvío se le conoce como relay.

Para esto va a ser necesario instalar un software que nos proporcione el protocolo POP3 o el IMAP, actualmente hay varias opciones, el software con el que vamos a trabajar es el dovecot.

También va a ser necesario configurar al sendmail para que haga relay solo de nuestros usuarios o de lo contrario, cualquier persona desde cualquier lugar del mundo podría utilizar nuestro servidor para hacer el envío de mensajes no deseados (spam), si ocurriera esto, nuestro servidor sería puesto en "lista negra" y no podríamos enviar mensajes a ningún lugar (y créanme que esto ocurre con mucha frecuencia) por lo que debemos mantener reglas para el reenvío.

Para instalar el dovecot, ya como es costumbre, vamos a bajar el archivo fuente (recomiendo la versión 2.0.4), la descomprimimos, la configuramos, compilamos e instalamos:

./configure --sysconfdir=/etc

make

sudo make install

Creamos los usuarios sin privilegios dovecot y dovenull.

useradd dovecot

useradd dovenull

En el directorio /etc/pam.d creamos el archivo dovecot con el siguiente contenido:

auth    required        pam_unix.so
account required        pam_unix.so

Copiamos el contenido del directorio /usr/local/share/doc/dovecot/example-config en /etc/dovecot

cp –r /usr/local/share/doc/dovecot/example-config/* /etc/dovecot

Ahora vamos a configurar el dovecot, para esto vamos a editar varios archives en /etc/dovecot

dovecot.conf.- Agregamos al final la línea:

ssl = no

conf.d/10-auth.conf.- Quitamos el signo de comentario a la línea disable_plaintext_auth y la dejamos asi:

disable_plaintext_auth = no

conf.d/10-master.conf.- La línea mail_location queda asi:

mail_location = mbox:~/mail:INBOX=/var/mail/%u

conf.d/10-ssl.conf.- Borramos el archivo o lo renombramos modificando el .conf, por ejemplo, yo lo renombre como 10-ssl.no

Una vez que lo configuramos estamos listos para ejecutarlo:

/usr/local/sbin/dovecot

Es normal que la primera vez que se ejecute aparezcan advertencias en los permisos de algunos directorios, ya en la segunda vez no deben de aparecer.

Para probarlo vamos a ejecutar lo siguiente:

telnet localhost 110
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user cuenta
+OK
pass contraseña
+OK Logged in.
list
+OK 5 messages:
1 461
2 1358
3 2045
4 2497
5 1181
.
quit
+OK Logging out.

Lo siguiente es configurar al sendmail para que permita el relay solo a ciertas IP's, para esto vamos a ir a los archivos de instalación del sendmail (cómo podrán ver, vale la pena mantener estos archivos ya que se utilizan con mucha frecuencia), nos cambiamos al subdirectorio cf/cf y modificamos el archivo sendmail.mc agregando 2 nuevas características: el access_db y el relay_hosts_only

divert(-1)
#
# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
#       All rights reserved.
# Copyright (c) 1983 Eric P. Allman.  All rights reserved.
# Copyright (c) 1988, 1993
#       The Regents of the University of California.  All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
#

#
#  This is a generic configuration file for Linux.
#  It has support for local and SMTP mail only.  If you want to
#  customize it, copy it to a name appropriate for your environment
#  and do the modifications there.
#

divert(0)dnl
VERSIONID(`$Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
MASQUERADE_AS(`unixymas.com.mx')dnl
FEATURE(`allmasquerade')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`access_db')dnl
FEATURE(`relay_hosts_only')dnl
MAILER(local)dnl
MAILER(smtp)dnl

Lo compilamos y copiamos a /etc/mail el sendmail.cf

Creamos el archivo de texto access y por cada dirección de usuario agregamos una línea con la IP un tabulador y la palabra RELAY

localhost       RELAY
ubuntu.unixymas.com.mx  RELAY
192.168.188.1      RELAY

También podemos utilizar nombres en lugar de las IP, pero debemos configurar el DNS para que la IP que resuelva cada nombre, también resuelva en reversa.

Ya que terminemos de crear el archivo, vamos a generar la base de datos con este "mapa" utilizando el comando makemap:

makemap hash access < access

Reiniciamos el sendmail y ya está listo para recibir peticiones de nuestro software cliente.

Configuramos al cliente de correo indicando la dirección de nuestro servidor SMTP, sin ningún tipo de autentificación, además de configurar el recibo de correo por medio del protocolo POP3 o el IMAP, indicando que la autentificación es normal, además de indicarle nuestra cuenta y contraseña del servidor.

Con esto damos por finalizada esta parte, tenemos como resultado un servidor de correo electrónico corporativo con un esquema de seguridad muy básico pero lo suficientemente robusto para mantener nuestras cuentas de correo seguras y que nuestro servidor no sea empleado cómo difusor de spam.

En la siguiente entrada vamos a ver una forma simple para brindarle a nuestro servidor un esquema de encriptación y autentificación que nos permita hacer el envío de correo desde cualquier dirección local y remota sin comprometer la seguridad de éste.

No hay comentarios.: