Correio proxy para servidor smtp diferente com Postfix

11

Como posso encaminhar (ou proxy) emails para diferentes servidores smtp, dependendo do endereço Para?

Eu tenho uma máquina com um servidor SMTP (postfix) escutando na porta 25. Quero usar o Lamson ( http://lamsonproject.org/ ) para lidar com algumas mensagens recebidas e com as quais quero ter o postfix para lidar.

Minha idéia é configurar o Lamson para escutar em uma porta diferente, digamos localhost: 10025. Em seguida, configurei o postfix para pegar todos os emails ouvindo na porta 25.

Como eu configuro o Postfix para fazer proxy de determinadas mensagens para o Lamson em 10025 e lidar com todas as outras mensagens?

Mattias
fonte

Respostas:

18

O Postfix é extremamente flexível (e, portanto, complexo) em sua configuração; portanto, existem várias maneiras de conseguir isso. A maneira mais simples provavelmente seria usar uma transport(5)tabela.

Primeiro, habilite o uso de uma tabela de transporte no postfix:

/etc/postfix/main.cf:
    transport_maps = hash:/etc/postfix/transport

Você também precisará garantir que o Postfix aceite e-mails para os endereços que serão tratados pelo Lamson. Veja permit_auth_destinationas regras que o Postfix aplicará para determinar endereços de destinatários válidos. Para o exemplo a seguir, supondo que "example.com" seja um domínio não conhecido pelo Postfix, provavelmente é mais fácil adicioná-lo como domínio de retransmissão:

/etc/postfix/main.cf:
    relay_domains = example.com

Em seguida, crie uma tabela apropriada. Por exemplo, para redirecionar todos os emails do domínio "example.com", bem como os emails de "[email protected]" para o Lamson local que está ouvindo na porta 10025:

/etc/postfix/transport:
    example.com          smtp:127.0.0.1:10025
    [email protected]    smtp:127.0.0.1:10025

Depois disso (e uma vez após cada atualização no arquivo da tabela de transporte), não se esqueça de executar:

$ postmap /etc/postfix/transport

Isso deve fazer você ir. Certifique-se de ler a transport(5)página do manual, que fornecerá mais idéias sobre como usar esse recurso poderoso.

conde
fonte
Oi, obrigado pela dica. Ainda estou tendo problemas para encaminhar o e-mail depois de seguir suas instruções. Estou recebendo NOQUEUE: rejeitar: RCPT de {my-mail-relay} Endereço do destinatário rejeitado: Usuário desconhecido na tabela de destinatários locais. Alguma ideia?
30511 Mattias
Ah, sim, você também precisará se certificar de que o Postfix aceita retransmissão de correio para o example.com (como o Postfix agora está atuando como retransmissão para Lamson). Se o seu Postfix estiver servindo principalmente outro domínio, a maneira mais fácil de conseguir isso é adicionar o "domínio Lamson" a relay_domains. Eu atualizei para responder para incorporar isso.
conde
1
Obrigado, depois de seguir suas etapas, eu ainda estava tendo problemas para obter o postfix para reconhecer o localhost como um host válido. Executei o comando postconf -e 'smtp_host_lookup = dns, native' e que resolveu o meu problema, o postfix agora está encaminhando o e-mail que desejo para o Lamson.
Mattias
1
É bom saber que funciona. Em vez de mudar smtp_host_lookup, você também pode usar em 127.0.0.1vez de localhost. Atualizei a resposta para acomodar essa melhoria.
conde