Configuración ips en postfix


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 smtp_bind_address=A.B.C.D -o syslog_name=postfix-DOMINIO1
out_DOMINIO2  unix -       -       n       -       -       smtp -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:

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

use 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
Si te ha gustado el artículo puedes invitarme a un redbull aquí.
Autor: kr0m -- 15/01/2017 00:48:55