Reescritura de direcciones de correo en Postfix

El sistema de correo Postfix permite de forma sencilla configurar la reescritura de direcciones de correo electrónico (Address rewriting). Esta funcionalidad es muy útil por ejemplo en servidores que envían correo con usuarios locales de sistema pero quieren forzar que el destinatario reciba el correo con una dirección con un formato correcto (usuario@dominio_real) en lugar de direcciones incompletas, internas, etc.

Todas las reescrituras se realizan en el fichero «generic», ubicado normalmente en /etc/postfix/generic. Pero también es necesario que este fichero esté especificado en el archivo de configuración general de postfix /etc/postfix/main.cf:

smtp_generic_maps = regexp:/etc/postfix/generic

También lo podemos consultar con el comando postconf:

# postconf | grep smtp_generic_maps
smtp_generic_maps = regexp:/etc/postfix/generic

Si os fijáis, la llamada al fichero /etc/postfix/generic especifica «regexp» para que cuando se cree la tabla/base de datos del fichero con el comando postmap permita expresiones regulares. Estos son los tipos disponibles:

       file_type
              The database type. To find out what types are supported, use the
              "postconf -m" command.

              The postmap(1) command can query any supported file type, but it
              can create only the following file types:

              btree  The  output  file  is  a  btree file, named file_name.db.
                     This is available on systems with support  for  db  data-
                     bases.

              cdb    The  output  consists  of  one file, named file_name.cdb.
                     This is available on systems with support for  cdb  data-
                     bases.

              dbm    The output consists of two files, named file_name.pag and
                     file_name.dir.  This is available on systems with support
                     for dbm databases.

              hash   The  output  file  is  a hashed file, named file_name.db.
                     This is available on systems with support  for  db  data-
                     bases.

              fail   A  table that reliably fails all requests. The lookup ta-
                     ble name is used for logging only. This table  exists  to
                     simplify Postfix error tests.

              sdbm   The output consists of two files, named file_name.pag and
                     file_name.dir.  This is available on systems with support
                     for sdbm databases.

              When  no  file_type is specified, the software uses the database
              type  specified  via  the  default_database_type   configuration
              parameter.

Una vez configurado esto sólo nos queda añadir las reescrituras que queramos en el fichero generic y crear la tabla de postfix del fichero con postmap. Os dejo unos ejemplos:

En este ejemplo todo el correo que se envíe con usuarios locales (fqdn *.localdomain) se enviarán con la dirección noresponder@gmail.com:

/^(.*)@(.*).localdomain$/  noresponder@gmail.com

Por ejemplo, si enviamos como root@miserver.localdomain el correo saldrá como noresponder@gmail.com

El siguiente ejemplo cambia la dirección por otra:

/^foo@midominio.com$/  bar@otrodominio.com

Cada vez que modificamos el fichero hay que regenerar la tabla de postfix con postmap y reiniciar el servicio:

# postmap /etc/postfix/generic
# /etc/init.d/postfix restart