Introducción

Postfix es un popular agente de transferencia de correo (MTA) de código abierto que puede usarse para dirigir y entregar correo electrónico en un sistema Linux. Se estima que alrededor del 25 % de los servidores de correo público de Internet cuentan con Postfix.

En esta guía, le enseñaremos empezar a utilizar rápidamente Postfix en un servidor de Ubuntu 18.04.

Requisitos previos

Para seguir esta guía, debe tener acceso a un usuario no root con privilegios sudo. Puede seguir nuestra guía de configuración inicial para servidores de Ubuntu 18.04 para crear el usuario necesario.

Para configurar Postfix de forma correcta, necesitará un nombre de dominio completamente apto que apunte a su servidor de Ubuntu 18.04. Puede encontrar ayuda para configurar su nombre de dominio con DigitalOcean siguiendo esta guía. Si planea aceptar correo, deberá asegurarse de contar con un registro MX apuntando a su servidor de correo también.

A los efectos de este tutorial, supondremos que está configurará un host que tiene el FQDN de mail.example.com.

Paso 1: Instalar Postfix

Postfix está incluido en los repositorios predeterminados de Ubuntu, por lo que la instalación es sencilla.

Para comenzar, actualice su caché de paquetes apt local e instale el software. Pasaremos la variable ambiental DEBIAN_PRIORITY=low a nuestro comando de instalación para responder a algunas peticiones adicionales:

  • sudo apt update
  • sudo DEBIAN_PRIORITY=low apt install postfix

Utilice la siguiente información para completar sus comandos de forma correcta para su entorno:

  • ¿Tipo general de configuración de correo?: para esto, elegiremos Internet Site debido a que coincide con las necesidades de nuestra infraestructura.
  • Nombre del sistema de correo: este es el dominio básico usado para construir una dirección de correo válida cuando solo se proporciona la parte de la cuenta de la dirección. Por ejemplo, el hostname de nuestro servidor es mail.example.com, pero probablemente queramos definir el nombre del sistema de correo como example.com para que, dado el nombre de usuario user1, Postfix utilice la dirección user1@example.com.
  • Destinatario de correo root y postmaster: esta es la cuenta de Linux a la que se reenviará correo enviado a root@ y postmaster@. Utilice su cuenta principal para esto. En nuestro caso, sammy.
  • Otros destinos para los que se aceptará correo: esto define los destinos de correo que aceptará esta instancia de Postfix. Si necesita añadir otros dominios que este servidor deberá recibir, añádalos aquí. De lo contrario, el predeterminado debería funcionar bien.
  • ¿Forzar actualizaciones sincronizadas en la cola de correo?: ya que probablemente utilice un sistema de archivos con registro diario, seleccione No aquí.
  • Redes locales: esta es una lista de las redes para las cuales la configuración de su servidor de correo establece la transmisión de mensajes. La predeterminada debería funcionar para la mayoría de los casos. Si decide modificarla, asegúrese de ser muy restrictivo con respecto al alcance de la red.
  • Límite de tamaño del buzón de correo: este valor puede usarse para limitar el tamaño de los mensajes. Si lo fija en “0”, se deshabilitará la restricción de tamaño.
  • Carácter de extensión de dirección local: éste es el carácter que puede usarse para separar la parte regular de la dirección de una extensión (usada para crear alias dinámicos).
  • Protocolos de Internet que se utilizarán: defina si restringirá la versión de IP que Postfix admite. Para nuestro casos, seleccionaremos “todos”.

Para brindar explicitud, estos son los ajustes que emplearemos para esta guía:

  • ¿Tipo general de configuración del correo?: sitio de Internet
  • Nombre del sistema de correo: example.com (no mail.example.com)
  • Destinatario de correo root y postmaster: sammy
  • Otros destinos para los que se aceptará correo: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • ¿Forzar actualizaciones sincronizadas en la cola de correo? :No
  • Redes locales: []127.0.00.0/8 ::fff:127.0.0/104 []::1/128
  • Límite de tamaño del buzón de correo: 0
  • Carácter de extensión de dirección local: +
  • Protocolos de Internet que se utilizarán: Todos

Si alguna vez necesita volver para configurar estos ajustes, puede hacerlo escribiendo lo siguiente:

  • sudo dpkg-reconfigure postfix

Las instrucciones se completarán previamente con sus respuestas anteriores.

Una vez que concluya, podremos realizar algunos ajustes más para que nuestro sistema quede configurado como lo deseamos.

Paso 2: Ajustar la configuración de Postfix

A continuación, podemos retocar algunos ajustes que el paquete no nos solicitó.

Para comenzar, podemos establecer el buzón de correo. Usaremos el formato Maildir, que separa los mensajes en archivos individuales que luego se mueven entre directorios según la acción del usuario. La otra opción es el formato mbox (no lo abordaremos aquí), que almacena todos los mensajes en un único archivo.

Fijaremos la variable home_mailbox en Maildir/, que creará una estructura de directorios bajo ese nombre dentro del directorio principal del usuario. El comando postconf puede usarse para consultar o fijar los ajustes de configuración. Configure home_mailbox escribiendo lo siguiente:

  • sudo postconf -e 'home_mailbox= Maildir/'

A continuación, podemos establecer la ubicación de la tabla virtual_alias_maps. Esta tabla asigna cuentas de correo electrónico arbitrarias a las cuentas del sistema Linux. Crearemos esta tabla en /etc/postfix/virtual. Una vez más, podemos usar el comando postconf:

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

Paso 3: Asignar direcciones de correo a cuentas de Linux

A continuación, podemos configurar el archivo de mapas virtuales. Abra el archivo en su editor de texto:

  • sudo nano /etc/postfix/virtual

La tabla de asignación virtual de alias utiliza un formato muy simple. A la izquierda, puede enumerar las direcciones para las que desee aceptar correo electrónico. Después, separado por un espacio en blanco, introduzca el usuario Linux al que desee que se entregue el correo.

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

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

Después de asignar todas las direcciones a las cuentas del servidor correspondientes, guarde y cierre el archivo.

Puede aplicar la asignación escribiendo lo siguiente:

  • sudo postmap /etc/postfix/virtual

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

  • sudo systemctl restart postfix

Paso 4: Ajustar el firewall

Si utiliza el firewall UFW, conforme a los ajustes de la guía de configuración inicial para servidores, tendremos que permitir una excepción para Postfix.

Puede permitir conexiones al servicio escribiendo lo siguiente:

  • sudo ufw allow Postfix

El componente de servidor de Postfix está instalado y listo. A continuación, configuraremos un cliente que pueda gestionar el correo que Postfix procesará.

Paso 5: Configurar el entorno para que se adapte a la ubicación de correo

Antes de instalar un cliente, debemos asegurarnos de que nuestra variable de entorno MAIL esté configurada de forma correcta. El cliente inspeccionará esta variable para determinar dónde buscar el correo del usuario.

Para que la variable se establezca independientemente de cómo acceda a su cuenta (a través de ssh, su, su -, sudo, etc.), debemos fijar algunas ubicaciones diferentes para la variable. La añadiremos a /etc/bash.bashrc y un archivo en /etc/profile.d para asegurarnos de que cada usuario tenga esto configurado.

Para agregar la variable a estos archivos, escriba lo siguiente:

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

Para leer la variable en su sesión actual, puede recurrir al archivo /etc/profile.d/mail.sh:

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

Paso 6: Instalar y configurar el cliente de correo

Para interactuar con el correo que se envía, instalaremos el paquete s-nail. Esta es una variante del cliente xmail de BSD, que cuenta con una gran variedad de funciones, puede gestionar el formato Maildir correctamente y, mayormente, es compatible con versiones anteriores. La versión GNU de mail tiene algunas limitaciones, como guardar siempre el correo leído en el formato mbox independientemente del formato de origen.

Para instalar el paquete s-nail, escriba lo siguiente:

  • sudo apt install s-nail

Deberíamos configurar algunos ajustes. Abra el archivo /etc/s-nail.rc en su editor:

  • sudo nano /etc/s-nail.rc

Al final del archivo, añada las siguientes opciones:

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

Esto permitirá al cliente abrirse incluso con una bandeja de entrada vacía. También fijará el directorio Maildir en la variable interna folder y luego usará esto para crear un archivo mbox sent para almacenar el correo enviado.

Guarde y cierre el archivo cuando haya terminado.

Paso 7: Inicializar Maildir y probar el cliente

Ahora, podremos probar el cliente.

Inicialiar la estructura del directorio

La forma más sencilla de crear la estructura de Maildir en nuestro directorio de inicio es enviar un correo electrónico para nosotros mismos. Podemos hacer esto con el comando s-nail. Debido a que el archivo enviado solo estará disponible una vez que se cree Maildir, deberíamos deshabilitar la escritura para nuestro correo electrónico inicial. Podemos hacer esto pasando la opción -Snorecord.

Envíe el correo electrónico dirigiendo una cadena al comando s-nail. Ajuste el comando para marcar su usuario Linux como el destinatario:

  • echo 'init' | s-nail -s 'init' -Snorecord sammy

Es posible que reciba la siguiente respuesta:

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

Esto es normal y puede aparecer únicamente cuando se envíe este primer mensaje. Podemos comprobar que el directorio se haya creado buscando nuestro directorio ~/Maildir:

  • ls -R ~/Maildir

Debería ver que la estructura del directorio se ha creado 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: 1463177269.Vfd01I40e4dM691221.mail.example.com /home/sammy/Maildir/tmp:

Parece que nuestro correo se entregó.

Administrar correo con el cliente

Utilice el cliente para comprobar su correo:

  • s-nail

Debería ver su nuevo mensaje en espera:

Output
s-nail version v14.8.6. Type ? for help. "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com Wed Dec 31 19:00 14/369 init

Con solo pulsar ENTER, debería aparecer su mensaje:

Output
[-- Message 1 -- 14 lines, 369 bytes --]: From sammy@example.com Wed Dec 31 19:00:00 1969 Date: Fri, 13 May 2016 18:07:49 -0400 To: sammy@example.com Subject: init Message-Id: <20160513220749.A278F228D9@mail.example.com> From: sammy@example.com init

Puede volver a su lista de mensajes escribiendo h y presionando ENTER:

  • h
Output
s-nail version v14.8.6. Type ? for help. "/home/sammy/Maildir": 1 message 1 new >R 1 sammy@example.com Wed Dec 31 19:00 14/369 init

Ya que este mensaje no es muy útil, podemos borrarlo escribiendo d y pulsando ENTER:

  • d

Salga para volver al terminal escribiendo q y pulsando ENTER:

  • q

Enviar correo con el cliente

Puede probar el envío de correo escribiendo un mensaje en un editor de texto:

  • nano ~/test_message

Dentro, introduzca el texto que desee enviar por correo electrónico:

~/test_message
Hello,

This is a test.  Please confirm receipt!

Usando el comando cat, podemos enviar el mensaje al proceso s-nail. Con esto, se enviará el mensaje como su usuario Linux por defecto. Puede ajustar el campo “De” con el indicador -r si desea cambiar ese valor por algo diferente:

  • cat ~/test_message | s-nail -s 'Test email subject line' -r from_field_account user@email.com

Las opciones anteriores son:

  • -s: línea de asunto del correo electrónico.
  • -r: cambio opcional en el campo “De” del correo electrónico. Por defecto, el usuario Linux con el que inició sesión se utilizará para completar este campo. La opción -r le permite anular esto.
  • user@email.com: cuenta a la que se enviará el correo electrónico. Cambie esto para que sea una cuenta válida a la que tenga acceso.

Puede ver sus mensajes enviados en su cliente s-nail. Inicie el cliente interactivo de nuevo escribiendo lo siguiente:

  • s-nail

Después de esto, visualice sus mensajes enviados escribiendo lo siguiente:

  • file +sent

Puede administrar el correo enviado usando los mismos comandos que emplee para el correo entrante.

Conclusión

Con esto, debería tener Postfix configurado en su servidor de Ubuntu 18.04. Administrar servidores de correo electrónico puede ser una tarea difícil para los administradores principiantes, pero con esta configuración debería disponer una funcionalidad de correo electrónico MTA para comenzar.

0 Comments

Creative Commons License