Postfix - Entregando para diferentes rotas no mesmo ambiente
Dica publicada em Linux / Correio Eletrônico
Postfix - Entregando para diferentes rotas no mesmo ambiente
Recentemente, precisei efetuar a configuração no Postfix para entregar mensagens em diferentes ambientes.
Na mesma rede corporativa são utilizados dois domínios, sendo um utilizando o Cyrus IMAP e o outro utilizando o Exchange 2010. Além das entregas diferentes para os domínios internos, as mensagens para domínios externos deveriam ser encaminhadas para um SMTP de borda, como o IBM Proventia.
Veja a ilustração sobre como deve ser a entrega nesse ambiente:
Sabemos que para entregar as mensagens que não são locais para outro servidor, devemos utilizar o parâmetro relayhost no "main.cf", porém, como fazer para que os dois domínios internos sejam encaminhados para o destino correto?
Conforme a documentação do Postfix, os parâmetros "relay_transport", "sender_dependent_default_transport_maps", "default_transport,sender_dependent_relayhost_maps" e a tabela "transport", têm prioridade sobre o relayhost, portanto, podemos utilizar uma destas soluções para atender nossa necessidade.
Vejamos, então, como fica a configuração utilizando os parâmetros relayhost e transport_maps, no "main.cf":
O arquivo "transport_maps" deve ficar da seguinte forma:
Como podemos observar, o transport_maps permite rotas diferentes por destinos, inclusive, utilizando protocolos diferentes. Efetuada a configuração, basta executar o postmap no arquivo transport_maps e efetuar o reload no Postfix.
Obrigado,
Respirando Linux por Fabio Soares Schmidt
Na mesma rede corporativa são utilizados dois domínios, sendo um utilizando o Cyrus IMAP e o outro utilizando o Exchange 2010. Além das entregas diferentes para os domínios internos, as mensagens para domínios externos deveriam ser encaminhadas para um SMTP de borda, como o IBM Proventia.
Veja a ilustração sobre como deve ser a entrega nesse ambiente:

Conforme a documentação do Postfix, os parâmetros "relay_transport", "sender_dependent_default_transport_maps", "default_transport,sender_dependent_relayhost_maps" e a tabela "transport", têm prioridade sobre o relayhost, portanto, podemos utilizar uma destas soluções para atender nossa necessidade.
Vejamos, então, como fica a configuração utilizando os parâmetros relayhost e transport_maps, no "main.cf":
#Aqui adiciono o IP do servidor de borda, que irá efetuar a entrega para domínios externos
relayhost = SERVIDOR_DE_BORDA
#Aqui defino o transport_maps com o arquivo que irá controlar as entregas para os domínios internos
# que estão em diferentes ambientes
transport_maps = hash:/etc/postfix/transport_maps
relayhost = SERVIDOR_DE_BORDA
#Aqui defino o transport_maps com o arquivo que irá controlar as entregas para os domínios internos
# que estão em diferentes ambientes
transport_maps = hash:/etc/postfix/transport_maps
O arquivo "transport_maps" deve ficar da seguinte forma:
dominio1 lmtp:SERVIDOR_CYRUS_IMAP:lmtp
dominio2 smtp:SERVIDOR_EXCHANGE
dominio2 smtp:SERVIDOR_EXCHANGE
Como podemos observar, o transport_maps permite rotas diferentes por destinos, inclusive, utilizando protocolos diferentes. Efetuada a configuração, basta executar o postmap no arquivo transport_maps e efetuar o reload no Postfix.
Obrigado,
Respirando Linux por Fabio Soares Schmidt