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.