Postfix es un agente de transferencia de correo (MTA) ampliamente utilizado, conocido por su flexibilidad y robustez. Configurar Postfix adecuadamente es crucial para un funcionamiento eficiente del correo electrónico. El archivo de configuración principal de Postfix es main.cf, donde se definen parámetros clave que rigen el comportamiento del servidor de correo.
Parámetros de Configuración Fundamentales en main.cf
A continuación, se describen algunos de los parámetros más importantes junto con ejemplos de configuración:
# myorigin: Define el dominio que aparece en las direcciones de correo salientes
# Por ejemplo, si un usuario 'usuario' envía un correo, aparecerá como 'usuario@su_dominio.com'
# en lugar de 'usuario@nombre_host.su_dominio.com'.
myorigin = $mydomain
# relayhost: Especifica el host predeterminado al que se envía el correo
# cuando no hay una entrada coincidente en la tabla de transporte opcional.
# Si no se especifica un relayhost, el correo se enruta directamente al destino.
# La precedencia para el enrutamiento es: tabla de transporte > relayhost > $mydestination
# Ejemplo: relayhost = [servidor_smtp.ejemplo.com]
relayhost = $mydomain
# inet_interfaces: Determina las direcciones de interfaz de red en las que
# este sistema de correo recibe mensajes.
# 'loopback-only' significa que solo aceptará correo de la máquina local.
# 'all' aceptaría correo de todas las interfaces de red disponibles.
inet_interfaces = loopback-only
# mynetworks: Define una lista de clientes SMTP "confiables" que tienen
# más privilegios que los "extraños", permitiendo, por ejemplo, el reenvío de correo.
# Ejemplo: mynetworks = 127.0.0.0/8 10.0.0.0/24
mynetworks = 127.0.0.0/8 10.0.0.0/24
# relay_domains: Restringe los dominios a los que este sistema puede reenviar correo.
# Si está vacío, el sistema no reenvía correo para dominios no locales desde redes no confiables.
relay_domains =
# mydestination: Lista de dominios para los cuales esta máquina se considera
# el destino final. Si no se especifican, el correo se envía a un servidor de retransmisión.
# Un valor vacío puede deshabilitar la entrega local de correo, enviando todo a relayhost.
mydestination =
Ejemplos Prácticos de Configuración
Ejemplo 1: Configuración para un Servidor de Correo Interno/Gateway con Redes Confiables
# Establece el dominio local
mydomain = empresa.com
# Permite que Postfix escuche en todas las interfaces de red
inet_interfaces = all
# Define el estilo de las redes confiables por subred
mynetworks_style = subnet
# Especifica las redes confiables (ej. tu red local y localhost)
mynetworks = 192.168.1.0/24, 127.0.0.0/8
# No hay dominios específicos para retransmisión, solo los definidos por $mydestination (si existe)
relay_domains =
# Define un servidor de retransmisión para todo el correo saliente
relayhost = [smtp.gateway.empresa.com]
Ejemplo 2: Configuración con Dominios de Retransmisión Específicos
# Define el dominio principal
mydomain = miempresa.net
# Escucha en todas las interfaces de red
inet_interfaces = all
# Define dominios específicos para los cuales este servidor actuará como relay
# El correo destinado a estos dominios será retransmitido.
relay_domains = dominio1.com, dominio2.net
# El servidor de retransmisión para el correo saliente que no es local
relayhost = [smtp.externo.com]
Gestión de Colas de Correo en Postfix
Postfix utiliza varias colas para gestionar el flujo de correo. Comprender y gestionar estas colas es fundamental para diagnosticar y resolver problemas de entrega.
- maildrop: Correos enviados localmente antes de ser procesados.
- incoming: Correos que están llegando o que el gestor de colas aún no ha procesado.
- active: Correos que el gestor de colas ha abierto y está intentando entregar. Esta cola tiene un límite de tamaño.
- deferred: Correos que no pudieron ser entregados inmediatamente y serán reintentados más tarde.
Comandos de Gestión de Colas
Aquí hay una lista de comandos útiles para la administración de las colas de Postfix:
- Para forzar el envío inmediato de los mensajes en la cola: ```
postfix flush
postqueue -f
- Para verificar el tamaño de la cola de correo: ```
mailq | wc -l
postqueue -p | wc -l
- Para ver el contenido completo de la cola de correo: ```
mailq
postqueue -p
- Para ver el contenido de un correo específico en la cola usando su ID: ```
postcat -q <ID_de_Cola>
- Para eliminar un correo específico de la cola por su ID: ```
postsuper -d <ID_de_Cola>
- Para poner en espera (hold) un correo específico o todos los correos diferidos: ```
postsuper -h <ID_de_Cola>
postsuper -h ALL deferred
- Para liberar (unhold) un correo específico o todos los correos diferidos: ```
postsuper -H <ID_de_Cola>
postsuper -H ALL deferred
- Para reencolar (requeue) un correo específico o todos los correos: ```
postsuper -r <ID_de_Cola>
postsuper -r ALL
- Para eliminar todos los correos diferidos: ```
postsuper -d ALL deferred
find /var/spool/postfix/deferred -type f -exec rm -vf {} ;Alternativamente, para eliminar archivos de correo diefridos directamente (con precaución): - Para eliminar correos diferidos con más de 3 días de antigüedad: ```
find /var/spool/postfix/deferred -type f -mtime +3 -exec rm -f {} ;
- Para eliminar registros de rebotes (defer) con más de 5 días de antigüedad: ```
find /var/spool/postfix/defer -type f -mtime +5 -exec rm -f {} ;
- Para listar todos los correos en la cola 'deferred' con fecha y hora: ```
find /var/spool/postfix/deferred -type f -exec ls -l --time-style=+%Y-%m-%d_%H:%M:%S {} ;
- Para eliminar correos de un remitente o destinatario específico (ejemplo avanzado): ```
1. Obtener los IDs de los correos relevantes.
postqueue -p | grep "usuario@dominio.com" | awk '{print $1}' > /tmp/ids_a_eliminar.txt
2. Eliminar los correos usando los IDs obtenidos.
cat /tmp/ids_a_eliminar.txt | postsuper -d -
Comandos Generales de Administración de Postfix
Estos comandos son útiles para el mantenimiento diario del servicio Postfix:
- Para recargar la configuración de Postfix sin reiniciar el servicio: ```
postfix reload
- Para verificar la sintaxis de los archivos de configuración de Postfix: ```
postfix check
- Para mostrar solo los parámetros de configuración que han sido modificados de sus valores predeterminados en
main.cf: ``` postconf -n - Para mostrar todos los parámetros de configuración de Postfix, incluyendo los valores predeterminados: ```
postconf