Le pedimos a Gemini, la inteligencia artificial de Google, nos explique cómo instalar y configurar PostFix en linux
Explicanos detalladamente cómo instalar y configurar PostFix en linuxPostfix es el Agente de Transferencia de Correo (MTA) más popular, rápido y seguro en entornos Linux. A diferencia de las soluciones "todo en uno" que revisamos antes (como Mail-in-a-Box u Open-Xchange), Postfix hace una sola cosa, pero la hace excepcionalmente bien: enrutar y entregar correos (SMTP).
Por sí solo, Postfix solo envía correos o los recibe y los guarda en un archivo de texto en el servidor (/var/mail/). No tiene base de datos, ni interfaz web, ni IMAP.
Para levantar un servidor funcional desde cero, utilizaremos Ubuntu/Debian como referencia.
Requisitos Previos Críticos
Un FQDN válido: Tu servidor debe tener un nombre de host completo (ej. mail.tudominio.com).
Registros DNS : Debes tener un registro A apuntando a tu IP, y un registro MX apuntando a mail.tudominio.com.
Puerto 25 abierto: Tu proveedor de VPS/Red debe permitir el tráfico de salida por el puerto 25 (muchos proveedores modernos como AWS, DigitalOcean o Google Cloud lo bloquean por defecto para evitar spam).
1. Preparar la identidad del servidor:
Configurar el Hostname local.
Postfix depende en gran medida del nombre del host para presentarse a otros servidores de correo en internet (el saludo EHLO). Si este nombre no coincide con tu DNS, tus correos serán rechazados por Gmail o Microsoft.
Bash
sudo hostnamectl set-hostname mail.tudominio.com
Edita el archivo de resolución local:
Bash
sudo nano /etc/hosts
Añade la IP pública de tu servidor vinculada al nombre:
Añade la IP pública de tu servidor vinculada al nombre:
Plaintext
# Reemplaza 12.34.56.78 por tu IP real
12.34.56.78 mail.tudominio.com mail
2. Instalar los paquetes base:
Selección del modo 'Sitio de Internet'.
Instalaremos el núcleo de Postfix junto con mailutils, un paquete que nos dará herramientas para enviar correos directamente desde la terminal.
Bash
sudo apt update
sudo apt install postfix mailutils -y
Durante la instalación en Ubuntu/Debian, aparecerá una pantalla interactiva (debconf). Responde lo siguiente:
General type of mail configuration: Selecciona Internet Site (Sitio de Internet).
System mail name: Escribe tu dominio principal (ej. tudominio.com, NO mail.tudominio.com).
3. Configurar el motor principal (main.cf):
Modificar variables de enrutamiento y origen.
Toda la lógica de enrutamiento de Postfix vive en un solo archivo: /etc/postfix/main.cf. Haz una copia de seguridad y edítalo:
Bash
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
sudo nano /etc/postfix/main.cf
Busca y asegúrate de que estas variables estén configuradas exactamente así (modificando tu dominio):
12.34.56.78 mail.tudominio.com mail
2. Instalar los paquetes base:
Selección del modo 'Sitio de Internet'.
Instalaremos el núcleo de Postfix junto con mailutils, un paquete que nos dará herramientas para enviar correos directamente desde la terminal.
Bash
sudo apt update
sudo apt install postfix mailutils -y
Durante la instalación en Ubuntu/Debian, aparecerá una pantalla interactiva (debconf). Responde lo siguiente:
General type of mail configuration: Selecciona Internet Site (Sitio de Internet).
System mail name: Escribe tu dominio principal (ej. tudominio.com, NO mail.tudominio.com).
3. Configurar el motor principal (main.cf):
Modificar variables de enrutamiento y origen.
Toda la lógica de enrutamiento de Postfix vive en un solo archivo: /etc/postfix/main.cf. Haz una copia de seguridad y edítalo:
Bash
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
sudo nano /etc/postfix/main.cf
Busca y asegúrate de que estas variables estén configuradas exactamente así (modificando tu dominio):
Ini, TOML
# El nombre del servidor que envía físicamente el correo
myhostname = mail.tudominio.com
# El dominio que se adjuntará a los correos enviados sin dominio
myorigin = /etc/mailname
# IMPORTANTE: Los dominios para los que este servidor ACEPTARÁ correos finales
# Si alguien envía un correo a admin@tudominio.com, Postfix sabrá que es para él y no lo reenviará.
mydestination = $myhostname, tudominio.com, localhost.localdomain, localhost
# Interfaces donde Postfix escuchará (all = todas las IPs del servidor)
inet_interfaces = all
inet_protocols = ipv4
4. Asegurar el parámetro 'mynetworks':
Evitar convertirte en un nodo de SPAM.
Este es el paso de seguridad más crítico. La variable mynetworks define quién tiene permiso para enviar correos a través de tu servidor hacia internet sin proporcionar contraseña.
Si dejas esto abierto, redes de bots usarán tu servidor para enviar spam masivo. Asegúrate de que solo incluya tu red local (loopback):
Ini, TOML
# En el mismo archivo main.cf, la línea debe verse así:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
(Si vas a instalar un cliente webmail o un CRM en otro servidor, deberás añadir la IP de ese servidor a esta lista).
myhostname = mail.tudominio.com
# El dominio que se adjuntará a los correos enviados sin dominio
myorigin = /etc/mailname
# IMPORTANTE: Los dominios para los que este servidor ACEPTARÁ correos finales
# Si alguien envía un correo a admin@tudominio.com, Postfix sabrá que es para él y no lo reenviará.
mydestination = $myhostname, tudominio.com, localhost.localdomain, localhost
# Interfaces donde Postfix escuchará (all = todas las IPs del servidor)
inet_interfaces = all
inet_protocols = ipv4
4. Asegurar el parámetro 'mynetworks':
Evitar convertirte en un nodo de SPAM.
Este es el paso de seguridad más crítico. La variable mynetworks define quién tiene permiso para enviar correos a través de tu servidor hacia internet sin proporcionar contraseña.
Si dejas esto abierto, redes de bots usarán tu servidor para enviar spam masivo. Asegúrate de que solo incluya tu red local (loopback):
Ini, TOML
# En el mismo archivo main.cf, la línea debe verse así:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
(Si vas a instalar un cliente webmail o un CRM en otro servidor, deberás añadir la IP de ese servidor a esta lista).
5. Aplicar cambios y probar el flujo de salida:
Enviar un mensaje a tu cuenta personal.
Guarda el archivo (Ctrl+O, Enter, Ctrl+X) y reinicia el demonio de Postfix para cargar la nueva configuración.
Bash
sudo systemctl restart postfix
sudo systemctl enable postfix
Ahora, dispara un correo de prueba hacia tu cuenta personal (Gmail/Outlook) para verificar que el tráfico de salida hacia internet funciona:
Bash
echo "Este es el cuerpo del mensaje. El servidor Postfix está vivo y enrutando." | mail -s "Prueba desde la consola Linux" tu_correo_real@gmail.com
Dónde buscar si el correo no llega
Si ejecutas la prueba del Paso 5 y el correo no llega a tu bandeja (ni siquiera a la carpeta de Spam), el registro del sistema te dirá exactamente el motivo del fallo.
Abre el archivo de registro en tiempo real:
Bash
sudo tail -f /var/log/mail.log
Busca el bloque que corresponde a tu envío y fíjate en la variable status=:
status=sent ➔ Postfix entregó el correo exitosamente al servidor de Google/Microsoft. (Si no lo ves, está en Spam).
status=bounced ➔ El servidor receptor lo rechazó (generalmente porque te faltan los registros SPF/DKIM o tu IP no tiene reputación).
status=deferred ➔ Postfix no puede salir hacia internet. Esto confirma casi al 100% que tu proveedor de VPS tiene un firewall bloqueando el puerto 25 de salida.
¿Quieres integrar IMAP para poder leer los correos en tu móvil/PC?
Enviar un mensaje a tu cuenta personal.
Guarda el archivo (Ctrl+O, Enter, Ctrl+X) y reinicia el demonio de Postfix para cargar la nueva configuración.
Bash
sudo systemctl restart postfix
sudo systemctl enable postfix
Ahora, dispara un correo de prueba hacia tu cuenta personal (Gmail/Outlook) para verificar que el tráfico de salida hacia internet funciona:
Bash
echo "Este es el cuerpo del mensaje. El servidor Postfix está vivo y enrutando." | mail -s "Prueba desde la consola Linux" tu_correo_real@gmail.com
Dónde buscar si el correo no llega
Si ejecutas la prueba del Paso 5 y el correo no llega a tu bandeja (ni siquiera a la carpeta de Spam), el registro del sistema te dirá exactamente el motivo del fallo.
Abre el archivo de registro en tiempo real:
Bash
sudo tail -f /var/log/mail.log
Busca el bloque que corresponde a tu envío y fíjate en la variable status=:
status=sent ➔ Postfix entregó el correo exitosamente al servidor de Google/Microsoft. (Si no lo ves, está en Spam).
status=bounced ➔ El servidor receptor lo rechazó (generalmente porque te faltan los registros SPF/DKIM o tu IP no tiene reputación).
status=deferred ➔ Postfix no puede salir hacia internet. Esto confirma casi al 100% que tu proveedor de VPS tiene un firewall bloqueando el puerto 25 de salida.
¿Quieres integrar IMAP para poder leer los correos en tu móvil/PC?