Instale un servidor de correo completo con Postfix y Webmail en Debian 9


Este tutorial lo guiará sobre cómo instalar y configurar un servidor de correo completo con Postfix en la versión Debian 9. También cubrirá cómo configurar los buzones de correo de las cuentas usando Dovecot para recuperar y redactar correos a través del protocolo IMAP. Los usuarios utilizarán la interfaz Rainloop Webmail como el agente de usuario de correo para manejar el correo.

  1. Instalación mínima de Debian 9
  2. Una dirección IP estática configurada para la interfaz de red
  3. Un nombre de dominio registrado local o público.

En este tutorial usaremos una cuenta de dominio privado para la configuración del servidor de correo configurada a través del archivo/etc/hosts únicamente, sin ningún servidor DNS involucrado en el manejo de la resolución DNS.

Paso 1: Configuraciones iniciales para el servidor de correo Postfix en Debian

1. En el primer paso, inicie sesión en su máquina con una cuenta con privilegios de root o directamente con el usuario root y asegúrese de que su sistema Debian esté actualizado con los últimos parches de seguridad y versiones de software y paquetes, emitiendo el siguiente comando.

# apt-get update 
# apt-get upgrade 

2. En el siguiente paso, instale los siguientes paquetes de software que se utilizarán para la administración del sistema, emitiendo el siguiente comando.

# apt-get install curl net-tools bash-completion wget lsof nano

3. A continuación, abra el archivo /etc/host.conf para editarlo con su editor de texto favorito y agregue la siguiente línea al principio del archivo para que la resolución DNS lea primero el archivo hosts.

order hosts,bind
multi on

4. A continuación, configure el FQDN de su máquina y agregue su nombre de dominio y el FQDN de su sistema al archivo/etc/hosts. Utilice la dirección IP de su sistema para resolver el nombre del dominio y el FQDN como se ilustra en la siguiente captura de pantalla.

Reemplace la dirección IP y el dominio en consecuencia. Luego, reinicie la máquina para aplicar el nombre de host correctamente.

# hostnamectl set-hostname mail.tecmint.com
# echo "192.168.0.102 tecmint.com mail.tecmint.com" >> /etc/hosts
# init 6

5. Después de reiniciar, verifique si el nombre de host se ha configurado correctamente emitiendo la siguiente serie de comandos. El nombre de dominio, el FQDN, el nombre de host y la dirección IP del sistema deben devolverse mediante el comando hostname.

# hostname
# hostname -s
# hostname -f
# hostname -A
# hostname -i
# cat /etc/hostname 

6. Además, pruebe si el dominio responde correctamente a las consultas locales emitiendo los siguientes comandos. Tenga en cuenta que el dominio no se reproducirá en consultas remotas emitidas por otros sistemas en su red, porque no estamos usando un servidor DNS.

Sin embargo, el dominio debe responder desde otros sistemas si agrega manualmente el nombre de dominio a cada uno de sus archivos/etc/hosts. Además, tenga en cuenta que la resolución de DNS para un dominio agregado al archivo/etc/hosts no funcionará mediante comandos dig.

# getent ahosts mail.tecmint.com
# ping tecmint.com
# ping mail.tecmint.com

Paso 2: Instale el servidor de correo Postfix en Debian

7. La pieza de software más importante necesaria para que un servidor de correo funcione correctamente es el agente MTA. El MTA es un software construido en una arquitectura servidor-cliente, que es responsable de la transferencia de correo entre servidores de correo.

En esta guía usaremos Postfix como agente de transferencia de correo. Para instalar postfix en Debian desde repositorios oficiales, ejecute el siguiente comando.

# apt-get install postfix

8. Durante el proceso de instalación de Postfix, se le harán una serie de preguntas. En el primer mensaje, seleccione la opción Sitio de Internet como tipo general para la configuración de Postfix y presione la tecla [Intro] para continuar y luego agregue su nombre de dominio al nombre de correo del sistema, como se ilustra en las siguientes capturas de pantalla.

Paso 3: configurar el servidor de correo Postfix en Debian

9. A continuación, haga una copia de seguridad del archivo de configuración principal de Postfix y configure Postfix para su dominio mediante los siguientes comandos.

# cp /etc/postfix/main.cf{,.backup}
# nano /etc/postfix/main.cf

Ahora configure la configuración de Postfix en el archivo main.cf como se muestra.

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.debian.lan

mydomain = debian.lan

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

#myorigin = /etc/mailname
myorigin = $mydomain

mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#inet_protocols = all
inet_protocols = ipv4

home_mailbox = Maildir/

# SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

Reemplace las variables myhostname, mydomain y mynetworks para que coincidan con sus propias configuraciones.

Puede ejecutar el comando postconf -n para descargar el archivo de configuración principal de Postfix y verificar posibles errores, como se muestra en la siguiente captura de pantalla.

# postconf -n

10. Después de que todas las configuraciones estén en su lugar, reinicie el demonio de Postfix para aplicar los cambios y verifique si el servicio se está ejecutando inspeccionando si el servicio maestro de Postfix está vinculado al puerto 25 ejecutando el comando netstat.

# systemctl restart postfix
# systemctl status postfix
# netstat -tlpn

Paso 3: Pruebe el servidor de correo Postfix en Debian

11. Para probar si postfix puede manejar la transferencia de correo, primero instale el paquete mailutils ejecutando el siguiente comando.

# apt-get install mailutils

12. A continuación, utilizando la utilidad de línea de comandos de correo, envíe un correo a la cuenta raíz y verifique si el correo se transmitió correctamente emitiendo el siguiente comando para verificar la cola de correo y enumerar el contenido del directorio principal de Maildir de la raíz.

# echo "mail body"| mail -s "test mail" root
# mailq
# mail
# ls Maildir/
# ls Maildir/new/
# cat Maildir/new/[TAB]

13. También puede verificar de qué manera el servicio postfix manejó el correo al inspeccionar el contenido del archivo de registro de correo emitiendo el siguiente comando.

# tailf /var/log/mail.log

Paso 4: instalar y configurar Dovecot IMAP en Debian

14. El agente de entrega de correo que usaremos en esta guía para enviar mensajes de correo electrónico a los buzones de correo de un destinatario local es Dovecot IMAP. IMAP es un protocolo que se ejecuta en los puertos 143 y 993 (SSL), que es responsable de leer, eliminar o mover correos a través de múltiples clientes de correo electrónico.

El protocolo IMAP también utiliza la sincronización para asegurar que se guarde una copia de cada mensaje en el servidor y permite a los usuarios crear múltiples directorios en el servidor y mover correos a estos directorios para ordenar los correos electrónicos.

Este no es el caso del protocolo POP3. El protocolo POP3 no permitirá a los usuarios crear varios directorios en el servidor para ordenar su correo. Solo tiene la carpeta de la bandeja de entrada para administrar el correo.

Para instalar el servidor central Dovecot y el paquete Dovecot IMAP en Debian, ejecute el siguiente comando.

# apt install dovecot-core dovecot-imapd

15. Después de que Dovecot se haya instalado en su sistema, abra los archivos de dovecot a continuación para editarlos y realice los siguientes cambios. Primero, abra el archivo /etc/dovecot/dovecot.conf, busque y descomente la siguiente línea:

listen = *, ::

16. A continuación, abra /etc/dovecot/conf.d/10-auth.conf para editar y ubique y cambie las siguientes líneas para que se vean como en el siguiente extracto.

disable_plaintext_auth = no
auth_mechanisms = plain login

17. Abra el archivo /etc/dovecot/conf.d/10-mail.conf y agregue la siguiente línea para usar la ubicación de Maildir en lugar del formato Mbox para almacenar correos electrónicos.

mail_location = maildir:~/Maildir

18. El último archivo para editar es /etc/dovecot/conf.d/10-master.conf. Aquí busque el bloque Postfix smtp-auth y realice el siguiente cambio:

# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
 }

19. Después de haber realizado todos los cambios anteriores, reinicie el demonio de Dovecot para reflejar los cambios, verifique su estado y verifique si Dovecot está vinculado en el puerto 143, emitiendo los siguientes comandos.

# systemctl restart dovecot.service 
# systemctl status dovecot.service 
# netstat -tlpn

20. Pruebe si el servidor de correo está funcionando correctamente agregando una nueva cuenta de usuario al sistema y use el comando telnet o netcat para conectarse al servidor SMTP y enviar un nuevo correo al nuevo usuario agregado, como se ilustra en los extractos a continuación.

# adduser matie
# nc localhost 25
# ehlo localhost
mail from: root
rcpt to: matie
data
subject: test
Mail body
.
quit

21. Compruebe si el correo ha llegado al buzón de correo del nuevo usuario enumerando el contenido del directorio de inicio del usuario como se muestra en la siguiente captura de pantalla.

# ls /home/test_mail/Maildir/new/

22. Además, puede conectarse al buzón de correo del usuario desde la línea de comandos a través del protocolo IMAP, como se muestra en el siguiente extracto. El nuevo correo debe aparecer en la bandeja de entrada del usuario.

# nc localhost 143
x1 LOGIN matie user_password
x2 LIST "" "*"
x3 SELECT Inbox
x4 LOGOUT

Paso 5: instalar y configurar Webmail en Debian

23. Los usuarios administrarán sus correos electrónicos a través del cliente Rainloop Webmail. Antes de instalar el agente de usuario de correo de Rainloop, primero instale el servidor HTTP Apache y los siguientes módulos PHP requeridos por Rainloop, emitiendo el siguiente comando.

# apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml

24. Una vez instalado el servidor web Apache, cambie la ruta del directorio a/var/www/html/directory, elimine el archivo index.html y ejecute el siguiente comando para instalar Rainloop Webmail.

# cd /var/www/html/
# rm index.html 
# curl -sL https://repository.rainloop.net/installer.php | php

25. Una vez que se haya instalado el cliente Rainloop Webmail en el sistema, navegue hasta la dirección IP de su dominio e inicie sesión en la interfaz web de administración de Rainloop con las siguientes credenciales predeterminadas:

http://192.168.0.102/?admin
User: admin
Password: 12345

26. Vaya al menú Dominios, presione el botón Agregar dominio y agregue la configuración de su nombre de dominio como se muestra en la siguiente captura de pantalla.

27. Una vez que haya terminado de agregar la configuración de su dominio, cierre la sesión de la interfaz de administración de Ranloop y apunte el navegador a su dirección IP para iniciar sesión en el cliente de correo web con una cuenta de correo electrónico.

Una vez que haya iniciado sesión con éxito en el correo web de Rainloop, debería ver el correo electrónico enviado anteriormente desde la línea de comandos a la carpeta Bandeja de entrada.

http://192.168.0.102
User: [email protected]
Pass: the matie password

27. Para agregar un nuevo usuario, emita el comando useradd con el indicador -m para crear el directorio de inicio del usuario. Pero primero asegúrese de configurar la variable de ruta de Maildir para cada usuario con el siguiente comando.

# echo 'export MAIL=$HOME/Maildir' >> /etc/profile
# useradd -m user3
# passwd user3

28. Si desea redirigir todo el correo electrónico de root a una cuenta de correo local específica desde el sistema, ejecute los siguientes comandos. Todos los correos redirigidos o destinados a la cuenta raíz se reenviarán a su usuario de correo como se muestra en la imagen de abajo.

# echo "root: test_mail" >> /etc/aliases
# newaliases

¡Eso es todo! Ha instalado y configurado correctamente un servidor de correo en sus instalaciones para que los usuarios locales se comuniquen por correo electrónico. Sin embargo, este tipo de configuración de correo no está protegido de ninguna manera y se recomienda implementarlo solo para configuraciones pequeñas en sistemas y redes bajo su control total.