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