
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 enjuan@ejemplo.com -
Escapado Kandadu:
usuario|.nombre@dominio|.comse convierte enusuario.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:
- Valida la direccion de destino (debe ser un email valido)
-
Comprueba duplicados: no puede haber dos reglas con el mismo
source_addressymap_type - Guarda la regla en la base de datos SQLite local
-
Regenera los ficheros de Postfix:
-
/etc/postfix/canonicalcon todas las reglas de tiposenderactivas -
/etc/postfix/recipient_canonicalcon todas las reglas de tiporecipientactivas
-
-
Compila los hash maps con
postmap -
Verifica que
main.cfcontiene las directivascanonical_mapsyrecipient_canonical_maps(las anade si faltan) - 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 tiposender -
/etc/postfix/recipient_canonical→ reglas de tiporecipient
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 |


