Esta pagina se ve mejor con JavaScript habilitado

Configuración ips en postfix

 ·  🎃 kr0m

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.

vi /etc/postfix/master.cf

#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.

vi /etc/postfix/master.cf

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
vi /etc/postfix/main.cf
sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport
vi /etc/postfix/sender_transport
@DOMINIO1.com out_DOMINIO1:
@DOMINIO2.com out_DOMINIO2:
postmap hash:/etc/postfix/sender_transport
/etc/init.d/postfix restart

Si optamos por configurar los transports a utilizar mediante base de datos:

vi /etc/postfix/main.cf

#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:

vi /etc/postfix/mysql/mysql_sender_transports.cf

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:

/etc/init.d/postfix restart

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.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí