Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

sábado, 4 de julio de 2015

Cómo configurar un servidor de correo en Raspian

En esta ocasión vengo a hablaros sobre un proceso muy interesante, pero al mismo tiempo delicado. Se trata de la creación y configuración de un servidor de correo en un sistema Linux. En mi caso en particular he optado en hacerlo en Raspian, pues en mi opinión representa un pequeño servidor "casero"¨que puede estar todo el día encendido gracias a su bajo consumo y rendimiento; y puede emular un servidor real a una muchísima menor escala. Aún así, he probado también a implantarlo sobre una máquina Debian y no he observado ningún problema, con lo que perfectamente puede aplicarse el contenido que voy a explicar a continuación en un sistema Debian "normal". Como aviso para aquellos que deseen hacer la prueba con un VPS (Virtual Private Server), os aviso que la mayoría tienen los puertos cerrados por defecto, con lo que probablemente tengáis poneros en contacto con los administradores del sitio para que os abran dichos puertos, los cuales son los: 993, 143 y 25.

Portada-correo

Para tener un servidor de correo funcional necesitaremos combinar dos herramientas; ambas muy populares entre los usuarios de Linux: Dovecot y Postfix. El primero haría de servidor IMAP, mientras que el otro haría la función de servidor SMTP. Ambas herramientas no están incluidas en Debian ni en Raspian, pero sí en sus repositorios con lo que habría que comenzar con la instalación de éstas mediante nuestro gran gestor de paquetes apt:

  1. apt-get install dovecot-imapd postfix

La instalación de dovecot es automática y no posee misterio alguno; Postfix en cambio sí que realiza un par de preguntas que es importante tener en cuenta. La primera pregunta hace referencia al tipo de servidor. Dependiendo de lo que se escoja, Postfix se encargará de realizar algunas configuraciones automáticas que se adaptarán a nuestras necesidades. El caso más común de todos, y el que nosotros usaremos, será el Sitio de Internet, pues sería lo equivalente a un servidor de correo que envía y recibe correos mediante SMTP.

Modo-correo

La segunda pregunta haría referencia al nombre de dominio que usaremos... Este dato equivaldría a el nombre que aparecería después del carácter '@', con lo que si por ejemplo quisiésemos que nuestro correo fuese usuario@raspmail.com, nuestro nombre de dominio sería raspmail, tal y como se muestra a continuación:

nombre-dominio

Con estas preguntas respondidas, la instalación de las ambas herramientas se podría dar por concluida, aunque obviamente no estaríamos preparados para enviar o recibir ningún correo, ya que de base ambas herramientas están preparadas para trabajar únicamente en local. Es por ello que habría que empezar con su configuración, empezando por el servidor IMAP, es decir, por dovecot.


Configurando dovecot

Si nuestro sistema no soporta IPv6 o lo tiene inhabilitado, dovecot será incapaz de funcionar. Eso es debido a que esta herramienta está configurada para funcionar bajo las arquitecturas ipv4 e ipv6 por defecto y cuando arranca está diseñado para aceptar a cualquier ip, sea cual sea su arquitectura. Para solucionar dicho error habría que dirigirse al fichero /etc/dovecot/dovecot.conf y modificar la línea en la que se muestra el parámetro listen.

La configuración por defecto sería esta:
  1. #listen = *, ::

Si queremos que funcione solo bajo IPv4, habría que modificarla de esta forma
  1. listen = *

Dovecot usa una configuración basada en pequeños módulos independientes con el fin de tener todo mejor dividido y poder gestionar cada apartado con mayor comodidad; también posee de un fichero de configuración principal, pero la cantidad de parámetros configurables dentro de éste son muy pocos y muy genéricos. Toda la información referente a esta herramienta se encuentra dentro de la ruta /etc/dovecot, y tal y como he dicho antes, su fichero principal, dovecot.conf, no nos es de gran utilidad (a menos que hayamos tenido el problema mencionado anteriormente), sino que los módulos de configuración presentes en la carpeta conf.d. Esta carpeta contiene muchos módulos, pero solo necesitaremos modificar unos pocos para tener un servidor IMAP completamente funcional.

El primer fichero importante es el 10-ssl.conf. Este fichero almacena los certificados SSL, los cuales son necesarios para realizar la conexión. Por fortuna, durante la instalación ya se instalan unos certificados generados de forma automática, pero se ha de tener en cuenta que estos certificados, aunque sólidos, tienen una validez de 10 años. Un tiempo más que considerable, pero que hay que tener en cuenta si se quisiese tener un servidor de correo "valido" durante más tiempo. La creación de unos certificados nuevos se desviarían por completo del propósito de este post, pero si que voy a resaltar las dos líneas que hacen referencia a dichos certificados por si en algún momento se deseasen cambiar:

  1. ssl_cert = </etc/dovecot/dovecot.pem
  2. ssl_key = </etc/dovecot/private/dovecot.pem

Por otro lado tendríamos el fichero de configuración de los "buzones", llamado 10-mail.conf. Este fichero posee configuración referente a todo lo relacionado a nuestro buzón, desde su ubicación a parámetros de optimización. El parámetro que, en mi opinión, es más interesante aquí es la localización del buzón. Eso es debido a que la localización que pone por defecto es muy genérica y aunque es perfectamente funcional, sería mejor poner algo que el usuario pudiese gestionar con mayor facilidad. Para ello habría que modificar el parámetro mail_location, el cual aparece entre las primeras líneas de configuración. Dicho parámetro especifica el directorio que almacena los mensajes, lo cual queda en manos del usuario, pero puede resultar ser una buena idea almacenar los mensajes en una carpeta llamada, por ejemplo, Maildir dentro del directorio personal de cada usuario. Esto haría que el parámetro en cuestión quedase de la siguiente forma:

  1. mail_location = maildir:~/Maildir


Es aconsejable que, para evitarnos dolores de cabeza, configuremos los "mailboxes" para que cuando queramos hacer cualquier prueba no tengamos problemas por falta de buzones. Para ello habría que acceder al fichero 15-mailboxes.conf, y modificar sus parámetros por defecto para crear y relacionar automáticamente todos los buzones. Eso haría que el contenido dicho fichero fuese este:

  1. # These mailboxes are widely used and could perhaps be created automatically:
  2.   mailbox Drafts {
  3.     auto=subscribe
  4.     special_use = \Drafts
  5.   }
  6.   mailbox Junk {
  7.     auto=subscribe
  8.     special_use = \Junk
  9.   }
  10.   mailbox Trash {
  11.     auto=subscribe
  12.     special_use = \Trash
  13.   }
  14.   mailbox Sent {
  15.     auto=subscribe
  16.     special_use = \Sent
  17.   }
  18.   mailbox "Sent Messages" {
  19.     auto=subscribe
  20.     special_use = \Sent
  21.   }

Además habría establecer la relación entre el servidor IMAP y SMTP, para que ambos se puedan comunicar entre sí y que el servidor SMTP se pueda autenticar con dovecot. Para ello habría que dirigirse al fichero 10-master.conf y habilitar la autenticación SMTP desde postfix. Dicho parámetro se halla en la línea 96 y por defecto se encuentra comentado (es decir con # al principio), con lo que habría que descomentarlo para dejarlo con el siguiente aspecto:

  1. #   Postfix smtp-auth
  2.   unix_listener /var/spool/postfix/private/auth {
  3.     mode =0666
  4.   }

Con esta configuración ya tendríamos lo necesario para que nuestro servidor IMAP funcione, pero aunque tenemos todo configurado, carecemos de los buzones que almacenarán nuestros mensajes. Cada usuario debe de tener su propio buzón particular, lo que puede llegar a ser engorroso... Además es necesario configurar el sistema para que en caso de añadir un nuevo usuario, este posea su propio buzón... Para evitar dolores de cabeza, he aquí un pequeño script que nos ahorrará todas las molestias, al que he llamado buzon.sh:

  1. #!/bin/bash
  2. cat /etc/passwd |grep home |cut -d ":" -f 1 > /tmp/usuarios.txt
  3. while read USUARIO
  4. do
  5.         su - ${USUARIO} -c 'maildirmake.dovecot ~/Maildir'
  6. done < /tmp/usuarios.txt
  7. rm /tmp/usuarios.txt
  8. maildirmake.dovecot /etc/skel/Maildir

Ahora sí. Dovecot se encuentra listo para ser completamente funcional. Únicamente habría que aplicar los cambios mediante el comando:

  1. /etc/init.d/dovecot restart


Configurando postfix

Con dovecot operativo, nos faltaría configurar postfix para que funcione correctamente. A diferencia de dovectot, en postfix, la mayoría de la configuración se almacena en un solo fichero; este fichero se llama main.cf, y se almacena en el fichero /etc/dovecot/.´En este fichero no sólo habrá que modificar algunos parámetros existentes, sino que también habrán que añadir algunos más.

Comenzaremos con dos aspectos fundamentales; las ips de escucha y las redes de confianza. El primer parámetro no aparece representado y es necesario añadirlo, ya que por defecto solamente está escuchando en la ip 127.0.0.1; Para ello habría que añadir el parámetro inet_interfaces de la siguiente forma:

  1. inet_interfaces = 127.0.0.1, 192.168.1.5

Además habría que modificar el parámetro mynetworks, que hace referencia a las redes de confianza. De momento postfix solo confía en sí mismo; Habría que ampliarlo para que todas las ips de nuestra red de área local sean consideradas de confianza. En mi caso por ejemplo dicha ips serían aquellas dentro del rango 192.168.1.0 y 192.168.1.255, lo cual nos lleva a modificar el parámetro tal que así:

  1. mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24

Aquí no es necesario eliminar toda referencia a ipv6, pues postfix se encarga de deshabilitar el soporte a ipv6 en caso de que el sistema no esté capacitado para soportar dicho tipo de ip. También es necesario especificar cual es el buzón que usaremos en postfix; buzón que debe de ser el mismo que el usado con dovecot, tal y como muestro a continuación con el parámetro home_mailbox, el cual no está definido por defecto, lo que significa que habría que añadir el susodicho:

  1. home_mailbox = Maildir/

De forma opcional, podemos definir también nuestros propios certificados SSL, al igual que con dovecot. Aún así, los certificados instalados por defecto son perfectamente válidos. Aún así, si quisiésemos usar otros certificados, los parámetros que habría que modificar serían estos dos:

  1. smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
  2. smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Por último, habría que añadir algunas directivas de seguridad; directivas que no están contempladas por defecto, pero que es importante poner si queremos tener al menos una seguridad básica. Obviamente habría que añadir más medidas de seguridad si se quisiese exponer el servidor a muchas personas; una combinación de fail2ban e iptables entre otras cosas. Eso no significa que debamos prescindir de estas medidas en caso de tener de un buen cortafuegos:

  1. smtpd_client_restrictions = permit_mynetworks,
  2.                             permit_sasl_authenticated,
  3.                             reject
  4. smtpd_recipient_restrictions = permit_mynetworks,
  5.                                permit_sasl_authenticated,
  6.                                reject_unauth_destination
  7. smtpd_helo_restrictions = reject_unknown_sender_domain
  8. smtpd_sender_restrictions = reject_unknown_sender_domain

Con todo esto especificado, simplemente habría que reiniciar postfix mediante el comando:

  1. /etc/init.d/postfix restart


Con esto ya tendríamos las bases de la creación de un servidor de correo en un entorno basado en Debian. A partir de aquí uno debería ver si por ejemplo desea darle un uso local o si en cambio prefiere mandar correos al exterior mediante un servidor SMTP externo; todo depende de las necesidades y gustos de cada uno.

Espero que os resulte útil.

Saludos.

No hay comentarios :

Publicar un comentario