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 basicaappend_dot_mydomain = yescommand_directory = /usr/sbindata_directory = /var/lib/postfixunknown_local_recipient_reject_code = 550queue_directory = /var/spool/postfixcommand_directory = /usr/sbindaemon_directory = /usr/lib/postfixmail_owner = postfixsetgid_group = postdrop###Redes a las que sirve/recibe correomyorigin = subdominio.dominio.esmydomain = $myoriginmynetworks_style = subnetmynetworks = 127.0.0.0/8, 192.168.0.0/22###Un banner por aquismtpd_banner = ESMTP $mail_name###PATHSsendmail_path = /usr/sbin/sendmailnewaliases_path = /usr/bin/newaliasesxmailq_path = /usr/bin/mailq###Manpages y demashtml_directory = nomanpage_directory = /usr/local/man####Aliasalias_maps = hash:/etc/aliases###TRANSPORTE DE CORREO##transport_maps = regexp:/etc/postfix/transport_regexp###Configuracion para smtp-relay autenticadosmtp_use_tls = yessmtp_tls_CAfile = /etc/postfix/cacert.pemsmtp_sasl_password_maps = hash:/etc/postfix/smtp_passwordssmtp_sasl_auth_enable = yessmtp_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destinationsmtp_sasl_security_options = noanonymoussmtpd_sasl_local_domain =smtp_sasl_auth_enable = yessmtp_sasl_security_options=noanonymousbroken_sasl_auth_clients = yessmtpd_sasl_authenticated_header = yessmtpd_tls_auth_only = nosmtp_tls_note_starttls_offer = yessmtpd_tls_loglevel = 1smtpd_tls_received_header = yessmtpd_tls_session_cache_timeout = 3600stls_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_passwordssmtp.dominio.es user@smtp.mundo-r.com:password-delusuariosmtp.gmail.com:587 usergmail@gmail.com:password-gmail