miércoles, 22 de septiembre de 2010

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


En cualquier empresa en la actualidad el servicio de correo electrónico es más que indispensable y los costos de software y licencias de software propietario son muy altos. Por lo que el uso de software libre puede ser una buena alternativa.

El correo electrónico en Internet, utiliza principalmente el protocolo SMTP, básicamente la forma en la que se hace el envío es por medio de una aplicación cliente, el usuario redacta un mensaje, al hacer el envío el software cliente lo "sube" a un servidor de correo, éste hace el envío al servidor de la cuenta destino y finalmente este servidor lo agrega al buzón del destinatario.

Este servicio que estoy presentando se basa en el sendmail, nos debe quedar muy claro que esta aplicación actúa como MTA (Mail Transfer Agent), es decir, como un agente de transferencia de correo, por lo que es necesario complementarlo con otras aplicaciones para poder contar con un servicio de correo electrónico empresarial.

Los requisitos que debe cumplir nuestro servidor además de tener instalado el gcc junto con librerías y el make, se debe tener instalado el autoconf y el m4.

Es muy recomendable también tener instalada la base de datos Berkeley DB, es muy fácil encontrarla en cualquier distro, por ejemplo en una instalación completa de Solaris 10 tenemos la versión 4.2.52

Otro programa que es recomendable tener es el procmail, el cual, es llamado LDA (Local Delivery Agent) y se encarga de colocar los mensajes recibidos a su correspondiente buzón (inbox).

En este ejemplo utilice nuevamente mi servidor Ubuntu, lo primero que hice fue instalar por medio del aptitude (en general, prefiero utilizar el aptitude en lugar del apt-get) el m4, autoconf y procmail.

Para la base de datos, baje el fuente desde el sitio de Oracle, lo compilé y lo instalé con el path /usr/local. Desde el subdirectorio generado al descomprimir el archivo:

cd build_unix
../dist/configure --prefix=/usr/local
make
sudo make install
Para que nuestra instalación de sendmail ocurra sin errores, debemos crear los directorios /usr/man/man1, /usr/man/man5, /usr/man/man8, /var/spool/mqueue y /var/spool/clientmqueue, además de la cuenta smmsp con el grupo smmsp, no es necesario que esta cuenta tenga un shell válido.

Los permisos para /var/spool/mqueue deben ser 0700 con propietario root y grupo root, para /var/spool/clientmqueue debe ser 0770 con propietario smmsp y grupo smmsp.

El fuente de sendmail lo obtenemos de su sitio, el más reciente es el de la versión 8.14.4, desde el subdirectorio generado al descomprimir ejecutamos:

sh ./Build -I/usr/local/include -L/usr/local/lib
sudo sh ./Build install
Es muy importante revisar las salidas del script Build, en ocasiones se presentan errores sin que se detenga la ejecución del script, por lo que al final de la corrida aparece como finalizado pero más arriba aparecen errores de que no pudo instalar tal o cual cosa. La mayor parte de las veces en las que ocurre error, es por permisos o algún directorio que haga falta.

Terminado de instalar, vamos a configurar, nos cambiamos al subdirectorio cf/cf, en este subdirectorio vamos a encontrar varios archivos *.mc, de estos solo necesitamos 2, el submit.mc, que aparece tal cual, y el sendmail.mc, el cual, vamos a obtener copiando el archivo que mejor se adapte a nuestro sitio, en mi caso, mi servidor es Linux, por lo que utilicé el archivo generic-linux.mc, lo copié a sendmail.mc. Ya que tenemos estos archivos vamos a compilar e instalar con:

sh ./Build sendmail.cf
sudo sh ./Build install-cf
Para continuar con la configuración del servidor nos cambiamos al directorio /etc/mail

Creamos el archivo de texto local-host-names, en su primer línea, simplemente vamos a escribir el nombre completo del servidor, en mi caso, ubuntu.unixymas.com.mx.

También vamos a crear un archivo vacío aliases, después de esto, vamos a ejecutar:

newaliases
Listo, con esto concluido podemos tratar de iniciar el servicio, vamos a levantar dos procesos, el MTA y otro al que se le denomina MSP (Mail Submission Program) de esta forma:

/usr/sbin/sendmail –bd –q15m
/usr/sbin/sendmail –Ac –q15m
Nota: el path en que se encuentra el sendmail puede variar según la plataforma, por ejemplo, en el caso de Solaris, el sendmail se encuentra en /usr/lib, cierto es que no debería estar ahí, pero por razones de compatibilidad se ha mantenido en ese path hasta la fecha.

Probamos el servicio haciendo un telnet al puerto 25 (SMTP) del servidor:

telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ubuntu.unixymas.com.mx ESMTP Sendmail 8.14.4/8.14.4; Wed, 22 Sep 2010 20:04:44 -0500
ehlo ubuntu.unixymas.com.mx
250-ubuntu.unixymas.com.mx Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
mail from:<hajarami@ubuntu.unixymas.com.mx>
250 2.1.0 <hajarami@ubuntu.unixymas.com.mx>... Sender ok
rcpt to:<hajarami@ubuntu.unixymas.com.mx>
250 2.1.5 <hajarami@ubuntu.unixymas.com.mx>... Recipient ok
data
354 Enter mail, end with "." on a line by itself
Subject: Prueba
 
Mensaje de prueba
.
250 2.0.0 o8N14iTY001384 Message accepted for delivery
quit
221 2.0.0 ubuntu.unixymas.com.mx closing connection
Connection closed by foreign host.
Con el comando mail desde la cuenta del destinatario voy a revisar que tengo un nuevo mensaje.

mail
Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/hajarami": 1 message 1 new
>N  1 hajarami@unixymas  Wed Sep 22 20:13   12/508   Prueba
Con esto tenemos un servidor sendmail ejecutando, podemos hacer pruebas enviando mensajes y recibiéndolos utilizando el alpine.

En la próxima entrada, vamos a ver cómo configurar a este servidor para que sea nuestro servidor corporativo.

No hay comentarios.: