sábado, 9 de mayo de 2009

Servidor de Correos Corporativo en CentOS - 1era parte (Postfix)


Hola a todos, en esta oportunidad detallaré como implementar un completo Servidor de Correos bajo GNU/Linux en un entorno empresarial paso a paso. Trataré de hacer que la explicación sea lo más sencilla posible.
Así que sin más preámbulos, manos a la obra!!!
En primer lugar, les alcanzo, en que consistirá el Servidor de Correos que propongo:

- Sistema Operativo GNU/Linux, distribución: CentOS 5.3
- Servidor SMTP : Postfix
- Servidor POP3, IMAP : Dovecot
- Webmail: Squirrelmail
- Antivirus: ClamAV
- Antispam : Spamassassin
- Sistema de seguridad para e-mail: MailScanner.

Bien, en esta primera parte empezaré por la instalación y configuración de Postfix como servidor SMTP.

Abrimos una terminal e instalamos postfix y el paquete system-switch:
# yum install postfix system-switch-mail-gnome

Este último paquete nos sirve para poder escoger que servidor smtp usará CentOS por defecto, y lo lanzamos así:
# system-switch-mail
y escogemos postfix como servidor smtp por defecto.

Desactivamos el servicio de sendmail para que no moleste xD!:
# chkconfig sendmail off

Ahora procedemos a editar el fichero de configuración de postfix:
# vim /etc/postfix/main.cf

Buscamos las siguientes líneas y cambiamos sus valores como siguen (vamos a suponer que el dominio es linuxfacil.com):

myhostname = servidor.linuxfacil.com
mydomain = linuxfacil.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/


Ahora una explicación rápida de cada parámetro:

myhostname: Define el nombre completo del servidor de correos.
mydomain: Define solo el dominio.
myorigin: Define lo que viene después del "@" en cada cuenta de correo. (que en nuestro caso las cuentas de correo serán: cuenta@linuxfacil.com ).
inet_interfaces: por que interfaces escuchará el servidor de correos.
mydestination: especifica la lista de dominios que el servidor considera como destinos.
home_mailbox: especifica el directorio donde el usuario recibirá sus mensajes (en nuestro caso en /home/usuario/Maildir).

Reiniciamos postfix:
# service postfix restart

Ahora a testear postfix, para esto creamos 2 usuarios. En mi caso: michael y pilar, e iniciamos una sesión telnet en nuestro servidor por el puerto 25. D
e color azul lo que se tiene que teclear dentro de la sesión:

# telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 servidor.linuxfacil.com ESMTP Postfix
ehlo host
250-servidor.linuxfacil.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: michael
250 2.1.0 Ok
rcpt to: pilar
250 2.1.5 Ok
data
354 End data with .
hola!!!
.
250 2.0.0 Ok: queued as C91851E59F9
quit
221 2.0.0 Bye
Connection closed by foreign host.

En la sesión telnet anterior, lo que se hizo es que el usuario "michael " le envíe un correo al usuario "pilar". El mensaje contiene el texto: "hola!!!", nótese el punto después del mensaje; esto es para finalizarlo. Salimos de la sesión telnet con "quit".

Ahora sólo falta comprobar si el mensaje llegó. Tecleamos:
# cd /home/pilar/Maildir/new
# ls

1241947033.V807I1c39e5M812356.servidor
# cat
1241947033.V807I1c39e5M812356.servidor
Return-Path:
X-Original-To: pilar
Delivered-To: pilar@linuxfacil.com
Received: from host (localhost.localdomain [127.0.0.1])
by servidor.linuxfacil.com (Postfix) with ESMTP id C91851E59F9
for ; Sun, 10 May 2009 04:17:03 -0500 (PET)
Message-Id: <20090510091706.c91851e59f9@servidor.linuxfacil.com>
Date: Sun, 10 May 2009 04:17:03 -0500 (PET)
From: michael@linuxfacil.com
To: undisclosed-recipients:;

hola!!!


Como verán se puede visualizar el mensaje que le habíamos enviado. Si llegamos hasta aquí, nuestro servidor SMTP ya está listo, faltaría avanzar con lo demás.
Espero que les haya servido, nos vemos en la 2da parte :D

Saludos,