Postfix: selecionando o host de retransmissão baseado no cabeçalho From: mail em vez do remetente do envelope

8

Eu configurei com sucesso o Postfix para retransmitir emails via Mandrill usando SASL e sender_dependent_relayhost_maps com uma tabela MySQL para que diferentes remetentes se conectassem ao Mandrill usando seu próprio nome de usuário e chave de API do Mandrill.

Até aí tudo bem, mas eu tenho três usuários que usam um provedor de serviços de e-mail e o remetente no envelope da mensagem está definido como "[email protected]" para todos os três usuários, e o único lugar que contém o o endereço de e-mail do usuário real está no De: cabeçalho de e-mail .

Estou feliz com a segurança (ou a falta dela) de usar o De: cabeçalho de e-mail porque estou apenas encaminhando e-mails enviados para endereços de e-mail específicos que são rigidamente controlados, mas ser muito grato por sugestões de como posso especificar melhor o host de reencaminhamento com base no valor do De: cabeçalho . Existe alguma maneira de definir o valor do envelope para ser o mesmo que o campo de? Ou alguma outra maneira de fazer isso?

    
por Adrian Savage 02.04.2015 / 03:53

2 respostas

4

Baseado neste thread na lista de discussão postfix: transporte diferente para todos os emails introduzidos via sendmail (1) , parece que o seu caso foi possível. Infelizmente você não pode confiar apenas em duas tabelas sender_dependent_relayhost_maps e smtp_sasl_password_maps . Você precisa modificar master.cf . A ideia é usar header_checks para rotear e-mail para diferentes transportes. Em seguida, em cada transporte, definimos o cliente smtp que usa credenciais independentes e relayhost.

Primeiro defina header_checks no main.cf e em sua tabela 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]

Bom, agora configuramos smtp1 , smtp2 , smtp3 transport em 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

O arquivo smtpX.relay tem conteúdo semelhante, por exemplo,

[hostX.example.com]   userX:passwordX

Aviso:

por 02.04.2015 / 09:44
0

Isso funcionou para mim com uma mudança: a ação "FILTER" precisa ser adicionada no arquivo header_dependent_relay :

#/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]

Veja o link

    
por 04.05.2018 / 01:01