Reescritura de direcciones en Postfix: Canonical Maps con Core-Admin


#1

banner-347fcf3f-07b3-4ba3-9196-36456d962afe-1-0

1. Introduccion

Postfix permite reescribir direcciones de correo tanto en el remitente (From) como en el destinatario antes de que el mensaje sea entregado. Esta funcionalidad se implementa a traves de los canonical maps: tablas de correspondencia que transforman una direccion de origen en otra de destino.

Core-Admin integra esta gestion directamente en su interfaz web, permitiendo crear, editar y eliminar reglas de reescritura sin necesidad de editar ficheros manualmente ni ejecutar comandos en consola.

2. Que son los Canonical Maps de Postfix

Los canonical maps son ficheros de correspondencia que Postfix consulta durante el procesamiento de cada mensaje. Existen dos tipos:

Sender Canonical Maps (canonical_maps)

Reescriben la direccion del remitente (envelope sender / cabecera From). Cuando un mensaje sale del servidor, Postfix sustituye la direccion de origen por la que indique la regla.

Fichero: /etc/postfix/canonical
Directiva en main.cf: canonical_maps = hash:/etc/postfix/canonical

Recipient Canonical Maps (recipient_canonical_maps)

Reescriben la direccion del destinatario (envelope recipient). Cuando un mensaje llega al servidor, Postfix sustituye la direccion de destino antes de realizar la entrega.

Fichero: /etc/postfix/recipient_canonical
Directiva en main.cf: recipient_canonical_maps = hash:/etc/postfix/recipient_canonical

Formato del fichero

Ambos ficheros comparten el mismo formato, una entrada por linea:

direccion_original    direccion_destino

Por ejemplo:

root                    admin@midominio.com
webmaster@antiguo.com   webmaster@nuevo.com
@antiguo.com            @nuevo.com

Tras modificar los ficheros, es necesario compilarlos con postmap y recargar Postfix para que los cambios tengan efecto. Core-Admin automatiza todo este proceso.

3. Gestion desde Core-Admin

Core-Admin ofrece la gestion de canonical maps desde dos aplicaciones diferentes, dependiendo de la configuracion del servidor:

Aplicacion Cuando se usa
MailAdmin Servidores con gestion completa de correo (dominios, cuentas, planes, etc.)
Manage Host IPs Servidores sin MailAdmin que solo necesitan gestion basica de hosts y reescritura de direcciones

Ambas aplicaciones ofrecen la misma funcionalidad de canonical maps con la misma interfaz. La razon de esta duplicidad es proporcionar la capacidad de reescritura de direcciones incluso en servidores que no requieren una gestion completa de correo.

Importante: si ambas aplicaciones estan instaladas en el mismo servidor, la funcionalidad de reescritura en Manage Host IPs se desactiva automaticamente y muestra un mensaje indicando que se debe usar MailAdmin. Esto evita conflictos entre ambas gestiones.

4. Localizacion en MailAdmin

En la aplicacion MailAdmin, la seccion de reescritura de direcciones se encuentra en el arbol lateral de navegacion:

Mail management > Address rewriting

Esta seccion comparte espacio con las demas funciones de administracion de correo: dominios, cuentas, planes de correo, excepciones de remitente/destinatario, cola de mensajes, etc.

5. Localizacion en Manage Host IPs

En la aplicacion Manage Host IPs, la seccion se encuentra en:

Host management > Address rewriting

Aqui convive con la gestion de entradas del fichero /etc/hosts y la tabla ARP.

6. Interfaz de usuario

Al acceder a “Address rewriting” en cualquiera de las dos aplicaciones, se muestra un listado de reglas de reescritura con una barra de herramientas que incluye:

  • Boton Add rewrite rule para crear nuevas reglas
  • Cuadro de busqueda para filtrar reglas existentes

Crear o editar una regla

Al pulsar “Add rewrite rule” o hacer doble clic en una regla existente, se abre un formulario con los siguientes campos:

Campo Descripcion
Id Identificador unico (solo lectura, asignado automaticamente)
Is active Casilla para activar/desactivar la regla sin eliminarla
Map type Tipo de reescritura: sender (reescribe el remitente) o recipient (reescribe el destinatario)
Source address Direccion original o patron a interceptar (ej: root, root@miservidor, usuario@ejemplo.com)
Destination address Direccion de reemplazo (debe ser un email valido)
Description Campo de texto libre para documentar el proposito de la regla

Limpieza automatica de direcciones

Al pegar direcciones en los campos de origen y destino, el sistema limpia automaticamente varios formatos habituales:

  • Formato con nombre: Juan Garcia <juan@ejemplo.com> se convierte en juan@ejemplo.com
  • Escapado Kandadu: usuario|.nombre@dominio|.com se convierte en usuario.nombre@dominio.com
  • Espacios y tabuladores: se eliminan espacios, tabuladores y saltos de linea sobrantes
  • Mayusculas: toda la direccion se normaliza a minusculas

Esto permite copiar y pegar direcciones directamente desde clientes de correo o informes sin necesidad de limpiarlas manualmente.

Eliminar una regla

Dentro del formulario de edicion de una regla existente, el boton Remove rewrite rule permite eliminarla previa confirmacion.

7. Que ocurre internamente al guardar

Cuando se crea, edita o elimina una regla desde la interfaz, Core-Admin ejecuta automaticamente los siguientes pasos:

  1. Valida la direccion de destino (debe ser un email valido)
  2. Comprueba duplicados: no puede haber dos reglas con el mismo source_address y map_type
  3. Guarda la regla en la base de datos SQLite local
  4. Regenera los ficheros de Postfix:
    • /etc/postfix/canonical con todas las reglas de tipo sender activas
    • /etc/postfix/recipient_canonical con todas las reglas de tipo recipient activas
  5. Compila los hash maps con postmap
  6. Verifica que main.cf contiene las directivas canonical_maps y recipient_canonical_maps (las anade si faltan)
  7. Recarga Postfix para aplicar los cambios inmediatamente

Todo este proceso es transparente para el usuario y se completa en segundos.

Importacion automatica de reglas existentes

Al instalar o iniciar la aplicacion por primera vez, Core-Admin importa automaticamente las reglas de reescritura que ya existan en los ficheros de Postfix:

  • /etc/postfix/canonical → reglas de tipo sender
  • /etc/postfix/recipient_canonical → reglas de tipo recipient

Las reglas importadas aparecen directamente en la interfaz web y pasan a ser gestionadas por Core-Admin. Las reglas que ya existan en la base de datos no se duplican.

8. Casos de uso

1. Ocultar direcciones internas del sistema

Los servidores Linux envian notificaciones automaticas desde direcciones como root@hostname o cron@hostname.localdomain. Estas direcciones no son validas externamente y los mensajes pueden ser rechazados o marcados como spam.

Solucion: Crear una regla sender que reescriba estas direcciones:

Source address Destination address Map type
root alertas@midominio.com sender
root@miservidor.local alertas@midominio.com sender
cron@miservidor.local alertas@midominio.com sender

2. Migracion de dominio de correo

Al migrar de un dominio antiguo a uno nuevo, se necesita que los mensajes dirigidos al dominio antiguo lleguen a las cuentas del nuevo dominio durante el periodo de transicion.

Solucion: Crear reglas recipient para cada cuenta:

Source address Destination address Map type
info@antiguo.com info@nuevo.com recipient
ventas@antiguo.com ventas@nuevo.com recipient
soporte@antiguo.com soporte@nuevo.com recipient

3. Consolidar multiples cuentas en una

Cuando varias direcciones deben llegar al mismo buzon (por ejemplo, tras una reestructuracion departamental).

Solucion: Crear reglas recipient:

Source address Destination address Map type
facturacion@empresa.com administracion@empresa.com recipient
contabilidad@empresa.com administracion@empresa.com recipient

4. Corregir la direccion de salida de aplicaciones

Algunas aplicaciones web o scripts envian correo con una direccion de remitente generica o incorrecta (como www-data@localhost o noreply@127.0.0.1).

Solucion: Crear una regla sender:

Source address Destination address Map type
www-data@localhost notificaciones@midominio.com sender
noreply@127.0.0.1 noreply@midominio.com sender

5. Unificar la identidad de salida del servidor

Cuando un servidor envia correo desde distintos procesos del sistema y se quiere que todo salga con una unica direccion corporativa.

Solucion: Crear reglas sender para cada proceso:

Source address Destination address Map type
nagios@servidor monitoring@empresa.com sender
logwatch@servidor monitoring@empresa.com sender
fail2ban@servidor seguridad@empresa.com sender

6. Desactivar temporalmente una regla

Si se necesita suspender una regla de reescritura temporalmente (por ejemplo, durante una prueba), basta con desmarcar la casilla “Is active” en la regla. La regla permanece en la base de datos pero no se incluye en los ficheros de Postfix. Cuando se quiera reactivar, se marca de nuevo la casilla.

Resumen

Caracteristica Detalle
Tipos de reescritura Sender (remitente) y Recipient (destinatario)
Aplicaciones MailAdmin y Manage Host IPs (mutuamente excluyentes)
Ficheros Postfix gestionados /etc/postfix/canonical y /etc/postfix/recipient_canonical
Compilacion y recarga Automatica tras cada cambio
Importacion inicial Automatica desde ficheros existentes
Limpieza de direcciones Automatica (formato nombre, escapado Kandadu, espacios, mayusculas)
Activacion/desactivacion Por regla individual, sin necesidad de eliminar