lunes, 22 de febrero de 2010

Transport con regexp para Postfix

La semana pasada he configurado un servidor Postfix para enviar vía relay a smtp.gmail.com y a smtp.mundo-r.com. Este post carecía de sentido(por la cantidad de información que hay en la red) si no fuese por que debo discriminar el envío dependiendo del destinatario. Nada mejor que aplicar expresiones regulares en Postfix para lograrlo. A modo de apunte personal, dejo los ficheros de configuración.

Fichero main.cf[incompleto]

#Fichero configuracion Postfix
#Alberto Permuy Leal - alberto.permuy(en) gmail.com
#Febrero 2010
#
#
#Configuracion basica
append_dot_mydomain = yes
command_directory = /usr/sbin
data_directory = /var/lib/postfix
unknown_local_recipient_reject_code = 550
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
setgid_group = postdrop
#
#
#Redes a las que sirve/recibe correo
myorigin = subdominio.dominio.es
mydomain = $myorigin
mynetworks_style = subnet
mynetworks = 127.0.0.0/8, 192.168.0.0/22
#
#
#Un banner por aqui
smtpd_banner = ESMTP $mail_name
#
#
#PATHS
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliasesx
mailq_path = /usr/bin/mailq
#
#
#Manpages y demas
html_directory = no
manpage_directory = /usr/local/man
#
#
#
#Alias
alias_maps = hash:/etc/aliases
#
#
#TRANSPORTE DE CORREO
#
#
transport_maps = regexp:/etc/postfix/transport_regexp
#
#
#Configuracion para smtp-relay autenticado
smtp_use_tls = yes
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_sasl_password_maps = hash:/etc/postfix/smtp_passwords
smtp_sasl_auth_enable = yes
smtp_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
smtp_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtp_sasl_auth_enable = yes
smtp_sasl_security_options=noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

La línea "más importante" es transport_maps = regexp:/etc/postfix/transport_regexp , que como podemos "deducir" apunta al fichero transport_regexp.
Fichero transport_regexp

/dominio.es$/ smtp:smtp.mundo-r.com
/^.*$/ smtp:smtp.gmail.com:587


Este fichero es muy muy sencillo. Todos los correos con destinatario en @dominio.es se envía directamente por smtp.mundo-r.com y el resto por smtp.gmail.com .

Como indicamos en la línea smtp_sasl_password_maps = hash:/etc/postfix/smtp_passwords , el fichero smtp_passwords contiene las credenciales para autenticarse contra los dos servidores de correo.
Fichero smtp_passwords

smtp.dominio.es user@smtp.mundo-r.com:password-delusuario
smtp.gmail.com:587 usergmail@gmail.com:password-gmail

No hay comentarios: