Cómo instalar y configurar Postfix en Ubuntu 20.04

Postfix es un popular agente de transferencia de correo (MTA – Mail Transfer Agent) de código abierto. Este se puede utilizar para enrutar y entregar correo electrónico en un sistema Linux. Se estima que alrededor del 25% de los servidores de correo público en Internet ejecutan Postfix.

En esta guía, aprenderás cómo instalar y configurar Postfix en un servidor Ubuntu 20.04. Luego, probarás que Postfix puede enrutar correctamente el correo instalando s-nail, un Agente de usuario de correo (MUA), también conocido como cliente de correo electrónico.

Ten en cuenta que el objetivo de este tutorial es ayudarte a poner Postfix en funcionamiento rápidamente con solo algunas funciones básicas de correo electrónico. No tendrás un servidor de correo electrónico con todas las funciones al final de esta guía. Empero tendrás algunos de los componentes fundamentales de dicha configuración para ayudarte a comenzar.

Prerrequisitos

Para seguir esta guía, necesitarás lo siguiente:

  • Un servidor que ejecuta Ubuntu 20.04 para funcionar como tu servidor de correo Postfix. Este servidor debe tener un usuario no root con privilegios sudo y un firewall configurado con UFW. Puedes seguir nuestra guía de configuración básica de un servidor con Ubuntu 20.04 para configurar esto.
  • Un nombre de dominio completamente calificado (FQDN) apuntando a tu servidor Ubuntu 20.04. Puedes encontrar ayuda para configurar tu nombre de dominio con tu proveedor siguiendo la documentación de Dominios y Redes DNS que tengan disponible. Ten en cuenta que, si planeas acceder al correo desde una ubicación externa, también deberás asegurarte de tener un registro MX que apunte a tu servidor de correo.

Ten en cuenta que este tutorial asume que estás configurando un host que tiene el FQDN de mail.example.com. Siempre que sea necesario, asegúrate de cambiar example.commail.example.com para reflejar tu propio FQDN.

Paso 1 – Instalación de Postfix

Postfix se incluye en los repositorios predeterminados de Ubuntu, por lo que puedes instalarlo con APT.

Para comenzar, debes actualizar tu caché apt de paquete local:

Luego debes instalar el paquete postfix con el siguiente comando. Ten en cuenta que aquí pasamos la variable de entorno DEBIAN_PRIORITY=low a este comando de instalación. Esto hará que el proceso de instalación te solicite que configures algunas opciones adicionales:

Opciones

Este proceso de instalación abrirá una serie de indicaciones interactivas. Para los fines de este tutorial, debes usar la siguiente información para completar tus indicaciones:

  • General type of mail configuration?: Para esto, debes elegir Internet Site, ya que coincide con nuestras necesidades de infraestructura.
  • System mail name: Este es el dominio base utilizado para construir una dirección de correo electrónico válida cuando solo te proporciona parte de la cuenta de la dirección. Por ejemplo, supongamos que el nombre de host de tu servidor es mail.example.com. Es probable que desees establecer el nombre del correo del sistema en example.com para que, dado el nombre de usuario user1, Postfix utilice la dirección user1@example.com
  • Root and postmaster mail recipient : esta es la cuenta de Linux a la que se reenviará el correo dirigido a root@postmaster@. Debes usar tu cuenta principal para esto. En este caso de ejemplo, cesar.
  • Other destinations to accept mail for: define los destinos de correo que aceptará esta instancia de Postfix. Si necesitas agregar otros dominios que este servidor será responsable de recibir, agrégalos aquí. De lo contrario, el valor predeterminado será suficiente.
  • Force synchronous updates on mail queue?: Como es probable que estés utilizando un sistema de archivos registrado, debes elegir No aquí.

  • Local networks: esta es una lista de las redes para las cuales tu servidor de correo está configurado para retransmitir mensajes. El valor predeterminado funcionará para la mayoría de los escenarios. Sin embargo, si eliges modificarlo, asegúrate de ser muy restrictivo con respecto al rango de red.
  • Mailbox size limit: se puede usar para limitar el tamaño de los mensajes. Configurarlo en 0 desactiva cualquier restricción de tamaño.
  • Local address extension carácter. Este es el caracter que se puede usar para separar la parte regular de la dirección de una extensión (se usa para crear alias dinámicos). El valor predeterminado + funcionará para este tutorial.
  • Internet protocols to use: elije si deseas restringir la versión IP que admite Postfix. Para los fines de este tutorial, debes seleccionar all.

Respuestas

Para ser explícitos, estos son los ajustes utilizados en esta guía:

  • General type of mail configuration?Internet Site
  • System mail nameexample.com (no mail.example.com)
  • Root and postmaster mail recipient: el nombre de usuario de tu cuenta principal de Linux (cesar en nuestro ejemplo)
  • Other destinations to accept mail for$myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • Force synchronous updates on mail queue?No
  • Local networks127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Mailbox size limit0
  • Local address extension character+
  • Internet protocols to useall

Nota: Si alguna vez necesitas volver para cambiar esta configuración, puedes hacerlo escribiendo:

Las indicaciones se completarán previamente con tus respuestas anteriores.

Cuando finalices el proceso de instalación, estarás listo para realizar algunas actualizaciones en tu configuración de Postfix.

Paso 2 – Cambiar la configuración de Postfix

Ahora puedes ajustar algunas configuraciones que el proceso de instalación del paquete no te solicitó. Muchos de los ajustes de configuración de Postfix están definidos en el archivo /etc/postfix/main.cf.

En lugar de editar este archivo directamente, puedes usar el comando postconf de Postfix para consultar o establecer opciones de configuración.

Para comenzar, configura la ubicación del buzón de tu usuario Ubuntu no root. En esta guía, utilizaremos el formato Maildir. Este separa los mensajes en archivos individuales que luego se mueven entre directorios en función de la acción del usuario. La opción alternativa que no está cubierta en esta guía es el formato mbox, que almacena todos los mensajes en un solo archivo.

Debes establecer la variable home_mailbox en Maildir/. Más tarde, crearás una estructura de directorio con ese nombre dentro del directorio de inicio de tu usuario. Debes configurar home_mailbox escribiendo:

A continuación, debes establecer la ubicación de la tabla virtual_alias_maps, que asigna cuentas de correo electrónico arbitrarias a cuentas del sistema Linux. Ejecuta el siguiente comando, que asigna la ubicación de la tabla a un archivo de base de datos hash llamado /etc/postfix/virtual:

Ahora que haz definido la ubicación del archivo de mapas virtuales en tu archivo main.cf, puedes crear el archivo. Asimismo, puedes comenzar a asignar cuentas de correo electrónico a cuentas de usuario en tu sistema Linux. Debes crear el archivo con tu editor de texto preferido; en este ejemplo, usaremos nano:

Debes enumerar las direcciones para las que deseas aceptar el correo electrónico, seguidas de un espacio en blanco y el usuario de Linux al que deseas que se le envíe ese correo.

Por ejemplo, si desea aceptar correos electrónicos en contact@example.com y admin@example.com y deseas recibir esos correos electrónicos para el usuario de Linux cesar, puedes configurar tu archivo de esta manera:

Guardar el archivo

Una vez que haya asignado todas las direcciones a las cuentas de servidor apropiadas, guarda y cierra el archivo. Si ha sutilizado nano, puedes hacerlo pulsando CTRL + XY y, a continuación, ENTER.

Debes aplicar la asignación escribiendo:

Debes reiniciar el proceso Postfix para asegurarte de que se hayan aplicado todos tus cambios:

Suponiendo que hayas seguido el requisito previo de la guía de configuración básica del servidor, habrás configurado un firewall con UFW.

Este firewall bloqueará las conexiones externas a los servicios en tu servidor de manera predeterminada a menos que esas conexiones estén explícitamente permitidas. Por lo tanto, deberás agregar una regla de firewall para permitir una excepción para Postfix.

Puedes permitir conexiones al servicio escribiendo:

Con eso, Postfix está configurado y listo para aceptar conexiones externas. Sin embargo, aún no estás listo para probarlo con un cliente de correo.

Antes de poder instalar un cliente y utilizarlo para interactuar con el correo que entrega a tu servidor, deberás realizar algunos cambios. Debes hacer cambios en la configuración de tu servidor Ubuntu.

Paso 3 – Instalación del cliente de correo e inicialización de la estructura Maildir

Para interactuar con el correo que se entrega, este paso te guiará a través del proceso de instalación del paquete s-nail. Esta es una variante rica en funciones del cliente BSD xmail que puede manejar el formato Maildir correctamente.

Sin embargo, antes de instalar el cliente, sería prudente asegurarte de que la variable de entorno MAIL esté configurada correctamente. s-nail buscará esta variable para averiguar dónde encontrar correo para tu usuario.

Para asegurar que la variable MAIL se establece independientemente de cómo accedes a tu cuenta – ya sea a través ssh, su, su -, o sudo, por ejemplo. para esto se necesita para establecer la variable en el archivo /etc/bash.bashrc y añadirlo a un archivo dentro /etc/profile.d. Esto para asegurarte de que está configurado para todos los usuarios por defecto.

Para agregar la variable a estos archivos, escribe:

Para leer la variable en tu sesión actual, debes buscar el archivo /etc/profile.d/mail.sh:

Con eso completo, debes instalar el cliente de correo electrónico s-nail con APT:

Antes de ejecutar el cliente, hay algunas configuraciones que debes ajustar. Debes abrir el archivo /etc/s-nail.rc en tu editor:

Al final del archivo, agrega las siguientes opciones:

Desglose

Esto es lo que hacen estas líneas:

  • set emptystart: permite que el cliente se abra incluso con una bandeja de entrada vacía
  • Línea set folder=Maildir: establece el directorio Maildir a la variable interna folder
  • set record=+sent crea un archivo sent mbox para almacenar el correo enviado dentro del directorio establecido como variable folder, en este caso Maildir

Debes guardar y cerrar el archivo cuando hayas terminado. Ahora estás listo para inicializar la estructura Maildir de tu sistema.

Una forma rápida de crear la estructura de Maildir dentro de tu directorio de inicio es enviarte un correo electrónico con el comando s-nail. Dado que el archivo sent solo estará disponible una vez que se haya creado Maildir, debes desactivar la escritura en este correo electrónico inicial. Has esto pasando la opción –Snorecord.

Debes enviar el correo electrónico canalizando una cadena al comando s-nail. Debes ajustar el comando para marcar a tu usuario de Linux como el destinatario:

Notapuedes obtener la siguiente respuesta:

Esto es normal y solo puede aparecer al enviar este primer mensaje.

Puedes verificar para asegurarte de que el directorio se creó buscando tu directorio ~/Maildir:

Verás que la estructura del directorio se ha creado y que hay un nuevo archivo de mensaje en el directorio ~/Maildir/new:

Ahora que se ha creado la estructura de directorios, estás listo para probar el cliente s-nail viendo el mensaje init que enviaste. También lo harás enviando un mensaje a una dirección de correo electrónico externa.

Paso 4 – Probar del cliente

Para abrir el cliente, ejecuta el comando s-nail:

En tu consola, verás una bandeja de entrada rudimentaria con el mensaje init en espera:

Debes presionar ENTER para mostrar el mensaje:

Puedes volver a la lista de mensajes escribiendo h y luego ENTER:

Observa que el mensaje ahora tiene un estado de R, lo que indica que ha sido leído.

Dado que este mensaje no es muy útil, puedes eliminarlo presionando d y luego ENTER:

Para volver a la terminal, escribe q y luego ENTER:

Como prueba final, verifica si s-nail puede enviar mensajes de correo electrónico correctamente. Para hacer esto, puedes canalizar el contenido de un archivo de texto en el proceso s-nail. Esto tal como lo hiciste con el mensaje init que enviaste en el paso anterior.

Debes comenzar escribiendo un mensaje de prueba en un editor de texto:

En el interior, ingresa el texto que deseas enviar:

Guarda y cierra el archivo después de escribir tu mensaje.

Luego, debes usar el comando cat para canalizar el mensaje al proceso s-nail. Puedes hacerlo con el siguiente ejemplo, que utiliza estas opciones:

  • -s: Define la línea de asunto del mensaje de correo electrónico
  • -r: Un cambio opcional en el campo “From:” del correo electrónico. De forma predeterminada, el usuario de Linux con el que has iniciado sesión se usará para completar este campo. La opción –r te permite anular esto con una dirección válida, como una de las que definiste en el archivo /etc/postfix/virtual. Para ilustrar, el siguiente comando usa contact@example.com

Además, asegúrate de cambiar user@email.com a una dirección de correo electrónico válida a la que tengas acceso:

Luego, debes navegar a la bandeja de entrada para la dirección de correo electrónico a la que enviaste el mensaje. Verás tu mensaje esperando allí casi de inmediato.

Nota:

Si el mensaje no está en tu bandeja de entrada, puede haber sido entregado a tu carpeta de Spam.

Puedes ver tus mensajes enviados dentro de tu cliente s-nail. Inicia el cliente interactivo nuevamente:

Desde el cliente de correo electrónico puedes observar tus mensajes enviados escribiendo:

Verás resultados como este:

Puedes administrar el correo enviado utilizando los mismos comandos que usas para el correo entrante.

Conclusión

Ahora tienes Postfix configurado en tu servidor Ubuntu 20.04. Administrar servidores de correo electrónico puede ser una tarea difícil para los nuevos administradores de sistemas. Sin embargo, con esta configuración, debes tener suficiente funcionalidad de correo electrónico MTA para comenzar.