Recentemente precisei efetuar a configuração no Postfix para entregar mensagens em diferentes ambientes, na mesa 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 de 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 (http://www.postfix.org/postconf.5.html#relayhost), os parâmetros relay_transport, sender_dependent_default_transport_maps, default_transport,sender_dependent_relayhost_maps e a tabela transport tem 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 dominios 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
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.
aqui tem uns detalhes legais, adiciona aí no teu 😛
http://e-tinet.com/linux/6-passos-criando-um-servidor-de-gateway-de-email-com-postfix/