Cómo instalar y configurar Postfix en Ubuntu 22.04

Introducción

Postfix es un popular Agente de Transferencia de Correo (MTA) de código abierto que 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 utilizan Postfix.

En esta guía, aprenderás cómo instalar y configurar Postfix en un servidor Ubuntu 22.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 un cliente de correo electrónico.

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

Requisitos previos

Configurar y mantener tu propio servidor de correo electrónico es complicado y consume mucho tiempo. Para la mayoría de los usuarios, es más práctico confiar en un servicio de correo pago. Si estás considerando ejecutar tu propio servidor de correo, te animamos a que revises este artículo sobre por qué es posible que no quieras hacerlo.

Si estás seguro de que deseas seguir esta guía para instalar y configurar Postfix, entonces primero debes tener lo siguiente:

  • A server running Ubuntu 22.04 to function as your Postfix mail server. This server should have a non-root user with sudo privileges and a firewall configured with UFW. You can follow our Ubuntu 22.04 initial server setup guide to set this up.
  • A Fully Qualified Domain Name pointed at your Ubuntu 22.04 server. You can find help on setting up your domain name with DigitalOcean by following our Domains and DNS Networking documentation. Be aware that if you plan on accessing mail from an external location, you will need to make sure you have an MX record pointing to your mail server as well.

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

Paso 1 — Instalación de Postfix

Postfix está incluido en los repositorios predeterminados de Ubuntu, por lo que puedes instalarlo con APT.

Para empezar, actualiza la caché de paquetes local con apt:

  1. sudo apt update

Luego, instala 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 configurar algunas opciones adicionales:

  1. sudo DEBIAN_PRIORITY=low apt install postfix

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

  • Tipo general de configuración de correo?: Para esto, elige Sitio de Internet ya que coincide con nuestras necesidades de infraestructura.
  • Nombre del correo del sistema: Este es el dominio base utilizado para construir una dirección de correo electrónico válida cuando solo se proporciona la parte de la cuenta de la dirección. Por ejemplo, supongamos que el nombre de host de tu servidor es mail.ejemplo.com. Probablemente querrás configurar el nombre del correo del sistema como ejemplo.com para que, dado el nombre de usuario usuario1, Postfix utilice la dirección usuario1@ejemplo.com.
  • Destinatario del correo de root y postmaster: Esta es la cuenta de Linux a la que se reenviará el correo dirigido a root@ y postmaster@. Utiliza tu cuenta principal para esto. En este ejemplo, sammy.
  • Otros destinos para aceptar correo: Esto define los destinos de correo que esta instancia de Postfix aceptará. Si necesitas agregar otros dominios por los cuales este servidor será responsable de recibir correo, agrégalos aquí. De lo contrario, el valor predeterminado será suficiente.
  • ¿Forzar actualizaciones sincrónicas en la cola de correo?: Dado que probablemente estés utilizando un sistema de archivos con diario, acepta No aquí.
  • Redes locales: 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 en cuanto al rango de la red.
  • Límite de tamaño del buzón: Esto se puede usar para limitar el tamaño de los mensajes. Configurándolo en 0 se desactiva cualquier restricción de tamaño.
  • Carácter de extensión de dirección local: Este es el carácter que se puede usar para separar la parte regular de la dirección de una extensión (utilizada para crear alias dinámicos). El valor predeterminado, +, funcionará para este tutorial.
  • Protocolos de Internet a utilizar: Elija si desea restringir la versión de IP que Postfix admite. Para los propósitos de este tutorial, elija todos.

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

  • Tipo general de configuración de correo: Internet Site
  • Nombre del correo del sistema: example.com (no mail.example.com)
  • Destinatario del correo de root y postmaster: El nombre de usuario de su cuenta principal de Linux (sammy en nuestros ejemplos)
  • Otros destinos para aceptar correo: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • ¿Forzar actualizaciones síncronas en la cola de correo?: No
  • Redes locales: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Límite de tamaño del buzón: 0
  • Carácter de extensión de dirección local: +
  • Protocolos de Internet a utilizar: todos

Nota: Si alguna vez necesitas volver para cambiar estas configuraciones, puedes hacerlo escribiendo:

  1. sudo dpkg-reconfigure postfix

Las indicaciones se precompletarán con tus respuestas anteriores.

Cuando se te solicite reiniciar los servicios, acepta los valores predeterminados y elige OK.

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

Paso 2 — Cambiar la Configuración de Postfix

Ahora puedes ajustar algunas configuraciones para las cuales el proceso de instalación del paquete no te solicitó. Muchas de las configuraciones de Postfix se definen 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 configuraciones.

Para comenzar, establece la ubicación para el buzón del usuario no root de Ubuntu. En esta guía, utilizaremos el formato Maildir, que separa los mensajes en archivos individuales que luego se mueven entre directorios según la acción del usuario. La opción alternativa que no se cubre en esta guía es el formato mbox, que almacena todos los mensajes dentro de un único archivo.

Establezca la variable home_mailbox en Maildir/. Más tarde, creará una estructura de directorios con ese nombre dentro del directorio principal de su usuario. Configure home_mailbox escribiendo:

  1. sudo postconf -e 'home_mailbox= Maildir/'

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

  1. sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Ahora que ha definido la ubicación del archivo de mapas virtuales en su archivo main.cf, puede crear el archivo en sí y comenzar a asignar cuentas de correo electrónico a cuentas de usuario en su sistema Linux. Cree el archivo con su editor de texto preferido; en este ejemplo, usaremos nano:

  1. sudo nano /etc/postfix/virtual

Enumere todas las direcciones para las que desea aceptar correo electrónico, seguido de un espacio en blanco y el usuario de Linux al que le gustaría que se entregara ese correo.

Por ejemplo, si desea aceptar correo electrónico en contact@example.com y admin@example.com y desea que esos correos electrónicos se entreguen al usuario de Linux sammy, podría configurar su archivo de esta manera:

/etc/postfix/virtual
contact@example.com sammy
admin@example.com sammy

Después de haber asignado todas las direcciones a las cuentas de servidor apropiadas, guarde y cierre el archivo. Si usó nano, haga esto presionando CTRL + X, Y, luego ENTER.

Aplique el mapeo escribiendo:

  1. sudo postmap /etc/postfix/virtual

Reinicie el proceso de Postfix para asegurarse de que todos sus cambios se hayan aplicado:

  1. sudo systemctl restart postfix

Suponiendo que hayas seguido la guía previa de Configuración Inicial del Servidor, habrás configurado un firewall con UFW. Este firewall bloqueará las conexiones externas a los servicios en tu servidor de forma predeterminada a menos que esas conexiones sean explícitamente permitidas, por lo que tendrás que agregar una regla de firewall para permitir una excepción para Postfix.

Puedes permitir conexiones al servicio escribiendo:

  1. sudo ufw allow Postfix

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 usarlo para interactuar con el correo que se entrega en tu servidor, necesitarás hacer algunos cambios en la configuración de tu servidor Ubuntu.

Paso 3 — Instalación del Cliente de Correo e Inicialización de la Estructura de 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. Este es una variante con muchas funciones del cliente xmail de BSD que puede manejar correctamente el formato Maildir.

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

Para asegurarte de que la variable MAIL esté configurada independientemente de cómo accedas a tu cuenta, ya sea a través de ssh, su, su - o sudo, por ejemplo, necesitarás configurar la variable en el archivo /etc/bash.bashrc y agregarla a un archivo dentro de /etc/profile.d para asegurarte de que esté configurada para todos los usuarios de forma predeterminada.

Para agregar la variable a estos archivos, escribe:

  1. echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

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

  1. source /etc/profile.d/mail.sh

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

  1. sudo apt install s-nail

Antes de ejecutar el cliente, hay algunos ajustes que necesitas realizar. Abre el archivo /etc/s-nail.rc en tu editor:

  1. sudo nano /etc/s-nail.rc

Al final del archivo, agrega las siguientes opciones:

/etc/s-nail.rc
. . .
set emptystart
set folder=Maildir
set record=+sent

Esto es lo que hacen estas líneas:

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

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

A quick way to create the Maildir structure within your home directory is to send yourself an email with the s-nail command. Because the sent file will only be available once the Maildir is created, you should disable writing to it for this initial email. Do this by passing the -Snorecord option.

Envía el correo electrónico redirigiendo una cadena al comando s-nail. Ajusta el comando para marcar tu usuario de Linux como el destinatario:

  1. echo 'init' | s-nail -s 'init' -Snorecord sammy

Nota: Es posible que obtengas la siguiente respuesta:

Output
Can't canonicalize "/home/sammy/Maildir"

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

Puedes verificar que se haya creado el directorio buscando tu directorio ~/Maildir:

  1. ls -R ~/Maildir

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

Output
/home/sammy/Maildir/: cur new tmp /home/sammy/Maildir/cur: /home/sammy/Maildir/new: 1650294586.Vfc01I7e11dM993645.mail.example.com /home/sammy/Maildir/tmp:

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

Paso 4 — Probando el Cliente

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

  1. s-nail

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

Output
s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 [email protected] 2022-04-18 15:09 14/452 init

Pulsa ENTER para mostrar el mensaje:

Output
[-- Message 1 -- 14 lines, 452 bytes --]: Date: Mon, 18 Apr 2022 15:09:46 +0000 To: [email protected] Subject: init Message-Id: <20220418150946.EE6897E11A@@mail.example.com> From: [email protected] init

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

  1. h
Output
>R 1 [email protected] 2022-04-18 15:09 14/452 init

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:

  1. d

Para volver al terminal, escribe q y luego ENTER:

  1. q

Como prueba final, comprueba si s-nail es capaz de enviar correctamente mensajes de correo electrónico. Para hacer esto, puedes redirigir el contenido de un archivo de texto al proceso s-nail, como hiciste con el mensaje init que enviaste en el paso anterior.

Comienza escribiendo un mensaje de prueba en un editor de texto:

  1. nano ~/test_message

Dentro, ingresa el texto que te gustaría enviar:

~/test_message
Hello,

This is a test.  Please confirm receipt!

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

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

  • -s: Esto define la línea de asunto del mensaje de correo electrónico
  • -r: Un cambio opcional al campo “De:” del correo electrónico. Por defecto, se utilizará el usuario de Linux con el que hayas iniciado sesión para completar este campo. La opción -r te permite anular esto con una dirección válida, como una de las que hayas definido en el archivo /etc/postfix/virtual. Para ilustrar, el siguiente comando usa [email protected]

También, asegúrate de cambiar usuario@correo.com por una dirección de correo electrónico válida a la que tengas acceso:

  1. cat ~/test_message | s-nail -s 'Test email subject line' -r [email protected] user@email.com

Luego, ve a la bandeja de entrada de 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 que se haya entregado en tu carpeta de spam.

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

  1. s-nail

Desde el cliente de correo electrónico, vea sus mensajes enviados escribiendo:

  1. file +sent

Verás una salida como esta:

Output
+[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 To [email protected] 2022-04-18 15:12 10/211 Test email subject line

Puedes gestionar el correo enviado usando los mismos comandos que usas para el correo entrante.

Conclusión

Ahora tienes Postfix configurado en tu servidor Ubuntu 22.04. Gestionar servidores de correo electrónico puede ser una tarea difícil para los nuevos administradores de sistemas, pero con esta configuración, deberías tener suficiente funcionalidad de correo electrónico MTA para empezar.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-on-ubuntu-22-04