Postfix: Modifica o endereço do remetente com base no destinatário

2

Temos um servidor Postfix que recebe e-mails dos nossos servidores de aplicativos. Os remetentes estão no formato [email protected] (em que host.fqdn pode variar, dependendo do servidor de origem) e os destinatários podem ser usuários internos ou externos.

As mensagens enviadas para usuários externos devem ter o remetente alterado para [email protected]. Eu tentei usar mapas canônicos, mas como isso é tratado pelo daemon de limpeza, antes que qualquer decisão de transporte seja tomada, isso afetaria todos os endereços do remetente.

Eu também tentei criar um transporte smtp personalizado com mapeamentos genéricos e configurar o transport_maps para usar esse transporte smtp personalizado para domínios externos. No entanto, os mapeamentos genéricos afetam os endereços do remetente e do destinatário.

Por fim, tentei o seguinte:

  • Crie um daemon smtpd personalizado que especifique os mapas canônicos do remetente e uma tabela de transporte exclusiva.
  • Enviar todos os emails endereçados externamente para esse daemon personalizado. Idealmente, os mapas canônicos do emissor transformariam o endereço do remetente e a tabela de transporte exclusiva retransmitiria mensagens para a Internet.

No entanto, evidentemente, apenas uma tabela de transporte pode ser usada por instância do Postfix.

Eu quero evitar a criação de uma instância do Postfix totalmente nova para acomodar essa reescrita. Alguma sugestão? (e obrigado antecipadamente)

    
por visualtrey 13.12.2012 / 22:30

1 resposta

2

Aviso: esta resposta não funcionará como pretendido quando o email de processo tiver vários destinatários com domínio interno e externo

Com a multiinstância postfix, a solução seria trivial. Basta configurar transport_maps para a segunda instância e, em seguida, reescrevê-lo em segunda instância.

Sem várias instâncias, você precisa de dois processos smptd, dois processos de limpeza e mapa de acesso .A idéia é filtrar em mapas de acesso em vez de transport_maps. Quando um email tem destinatário de domínio externo, ele é transportado para o segundo daemon smtpd. Então o segundo daemon smtpd chamaria o segundo daemon de limpeza. O primeiro daemon de limpeza não terá o parâmetro canonical maps, enquanto no segundo daemon de limpeza, adicionaremos esse parâmetro para reescrever.

No main.cf, defina check_recipient_access em smtpd _ * _ restriction. Por exemplo:

smtpd_recipient_restriction =
   ... 
   check_recipient_access hash:/etc/postfix/external-filter
   ... 

No arquivo external-filter , defina um mecanismo de filtragem

external.example.com    FILTER smtp:[127.0.0.1]:12525

Neste exemplo, vamos configurar o segundo daemon smtpd para escutar a porta 12525 127.0.0.1.

Agora, configure o segundo daemon smtpd e cleanup em master.cf

[127.0.0.1]:12525  ....  smtpd -o cleanup_service_name=cleanup_rewrite

cleanup_rewrite .... cleanup -o canonical_maps=hash:/etc/postfix/mysender_rewriting

O arquivo mysender_rewriting contém um mapeamento de remetente como você pretendia.

    
por 27.12.2014 / 09:56

Tags