Introducción
Postfix es un conocido 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úblicos en Internet ejecutan Postfix.
En esta guía, aprenderá cómo instalar y configurar Postfix en un servidor Ubuntu 20.04 LTS Focal Fossa. Luego, probará que Postfix puede enrutar correctamente el correo instalando s-nail
a Mail User Agent (MUA), también conocido como cliente de correo electrónico.
Este tutorial es para ayudarlo a poner en funcionamiento Postfix rápidamente con solo algunas funciones básicas de correo electrónico. Al final de esta guía, no tendrá un servidor de correo con todas las funciones, pero tendrá algunos de los componentes principales de esa configuración para ayudarlo a comenzar.
Prerrequisitos
Para seguir esta guía, necesitará lo siguiente:
- Un servidor que ejecuta Ubuntu 20.04 LTS para funcionar como servidor de correo Postfix. Este servidor debe tener un usuario no root con privilegios sudo y un firewall configurado con UFW.
- Un nombre de dominio totalmente calificado que apunta a su servidor Ubuntu 20.04. Tenga en cuenta que si planea acceder a su correo desde una ubicación externa, deberá asegurarse de tener un registro MX que también apunte a su servidor de correo.
Tenga en cuenta que este tutorial asume que está configurando un host con el FQDN de mail.example.com
. Si es necesario, asegúrese de cambiar example.com
o mail.example.com
por su nombre de dominio completo.
Si desea instalar Postfix en un servidor remoto, continúe leyendo, de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no usa el usuario raíz, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie la raíz a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Instalar Postfix
Postfix está incluido en los repositorios predeterminados de Ubuntu, por lo que puede instalarlo con APT.
Para comenzar, actualice la caché del paquete apt
sudo apt update
Luego instale el postfix
con el siguiente comando. Tenga en cuenta que aquí pasamos la variable de entorno DEBIAN_PRIORITY=low
en este comando de instalación. Esto permitirá que el proceso de instalación configure algunas opciones adicionales:
sudo DEBIAN_PRIORITY=low apt install postfix
Este proceso de instalación abrirá una serie de instrucciones interactivas. Para los propósitos de este tutorial, use la siguiente información para completar las indicaciones:
- ¿Tipo general de configuración de correo?: Para ello, elija Sitio de Internet según corresponda a las necesidades de nuestra infraestructura.
- Nombre de correo del sistema: este es el dominio base utilizado para crear una dirección de correo electrónico válida cuando solo se proporciona la parte de la cuenta de la dirección. Por ejemplo, suponga que el nombre de host de su servidor es
mail.example.com
. Probablemente desee establecer el nombre de correo de su sistema de esta manera enexample.com
, por lo que Postfix usará la dirección[email protected]
. - Destinatario de correo root y postmaster: esta es la cuenta de Linux a la que se reenviará el
root@
ypostmaster@
Utilice su cuenta principal para esto. En este caso de ejemplo, noviello. - Otros destinos para aceptar correo: define los destinos de correo que aceptará esta instancia de Postfix. Si necesita agregar otros dominios que este servidor será responsable de recibir, agréguelos aquí. De lo contrario, el valor predeterminado será suficiente.
- ¿Forzar actualizaciones sincrónicas en la cola de correo?: Dado que probablemente esté utilizando un sistema de archivos registrado por diario, seleccione No aquí.
- Redes locales: esta es una lista de las redes para las que el servidor de correo está configurado para el reenvío de mensajes. El valor predeterminado funcionará para la mayoría de los escenarios. Si elige cambiarlo, asegúrese de ser muy restrictivo con respecto al alcance de la red.
- Límite de tamaño del buzón: se puede utilizar para limitar el tamaño de los mensajes. Establecerlo en
0
deshabilita las restricciones dimensionales. - Carácter de extensión de dirección local: este es el carácter que se puede usar para separar la parte normal de la dirección de una extensión (usado para crear alias dinámicos). El
+
predeterminado funcionará para este tutorial. - Protocolos de Internet a utilizar: elija si desea limitar la versión de IP admitida por Postfix. Para los propósitos de este tutorial, seleccione Todo.
Por ejemplo, estas son las configuraciones utilizadas en esta guía:
- ¿Tipo general de configuración de correo?: Sitio web
- Nombre de correo del sistema:
example.com
(nomail.example.com
) - Destinatario de correo raíz y postmaster: el nombre de usuario de su cuenta principal de Linux ( noviello en mi caso)
- Otros destinos para los que aceptar correo:
$myhostname, example.com, mail.example.com, localhost.example.com, localhost
- ¿Forzar actualizaciones sincrónicas 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
Notasudo dpkg-reconfigure postfix
Al final del proceso de instalación, estará listo para realizar algunas actualizaciones en la configuración de Postfix.
Cambiar la configuración de Postfix
Ahora puede ajustar algunas configuraciones que el proceso de instalación del paquete no solicitó. Muchas de las opciones de configuración de Postfix se definen en el archivo /etc/postfix/main.cf
En lugar de editar este archivo directamente, puede usar el postconf
para consultar o establecer los parámetros de configuración.
Para comenzar, configure la ubicación del buzón de correo del usuario de Ubuntu no root. En esta guía, 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 opción alternativa que no se cubre en esta guía es el formato mbox, que almacena todos los mensajes en un solo archivo.
Establezca la variable home_mailbox
Maildir/
. A continuación, creará una estructura de directorio con ese nombre dentro del directorio de inicio del usuario. Configure escribiendo home_mailbox
:
sudo postconf -e 'home_mailbox= Maildir/'
A continuación, establezca la ubicación de la virtual_alias_maps
, que asigna cuentas de correo electrónico arbitrarias a cuentas del sistema Linux. Ejecute el siguiente comando, que asigna la ruta de la tabla a un archivo de base de datos hash llamado /etc/postfix/virtual
:
sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
Ahora que ha definido la ubicación del archivo de mapas virtuales en su 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 favorito; en este ejemplo usaremos nano
:
sudo nano /etc/postfix/virtual
Enumere todas las direcciones para las que desea aceptar correo electrónico, seguidas de un espacio en blanco y el usuario de Linux al que desea que se envíe el correo.
Por ejemplo, si desea aceptar correos electrónicos en [email protected]
y [email protected]
y desea que esos correos electrónicos se envíen al usuario novato de Linux, puede configurar el archivo de esta manera:
Una vez que haya asignado todas las direcciones a las cuentas de servidor adecuadas, guarde y cierre el archivo. Si usó nano
, presione CTRL + X
, Y
, luego ENTER
.
Aplique el mapeo escribiendo:
sudo postmap /etc/postfix/virtual
Reinicie el proceso de Postfix para asegurarse de que se hayan aplicado todos los cambios:
sudo systemctl restart postfix
Suponiendo que haya instalado y configurado un firewall con UFW. Esto bloqueará las conexiones externas a los servicios en su servidor de forma predeterminada a menos que esas conexiones estén explícitamente permitidas, por lo que deberá agregar una regla de firewall para permitir una excepción para Postfix.
Puede permitir conexiones al servicio escribiendo:
sudo ufw allow Postfix
Con este Postfix está configurado y listo para aceptar conexiones externas. Sin embargo, todavía no está listo para probarlo con un cliente de correo electrónico. Antes de que pueda instalar un cliente y utilizarlo para interactuar con el correo entregado en el servidor, debe realizar algunos cambios en la configuración del servidor de Ubuntu.
Instale el cliente de correo e inicialice el árbol de Maildir
Para interactuar con el correo entregado, este paso lo guiará a través del proceso de instalación del paquete s-nail
Esta es una variante rica en xmail
cliente BSD xmail que puede manejar el formato Maildir correctamente.
Sin embargo, antes de instalar el cliente, sería prudente asegurarse de que la MAIL
esté configurada correctamente. s-nail
buscará esta variable para averiguar dónde encontrar correo para su usuario.
Para asegurarse de que la MAIL
esté configurada independientemente de cómo se acceda a la cuenta, ya sea por ssh
, su
, su -
o sudo
, por ejemplo, debe configurar la variable en el /etc/bash.bashrc
y agregarla a un archivo dentro de /etc/profile.d
para asegurarse de que esté configurado para todos los usuarios de forma predeterminada.
Para agregar la variable a estos archivos, escriba:
echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh
Para leer la variable en la sesión actual, ejecute el comando fuente del archivo /etc/profile.d/mail.sh
source /etc/profile.d/mail.sh
Ahora instale el cliente de correo electrónico s-nail
sudo apt install s-nail
Antes de ejecutar el cliente, debe ajustar algunas configuraciones. Abra el /etc/s-nail.rc
en su editor:
sudo nano /etc/s-nail.rc
En la parte inferior del archivo, agregue las siguientes opciones:
Esto es lo que hacen estas líneas:
set emptystart
: permite al cliente abrir incluso con un buzón vacío.set folder=Maildir
: establece el directorio deMaildir
en la variable interna defolder
set record=+sent
: crea unsent
para almacenar el correo enviado dentro de cualquier directorio configurado como unafolder
, en este casoMaildir
.
Guarde y cierre el archivo cuando termine. Ahora está listo para inicializar la estructura Maildir de su sistema.
Una forma rápida de crear la estructura de Maildir en su directorio personal es enviarse un correo electrónico con el comando s-nail
Dado que el sent
solo estará disponible después de que se cree Maildir, debe deshabilitar la escritura en este correo electrónico inicial usando la opción -Snorecord
Luego envíe el correo electrónico enviando una cadena al comando s-nail
Edite el comando para marcar al usuario de Linux como destinatario:
echo 'init' | s-nail -s 'init' -Snorecord root
NotaCan't canonicalize "/home/noviello/Maildir"
Verifique que el directorio fue creado buscando el directorio ~/Maildir
ls -R ~/Maildir
Verá que se ha creado la estructura del directorio y que hay un nuevo archivo de mensaje en el ~/Maildir/new
:
/home/noviello/Maildir/:
cur new tmp
/home/noviello/Maildir/cur:
/home/noviello/Maildir/new:
1590659140.V801I3ffaeM732608.mail.example.com
/home/noviello/Maildir/tmp:
Ahora que se ha creado la estructura del directorio, está listo para probar el s-nail
viendo el init
que envió y enviando un mensaje a una dirección de correo electrónico externa.
Prueba de cliente
Para abrir el cliente, ejecute el comando s-nail
s-nail
En su consola, verá una bandeja de entrada con el mensaje de init
s-nail version v14.9.15. Type `?' for help
"/home/noviello/Maildir": 1 message 1 new
>N 1 [email protected] 2020-05-28 11:45 14/402 init
Presione ENTER
para ver el mensaje:
[-- Message 1 -- 14 lines, 402 bytes --]:
From [email protected] Thu May 28 11:45:40 2020
Date: Thu, 28 May 2020 11:45:40 +0200
To: [email protected]
Subject: init
Message-Id: <[email protected]>
From: [email protected]
init
Puede volver a la lista de mensajes escribiendo h
luego ENTER
:
h
>R 1 [email protected] 2020-05-28 11:45 14/402 init
Tenga en cuenta que el mensaje ahora tiene un estado de R
, lo que indica que se ha leído.
Dado que este mensaje no es muy útil, puede descartarlo presionando d
, luego ENTER
:
d
Para volver a la terminal, escriba q
y luego ENTER
:
q
Como prueba final, verifique si s-nail
puede enviar correos electrónicos con éxito. Para hacer esto, puede redirigir el contenido de un archivo de texto al s-nail
, como lo hizo con el init
que envió en el paso anterior.
Comience escribiendo un mensaje de prueba en un editor de texto:
nano ~/test_message
Dentro, ingrese algunos mensajes que desea enviar:
Guarde y cierre el archivo después de escribir el mensaje.
Luego, use el cat
para redirigir el mensaje al proceso s-nail
Puede hacer esto con el siguiente ejemplo, que usa estas opciones:
-s
: define el asunto del mensaje de correo electrónico.-r
: Un cambio opcional en el campo "De:" del correo electrónico. De forma predeterminada, el usuario de Linux con el que inició sesión se utilizará para completar este campo. La-r
permite anularla con una dirección válida, como la que definió en el/etc/postfix/virtual
. En el siguiente comando lo especificamos para comprender mejor cómo usarlo.
Además, asegúrese de ingresar una dirección de correo electrónico válida a la que tenga acceso:
cat ~/test_message | s-nail -s 'Test email subject line' -r [email protected] [email protected]
Luego, vaya a su bandeja de entrada para obtener la dirección de correo electrónico a la que envió el mensaje. Verá su mensaje esperando allí casi de inmediato.
Nota
Puede ver los mensajes enviados dentro de su cliente s-nail
Reinicie el cliente interactivo:
s-nail
Desde el cliente de correo electrónico, vea los mensajes enviados escribiendo:
file +sent
Verá un resultado como este:
+[/home/noviello/Maildir/]sent: 1 message 1 new
▸N 1 [email protected] 2020-05-28 11:47 12/302 Test email subject line
Puede administrar el correo enviado usando los mismos comandos que usa para la bandeja de entrada.
Conclusión
Ahora tiene Postfix configurado en su servidor Ubuntu 20.04 LTS Focal Fossa. La administración de servidores de correo electrónico puede ser una tarea difícil para los nuevos administradores del sistema, pero con esta configuración, debe tener suficiente funcionalidad de correo electrónico MTA para comenzar.