Pregunta Postfix: seleccionando host de retransmisión basado en De: encabezado de correo en lugar de remitente del sobre


He configurado exitosamente Postfix para retransmitir correos electrónicos a través de Mandrill usando SASL y sender_dependent_relayhost_maps con una tabla MySQL para que los distintos remitentes se conecten a Mandrill utilizando su propio nombre de usuario y clave de API de Mandrill.

Hasta ahora todo bien, pero tengo tres usuarios que usan un proveedor de servicios de correo electrónico y el remitente en el sobre del mensaje está configurado como "mailer@infusionmail.com" para los tres usuarios, y el único lugar que contiene el correo electrónico del usuario real la dirección está en el Desde: encabezado de correo electrónico.

Estoy contento con la seguridad (o falta de ella) de usar el Desde: encabezado de correo electrónico ya que solo estoy reenviando los correos electrónicos enviados a direcciones de correo electrónico específicas que están estrechamente controladas, pero agradecería mucho las sugerencias sobre cómo puedo especificar mejor el host de relevo en función del valor del De: encabezado. ¿Hay alguna manera de establecer el valor del sobre para que sea el mismo que el campo De? ¿O alguna otra forma de hacer esto?


7
2018-04-02 01:53


origen


¿Los tres usuarios usaron la misma credencial de SASL? - masegaloeh
No, cada uno tiene una credencial SASL diferente. Cuando envían correos directamente desde su cliente de correo, identifica correctamente su retransmisión de correo y sus credenciales SASL según su dirección de envío. El uso de infusionmail.com ESP hace que en esta etapa sea imposible realizar la misma búsqueda basada en el remitente, ya que el remitente es el mismo y solo el encabezado de correo electrónico De: es diferente. - Adrian Savage


Respuestas:


Basado en este hilo en la lista de correo postfix: Transporte diferente para todo el correo introducido a través de sendmail (1), parece que tu caso fue posible. Desafortunadamente no solo puedes confiar en dos tablas sender_dependent_relayhost_maps y smtp_sasl_password_maps. Necesitas modificar master.cf. La idea es usar header_checks Para enrutar el correo electrónico a diferentes transportes. Luego, en cada transporte, definimos el cliente smtp que usa credenciales independientes y transmisor de host.

Primero defina header_checks en main.cf y su tabla pcre

#main.cf
header_checks = pcre:/etc/postfix/header_dependent_relay

#/etc/postfix/header_dependent_relay

/^From:.*specialsender1\@example\.com/       smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/       smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/       smtp3:[host3.example.com]

Bien, ahora configuramos smtp1,smtp2,smtp3 transporte en master.cf

#master.cf
smtp1    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp1.relay
smtp2    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp2.relay
smtp3    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp3.relay

Expediente smtpX.relay tiene contenido similar, por ejemplo

[hostX.example.com]   userX:passwordX

Renuncia:


3
2018-04-02 07:44





Esto funcionó para mí con un cambio: la acción "FILTRO" debe agregarse en el header_dependent_relay expediente:

#/etc/postfix/header_dependent_relay

/^From:.*specialsender1\@example\.com/       FILTER smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/       FILTER smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/       FILTER smtp3:[host3.example.com]

Ver http://www.postfix.org/header_checks.5.html


0
2018-05-03 23:01