Servidor de correo con CentOS 5
Puede usar Red Hat Enterprise Linux o CentOS 5. RHEL 5 puede ser comprado desde el sitio web de Red Hat y viene con soporte. Por otro lado puede descargar CentOS 5 líbremente desde aquí.
Pasos para la Instalación
Después de haber obtenido una copia de RHEL5 o CentOS 5, proceda con los siguientes pasos para instalarlo. En este caso usaremos CentOS 5, pero los pasos también pueden ser usados en RHEL5.
Arrancar el CD 1 o DVD
Inserte el CD 1 o DVD de CentOS 5 y espere que salga un splash como el siguiente:

Y presione Enter. Esto instalará CentOS en modo gráfico.
Ahora saldrá una pantalla como la siguiente:

Seleccione Skip, ya que esto tomará mucho tiempo.
Ahora presione Next.
Mensaje de bienvenida

Selección del lenguaje
Escoja su lenguaje y de click en Next.

Configurar el teclado
Configure su teclado y de click en Next.

Particionar el disco duro
Ahora le toca particionar su disco duro, puede usar la configuración por defecto o particionar su disco Ud. mismo. Si sale una advertencia de click en Yes.

Configuración de la red
Ahora toca configurar la red, digamos que tiene una configuración similar a esta:
IP Address 10.0.0.23
Subnet Mask 255.255.255.0
Gateway 10.0.0.138
Primary DNS 208.67.222.222
Secondary DNS 208.67.220.220
Use una configuración similar a esta:

No olvide de asignarle una dirección IP estática, ya que este es un servidor y de desabilitar IPv6.
Debe quedar algo como esto:

Localización y hora
Escoja su región en el mapa y seleccione si su sistema usa UTC o no. Cuando este listo de click en Next.

Contraseña del usuario root
Ahora escoga una contraseña para el usuario root:

Selección de paquetes
Ahora viene la selección de paquetes, seleccione solo la sección Server y nada más, y de click en Customize now. Si desea puede agregar el repositorio CentOS Extras ahora. Al momento de personalizar los paquetes, instale Postfix y Dovecot y no sendmail. Si desea puede instalar un servidor DNS, HTTP y MySQL, pero lo principal son los servidores de correo. De click en Next cuando esté listo.

Inicio de la instalación
Ahora empieza la instalación del sistema.


Fin de la instalación
Una vez terminada la instalación proceda a reiniciar la máquina y retirar el CD o DVD.

Configuración Inicial
Después de instalar correctamente RHEL5 o CentOS 5 procedamos a configurarlo por pimera vez.

Firewall
Seleccione con el teclado Firewall Configuration:

Y desabilite SElinux, esto nos ahorrará unos cuantos jalones de pelos y dolores de cabeza... Ahora personalize el Firewall y configúrelo de esta manera:

Lo que se debe ingresar es:
Al finalizar seleccione OK.
Ahora salgamos de este asistente seleccionando Quit.
Instalación y configuración de los paquetes
Ahora inicie sessión como root. Elegimos trabajar como root, por tratarse de tareas administrativas.
Nota: Recuerde que no debe usar root siempre, sólo cuando sea estrictamente necesario.
Postfix
Instalar y configurar Postfix para CentOS es fácil. Postfix viene con una configuración muy segura, asi que trataremos de abrirla un poco.
Si no instaló Postfix durante la fase de selección de paquetes puede instalarlo ahora mismo usando el siguiente comando:
Ahora configuremos el archivo /etc/postfix/main.cf:
Busque los siguientes parámetros y cámbielos según dice aqui:
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = mail/
Con esto decimos que Postfix responda a los pedidos en la red y ademas que use el formato Maildir que es mejor que el que viene por defecto, llamado mbox. Las líneas que empiezan con # son comentarios. Una vez hechos los cambios guárdelos con Control+X (si usa nano como su editor de textos).
Reinicie el servicio Postfix:
Y agréguelo a los servicios que se iniciarán al cargar el sistema:
Ahora agregue un usuario al sistema de la siguiente manera:
Ahora, no olvide de ponerle como shell /bin/false, asi Ud. no le permite conectarse al servidor por medio de SSH. Además no olvide de asignarle una contraseña. Hágalo mediante el siguiente comando:
passwd juan
Ahora probaremos nuestra instalación de Postfix usando telnet. El punto después de test es un comando que debe ser escrito. Expliquemos paso a paso:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.bavrit.com ESMTP Postfix
Ahora tipee:
Debe salir algo como esto:
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Ahora pruebe enviando un email. Debe escribir lo que dicen las líneas:
mail from: su-usuario (remitente)
rcpt to: su-usuario (destinatario)
data
test (el cuerpo del mensaje, el punto es para finalizar la redacción)
.
quit (cerrar sesión)
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.bavrit.com ESMTP Postfix
ehlo mail
250-mail.bavrit.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: juan
250 2.1.0 Ok
rcpt to: juan
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test
.
250 2.0.0 Ok: queued as D33AE10042
quit
221 2.0.0 Bye
Connection closed by foreign host.
Verifique si el correo llegó:
[root@mail new]# ls
1191978078.V803I277e8M857132.mail.bavrit.com
[root@mail new]# cat 1191978078.V803I277e8M857132.mail.bavrit.com
No se preocupe, no tiene que tipear todo el nombre del archivo, basta con que escriba los dos primeros caracteres y presionar Tab para que se complete automáticamente.
X-Original-To: juan
Delivered-To: juan@mail.bavrit.com
Received: from mail (localhost.localdomain [127.0.0.1])
by mail.bavrit.com (Postfix) with ESMTP id D33AE10042
for <juan>; Tue, 9 Oct 2007 20:00:58 -0500 (PET)
Message-Id: <20071010010105.D33AE10042@mail.bavrit.com>
Date: Tue, 9 Oct 2007 20:00:58 -0500 (PET)
From: juan@mail.bavrit.com
To: undisclosed-recipients:;
test
Si todo sale bien sigamos con los siguientes pasos, sino, puede verificar algun error en el archivo /var/log/maillog.
Ahora procedamos con la autenticación SMTP para esto abrimos el fichero /usr/lib/sasl2/smtpd.conf (/usr/lib64/sasl2/smtpd.conf para usuarios de 64-bits) y agregue la siguiente línea:
Inicie o reinicie el servicio saslauthd:
Y agréguelo a los servicios que se iniciarán al cargar el sistema:
Ahora necesitamos reconfigurar Postfix:
Busque los siguientes parámetros y cámbielos como dice aquí, si no encuentra algún parámetro agreguelo al final del archivo.
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients = yes
La primera línea dice que sólo se puede enviar desde localhost, esto es, que sólo localhost puede enviar correos al exterior. La última línea es para el soporte de clientes de correo antiguos como Microsoft Outlook Express 4.0 y Microsoft Exchange 5.0, sólo en caso alguien los siga usando.
Reinicie Postfix:
Ahora con esto ya tenemos nuestro servidor SMTP con autenticación funcionando. Sigamos con Dovecot nuestro servidor IMAP y POP3.
Si todo sale bien sigamos con los siguientes pasos, sino, puede verificar algun error en el archivo /var/log/maillog.
Dovecot
La instalación de Dovecot en CentOS o RHEL es fácil. Todo lo que necesitamos es decirle que protocolos necesitamos y ya, todo listo.
Abrimos el archivo /etc/dovecot.conf:
Encuentre los siguientes parámetros y cámbielos según diga lo siguiente:
mail_location = maildir:~/mail/
passdb pam { session=yes
}
imap_client_workarounds = delay-newmail outlook-idle netscape-eoh
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
Guárdelo. Las líneas que empiezan con # son comentarios. Las dos últimas líneas son parámetros para no tener problemas con algunos clientes de correo, los cuales tienen algunos bugs.
Reinicie o inicie Dovecot:
Y agréguelo a los servicios que se iniciarán al cargar el sistema:
Ahora vamos a probar Dovecot uasndo telnet. Debe escribir lo que dicen las líneas:
pass su-contraseña
list (listar los mensajes recibidos)
retr 1 (ver el primer mensaje)
quit (salir)
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user juan
+OK
pass contraseña
+OK Logged in.
list
+OK 1 messages:
1 427
.
retr 1
+OK 427 octets
Return-Path: <juan@mail.bavrit.com>
X-Original-To: juan
Delivered-To: juan@mail.bavrit.com
Received: from mail (localhost.localdomain [127.0.0.1])
by mail.bavrit.com (Postfix) with ESMTP id D33AE10042
for <juan>; Tue, 9 Oct 2007 20:00:58 -0500 (PET)
Message-Id: <20071010010105.D33AE10042@mail.bavrit.com>
Date: Tue, 9 Oct 2007 20:00:58 -0500 (PET)
From: juan@mail.bavrit.com
To: undisclosed-recipients:;
test
.
quit
+OK Logging out.
Connection closed by foreign host.
Si todo sale bien sigamos con los siguientes pasos, sino, puede verificar algun error en el archivo /var/log/maillog.
Implementación de SSL/TLS
Ahora un punto muy importante es la seguridad. Ahora les mostraremos como lograrlo. Configuraremos nuestro servidor de correo para que utilice SSL/TLS para obtener conexiones seguras.
Obtener un certificado digital
Lo primero que se debe hacer es obtener un certificado digital ya sea gratuito, firmado por nosotros mismo o por alguna entidad comercial.
En esta ocación usaremos CAcert.org para que firme nuestro certificado digital, primero debemos hacer una petición:
mkdir ssl
cd ssl
openssl genrsa -out mail.key 1024
openssl req -new -key mail.key -out mail.csr
Ahora regístrese en www.cacert.org e ingrese el contenido del archivo mail.csr y en unos segundos tendrá ya su certificado firmado y listo para usarse.
Nota: Para Postfix debe bajarse el certificado raíz que se encuentra aquí. Para descargar haga click derecho en el link y guárdelo como cacert.crt.
Guarde el texto que sale al pedir un certificado en un archivo llamado mail.cert.
Postfix + TLS
Ahora procedamos a configurar Postfix para que haga uso de nuestro certificado digital.
cd ~/ssl
cp mail.crt mail.key cacert.crt /etc/postfix/ssl
Adjunte estas líneas al final del archivo /etc/postfix/main.cf:
smtpd_tls_auth_only = yes
smtpd_tls_key_file = /etc/postfix/ssl/mail.key
smtpd_tls_cert_file = /etc/postfix/ssl/mail.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.crt
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Finalmente reinicie Postfix:
Para comprobar si está bien su configuración ejecute:
La línea relevante es:
Si salió esto, entonces quiere decir que todo anda bien.
Nota: Al configurar nuestro cliente de correo, use el método TLS, de lo contrario el servidor no enviará ningún correo, ya que se le especificó que si no se usa TLS que no se envie nada. Si no se quiere esto puede cambiar la variable smtpd_tls_auth_only a "no".
Dovecot + SSL
Ahora nos toca configurar Dovecot para que haga uso de nuestros certificados digitales.
cp mail.crt /etc/pki/dovecot/certs/dovecot.pem
cp mail.key /etc/pki/dovecot/private/dovecot.pem
Ahora editamos el archivo /etc/dovecot.conf y quitamos el símbolo de comentario (#) a las siguientes variables:
ssl_key_file = /etc/pki/dovecot/private/dovecot.pem
Finalmente reinicie Dovecot:
Y listo, configure su cliente de correo especificando que se quiere una conexión de tipo SSL.
Conclusión
Con esto terminamos la configuración de nuestro servidor de correos usando CentOS o RHEL. Si tiene alguna duda o comentario, por favor use los foros o envie un comentario, gracias.
Nota: Al momento de configurar los clientes de correos use usuario en lugar de usuario@dominio.com.
Excelente howto... Practico y sencillo... Felicitaciones!
Tengo una duda... ¿Como hago para configurar dominios virtuales o alias de dominio, para que mi servidor reciba correos @primer-dominio.com y @otro-dominio.com.co?
Y segundo: ¿Los usuarios se crean como usuarios locales del sistema?, de ser asi, ¿Como vinculo cada usuario a su respectivo dominio, es decir como le digo que lbeltran (por ejemplo) sea @primer-dominio.com y que tatocasta sea @otro-dominio.com.co? y que no me quede por ejemplo tatocasta@primer-dominio.com...
Gracias por la ayuda...
Hola, lamentablemente este howto está diseñado para un servidor de un solo dominio, como por ejemplo en una institución del estado o una universidad en donde no se necesitan más de un dominio.
Pero hay una solución simple a esto, agrega esto al archivo /etc/postfix/main.cf:
virtual_alias_maps = hash:/etc/postfix/virtual
Y esto al archivo (si no existe, crearlo) /etc/postfix/virtual (si los parentesis):
tatocasta(@)otro-dominio.com.co tatocasta
Y ejecute:
postfix reload
Esto lo que hace es crear aliases, o sea, le asigna a lbeltran el primero dominio y a tatocasta el segundo dominio.
Claro que sería mucho mejor para su caso configurar un servidor para manejar varios dominios usando MySQL por ejemplo, pero esto ya es más complicado y a la vez más flexible.
Gracias por su comentario.










