Una de las tareas mas comunes entre administradores de sistemas de servidores postfix es configurar las ips de entrada/salida que debe utilizar un dominio, de este modo cada dominio funciona de forma independiente evitando problemas reputacionales entre ellos. Para las conexiones entrantes definiremos el EHLO a presentar y para las conexiones salientes la ip por la que salir.
Conexiones entrantes:
Primero configuraremos el EHLO que se debe mostrar cuando un cliente se conecte a una ip determinada, comentamos el bindeo genérico para hacerlo de forma específica para cada ip.
#smtp unix - - n - - smtp
A.B.C.D:25 inet n - y - - smtpd -o myhostname=mail.DOMINIO1.com
E.F.G.H:25 inet n - y - - smtpd -o myhostname=mail.DOMINIO2.com
Conexiones salientes:
Configuramos la ip que debe utilizar cada uno de los dominios.
out_DOMINIO1 unix - - n - - smtp -o myhostname=mail.DOMINIO1.com -o smtp_bind_address=A.B.C.D -o syslog_name=postfix-DOMINIO1
out_DOMINIO2 unix - - n - - smtp -o myhostname=mail.DOMINIO2.com -o smtp_bind_address=E.F.G.H -o syslog_name=postfix-DOMINIO2
sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport
@DOMINIO1.com out_DOMINIO1:
@DOMINIO2.com out_DOMINIO2:
/etc/init.d/postfix restart
Si optamos por configurar los transports a utilizar mediante base de datos:
#sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport
sender_dependent_default_transport_maps = mysql:/etc/postfix/mysql/mysql_sender_transports.cf
Configuramos la query a realizar:
user = vmail
password = XXXXXXX
hosts = 127.0.0.1
dbname = postfix
query = SELECT sender_transport FROM sender_transports WHERE domain='%d'
Creamos la base de datos y la tabla:
CREATE DATABASE postfix;
CREATE TABLE sender_transports (
id int(11) unsigned NOT NULL auto_increment,
domain varchar(128) NOT NULL default '',
sender_transport varchar(128) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY domain (domain)
);
Creamos el usuario mysql:
GRANT ALL PRIVILEGES ON postfix.* TO vmail@'localhost' IDENTIFIED BY 'XXXXXXX';
FLUSH PRIVILEGES;
Insertamos los dominios:
INSERT INTO sender_transports (domain, sender_transport) VALUES ('DOMINIO1', 'out_DOMINIO1:');
INSERT INTO sender_transports (domain, sender_transport) VALUES ('DOMINIO2', 'out_DOMINIO2:');
Reiniciamos postfix:
Debemos tener en cuenta que los sender_dependent_default_transport_maps NO se aplican a los emails enviados a través de redirecciones(alias).
Si se conecta directamente con un cliente y se envía el mail se aplica la configuración del sender_dependent_default_transport_maps.
Si se envía un mail a una dirección con un alias y postfix reenvía a otra se IGNORA el sender_dependent_default_transport_maps.
Si necesitamos que los alias salgan por una ip en concreto debemos configurar Postfix en modo multi-instancia.