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.
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
.
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:
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
.root@
y postmaster@
. Utilice su cuenta principal para esto. En nuestro caso, sammy.Para brindar explicitud, estos son los ajustes que emplearemos para esta guía:
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.
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'
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:
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
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á.
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
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:
. . .
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.
Ahora, podremos probar el cliente.
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:
OutputCan'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ó.
Utilice el cliente para comprobar su correo:
- s-nail
Debería ver su nuevo mensaje en espera:
Outputs-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
Outputs-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
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:
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.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Se pueden crear estos servidores en DigitalOcean ? Escuche que tienen bloqueos para envios de correos , esto es correcto ?
Saludos