Instalación y configuración de Postfix/Dovecot en CentOS

Transcripción

Instalación y configuración de Postfix/Dovecot en CentOS
Instalación y configuración de Postfix/Dovecot
en CentOS
Escrito por webstorebox el 13 mar, 2011 en Servidores, Tutoriales | Ver comentarios
Home » Servidores » Instalación y configuración de Postfix/Dovecot en CentOS
Hola a todos, en este tutorial vamos a explicar paso a paso cómo instalar y configurar el servidor de
correo con Postfix/Dovecot para que funcione sobre una distribución CentOS de Linux.
La mayor parte de las personas estamos familiarizados con el correo electrónico. Pero, ¿qué ocurre
exactamente cuando se envía un email desde un cliente de correo o MUA? El proceso no es
complicado si tenemos claros unos cuantos conceptos.
Introducción al servidor de correo
En primer lugar, el cliente de correo o MUA -Mail User Agent- (como puede ser el Thunderbird/MS
Outlook) de la persona que envía el correo envía el email al servidor SMTP o MTA -Mail Transport
Agent- correspondiente al usuario logueado con sus credenciales STMP en el MUA. Una vez el email
está en este servidor SMTP “saliente”, el servidor comprueba a qué otro servidor SMTP tiene que
enviar el correo consultando los registros MX mediante una consulta DNS. En este momento, este
primer servidor SMTP envía el email al segundo servidor SMTP donde se encuentra el buzón de correo
de la dirección de correo electrónico a la que iba dirigido el email. Finalmente, el cliente de correo o
MUA de la persona a la que va dirigido el correo recupera el email del buzón de este segundo servidor
SMTP.
Resumiendo:
1. El cliente de correo (MUA) “A” envía el email al servidor SMTP “1″.
2. El servidor SMTP (MTA) “1″ comprueba los registros MX mediante una consulta DNS y envía
el email al servidor SMTP (MTA) “2″, donde se encuentra el buzón de correo de la persona a la
que va dirigida el correo electrónico.
3. El servidor SMTP (MTA) “2″ recibe el email y lo almacena en el buzón de correo electrónico
del usuario correspondiente a la persona a la que va dirigido el correo electrónico.
4. El cliente de correo (MUA) “B” recupera el email del buzón desde el servidor SMTP “2″
mediante IMAP o POP, permitiendo así la lectura del correo electrónico.
Una vez introducidos los conceptos básicos del funcionamiento del correo electrónico, vamos a
disponernos a instalar y configurar un servidor de correo nosotros mismos. Allá vamos.
Paso 1: Comprobar si los paquetes están ya instalados
El primer paso que vamos a hacer es comprobar si los paquetes correspondientes están o no instalados
en el sistema. Para esto instroducimos los siguientes comandos:
$ sudo rpm -q postfix dovecot
En caso de que los paquetes no estén instalados en el sistema se nos devolverá la siguiente salida:
package postfix is not installed
package dovecot is not installed
Bien, con esto hemos comprobado que los paquetes correspondientes a Postfix y Dovecot no están
instalados en nuestro sistema Linux.
Paso 2: Instalación de los paquetes Postfix y Dovecot
Una vez hecha la comprobación vamos a proceder a instalar los paquetes utilizando el gestor de
paquetes yum de CentOS. Para esto introducimos los siguientes comandos:
$ sudo yum install postfix dovecot
Y pulsamos “y” cuando nos pregunte si queremos descargar los paquetes.
El comando anterior nos instalará también las depencias en caso de que no las tengamos ya instaladas.
Las dependencias de que se instalarán serán mysql y perl-DBI.
Paso 3: Seleccionar Postfix como MTA por defecto
Ahora necesitamos decirle a CentOS que Postfix es el MTA por defecto, esto lo haremos empleando el
comando system-switch-mail (conmutador del agente de transporte del correo). Introducimos el
comando:
$ sudo system-switch-mail-nox
Si CentOS no ha encontrado el comando porque no está instalado el paquete, tendremos que instalarlo.
Para esto, tendríamos que introducir los comandos:
$ sudo yum install system-switch-mail
# ahora sí, ejecutaremos system-switch-mail exitosamente
$ sudo system-switch-mail-nox
En la pantalla que nos saldrá, seleccionamos Postfix en lugar de Sendmail que es el MTA por
defecto en CentOS. De esta forma, nuestro sistema CentOS empleará CentOS como MTA a partir de
ahora.
Paso 4: Iniciar el servicio Postfix
Iniciamos el servicio con el siguiente comando:
$ sudo service postfix restart
Con esto ya tenemos Postfix instalado e iniciado en nuestro servidor.
Paso 5: Logs de Postfix
Podremos ver los logs que genera el servicio Postfix en el siguiente fichero:
/var/log/maillog
Podemos ver la actividad de los logs en tiempo real con los comandos tail y tail -f.
$ sudo tail -f /var/log/maillog
Para saber que Postfix se ha iniciado correctamente deben de aparecer las siguientes líneas en el log de
postfix:
Jan 9 12:12:44 localhost postfix/postfix-script: starting the Postfix mail system
Jan 9 12:12:44 localhost postfix/master[9379]: daemon started -- version 2.3.3,
configuration /etc/postfix
Paso 6: Configuración de Postfix
Los dos archivos principales de configuración de Postfix son los siguientes:
/etc/postfix/main.cf
/etc/postfix/master.cf
El fichero main.cf contiene un subconjunto de la mayoría de las opciones de configuración que puede
utilizarse para personalizar Postfix. Puedes añadir aquí más parámetros de configuración adicionales si
lo necesitas.
Por su parte, el fichero master.cf controla cómo se conectan los clientes al servidor. La mayoría de
veces no necesitarás cambiar mucho este fichero. En este fichero podemos ver una lista de los
demonios, servicios y procesos que pueden configurarse en Postfix.
El fichero main.cf: configuraciones generales de Postfix
Como hemos comentado, el fichero mail.cf es donde se almacenan los valores de configuración de
Postfix. Puedes ver los valores actuales de configuración de su Postfix (fichero main.cf) mediante el
siguiente comando:
$ sudo postconf
Para ver los valores que han cambiado en relación a los valores de configuración por defecto de la
instalación de Postfix, emplea el siguiente comando:
$ sudo postconf -n
Lo primero es decirle a Postfix qué dominios debe de utilizar para administrar su correo. Para ello
modificamos la opción mydestination del archivo main.cf. Para hacer el cambio podemos usar el
siguiente comando:
$ sudo nano /etc/postfix/main.cf
Dejamos la variable mydestination como se muestra:
mydestination = mail.mi-dominio.com, localhost.localdomain, localhost, midominio.com
Ahora Postfix sabe que si el servidor de correo recibe un email destinado a una dirección de email
perteneciente a uno de estos dominios (el campo para es una cuenta de correo de uno de estos
dominios), el servidor de correo debe de aceptar el email y procesarlo. Por ejemplo, si recibe un
correo que se debe enviar a la dirección de correo [email protected] (el campo para del email de
[email protected]).
Si queremos que Postfix también acepte correos dirigidos a otros dominios, deberemos de agregarlo al
mydestination. Es importante que se encuentre localhost en mydestination para que Postfix acepte y
procese el correo local utilizado por procesos del servidor.
A continuacion necesitamos añadir las redes a la que está conectado el servidor en la variable de
configuración mynetworks. En este punto estableceremos las interfaces de red del servidor desde las
cuales se aceptarán y procesarán correos:
mynetworks = 127.0.0.0/8, 192.168.1.0/24
Después de esto, reniciamos postfix con el siguiente comando:
$ sudo service postfix reload
y comprobamos que se haya reiniciado correctamente leyendo la salida del comando.
Paso 7: Abrir el puerto 25 en el firewall
Lo que tenemos que hacer ahora es abrir el firewall para que acepte conexiones en el puerto 25. Este
el puerto que emplea SMTP para enviar correo, por lo que tenemos que habilitarlo para que el servidor
de correo sea útil y pueda enviar y recibir correo. Para ello, usamos el siguiente comando:
$ sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
Ahora para comprobar que Postfix está funcionando, podemos enviarnos un mail de prueba desde línea
de comandos:
$ echo "cuerpo del mensaje" > body.txt
$ mail -s "Asunto de prueba" [email protected] < body.txt
Si tratamos de enviar un mail con un usuario que no esté creado en el sistema, Postfix lo rechazará con
un mensaje 550 como el siguiente:
Recipient address rejected: User unknown in local recipient table
El comando mail conectará con localhost por el puerto 25 y enviará el email. Podemos tratar de enviar
otro email cambiando el asunto y el cuerpo del mensaje usando el mismo comando.
Paso 8: Cambiar el formato de buzón de Mailbox a Maildir
Una vez enviado el email de prueba del paso anterior, vamos a analizar el email en:
/var/spool/mail
y veremos que en esta carpeta existe un fichero por cada usuario (dirección de correo electrónico) que
emplea el servidor de correo.
Si miramos el contenido del fichero al que hemos enviado un email veremos que aparecen todos los
mails del usuario en el mismo fichero. Esto es así porque se está empleando el formato de buzón
Mailbox (también llamado Mbox). Este formato de buzón es poco práctico y puede corromperse con
facilidad si se dan una serie de situaciones.
Para un mejor desempeño, cambiaremos al formato de buzón a Maildir, que utiliza un fichero
diferente por cada email. Para ello editamos otra vez el fichero main.cf. Modificamos las siguientes
líneas de esta manera:
home_mailbox=Maildir/
mailbox_command =
y reiniciamos postfix:
$ sudo service postfix restart
Después de cambiar el formato de buzón, si volvemos a ejecutar el comando mail como anteriormente,
deberiamos ver que se ha creado el siguiente directorio:
/home/usuario/Maildir
Dentro de este directorio vemos los directorios new, cur y tmp. En el directorio new se alamcenan los
emails no leidos, y en el directorio cur se almacenan los emails una vez se han leido. En el momento en
que un email se lee, éste se mueve de la carpeta new a la carpeta cur en el buzón del usuario.
Paso 9: Autenticación
Ahora vamos a configurar la autenticación de nuestro servidor de correo. En este punto del tutorial, los
usuarios no podrán enviar correos desde redes que no estén configuradas en mynetworks del archivo
main.cf. Para que los usuarios puedan enviar correos desde cualquier red manteniendo la
seguridad del sistema, es necesario incluir un sistema de autenticación, que es lo que estamos viendo
en este apartado.
Tendremos que comprobar que Postfix soporta autenticación SASL con Dovecot. Para ello
ejecutamos el siguiente comando:
$ sudo postconf -a
La salida del comando deberá de ser la siguiente:
cyrus
dovecot
Este comando devuelve todos los plugins de autenticación SASL soportados por Postfix. Deberemos de
buscar el plugin dovecot en la salida del comando anterior. En este caso si que aparece, ya que en el
paso 2 del tutorial instalamos el paquete correspondiente.
Ahora tenemos que editar el fichero de configuración de Dovecot:
$ sudo nano /etc/dovecot.conf
Tenemos que configurar las siguientes opciones tal como se muestran aquí:
auth default{
mechanisms=plain login
passdb pam{
}
userdb passwd{
}
socket listen{
client{
path=/var/spool/postfix/private/auth
mode=0660
user=postfix
group=postfix
}
}
}
Después reiniciamos el servicio Dovecot:
$ sudo service dovecot restart
Para confirmar que Dovecot se está ejecutando, hay que emplear los siguientes comandos. Este es el
primero:
$ sudo tail -f /var/log/maillog
# y verificar que en la salida del comando aparecen las líneas:
Jan 9 18:12:24 localhost dovecot: Dovecot v1.0.7 starting up
Jan 9 18:12:24 localhost dovecot: Generating Diffie-Hellman parameters for the
first time. This may take a while..
y este es el segundo:
$ sudo ps -A | grep doveco
# verificamos que en la salida del comando aparecen las siguientes líneas
11698 ?
00:00:00 dovecot
11700 ?
00:00:00 dovecot-auth
Ahora tendremos que volver a configurar el fichero main.cf de Postfix para que utilice el servicio
SASL de Dovecot. Editamos el fichero main.cf para añadir las siguientes líneas:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_tls_auth_only = no
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,
reject_unauth_destination
Reiniciamos Postfix para que los cambios tengan efecto:
$ sudo service postfix restart
Hasta ahora, nuestro servidor solamente permitía enviar correo a direcciones que no estuvieran dentro
de mydestination si la IP desde donde se mandaba el mail venía de una red situada en mynetworks, una
vez implementada la autenticación SASL, cualquier usuario que se haya autenticado podrá hacer relay.
Con estos pasos tendríamos configurada la autenticación en nuestro servidor de correo.
Paso 10: Creación de buzones para direcciones de correo
electrónico
Como configuraciones previas para la correcta creación de los buzones de correo, deberemos
ejecutar los siguientes comandos:
sudo rpm -Uvh ftp://ftp.silfreed.net/repo/rhel/5/i386/silfreednet/RPMS/maildrop2.0.4-1.el5.i386.rpm
$ sudo maildirmake /etc/skel/Maildir
$ sudo maildirmake -f Sent /etc/skel/Maildir
$ sudo maildirmake -f Trash /etc/skel/Maildir
$ sudo maildirmake -f Drafts /etc/skel/Maildir
$ sudo maildirmake -f Spam /etc/skel/Maildir
El primer comando instala maildrop, que es un MDA que se encarga de almacenar los emails en su
correspondiente buzón. De momento no utilizaremos maildrop como MDA, en futuros artículos
veremos como implementar maildrop y como realizar filtros para ordenar nuestro email por carpetas y
aplicaciones algo más avanzadas, como filtros antispam, etc…
Los siguientes comandos crean una estructura de buzón de correo que servirán como plantilla
para los bozones que se creen a partir de este momento. Según los comandos que hemos ejecutado, los
buzones que se creen tendrán las carpetas Sent, Trash, Drafts y Spam.
En el sistema que estamos implantando, los buzones de los usuarios del servidor de correo estarán
en la carpeta /home de cada usuario. Tal como hemos comentado en puntos anteriores del tutorial, la
carpeta home de cada usuario del servidor de correo estará compuesta de una carpeta Maildir (el
buzón de correo) con las siguientes subcarpetas:
• carpeta new: aquí se almacenan los emails que no han sido leídos.
• carpeta cur: aquí se almacenan los emails que ya han sido leídos. Cuando un email se lee se
mueve de la carpeta new a la carpeta cur.
• carpeta tmp: esta carpeta la utiliza el servidor de correo internamente.
Recuerda que para crear usuarios del sistema en CentOS (Linux) hay que ejecutar el siguiente
comando:
$ sudo useradd nombre-de-usuario
En el momento que creemos el usuario se creará una carpeta en /home con el nombre de usuario, y el
buzón con la estructura que acabamos de definir. El propietario de cada Maildir debe de ser sólo el
usuario al que pertenece, y los permisos deben de ser 700. Recuerda que puedes usar los comandos
chown y chmod para establecer el propietario y los permisos de los archivos y carpetas.
Bueno, pues con esto está todo listo para poder usar nuestro servidor de correo. En futuras entregas
veremos aspectos más avanzados sobre la base de este mismo servidor de correo que hemos instalado y
configurado mediante los pasos de este tutorial.
Esperamos que os haya servido, un saludo a todos.
http://www.webstorebox.com/instalacion-y-configuracion-de-postfix-dovecot-en-centos

Documentos relacionados