Reescreva “de” para endereços específicos “para”

2

Temos uma configuração em que o postfix envia e-mails por meio do retransmissão do Amazon SES. Tudo está funcionando bem, exceto o e-mail.

Embora este tópico já tenha sido revelado pelo menos aqui e aqui , ainda existem alguns pontos que eu não posso envolver minha cabeça.

O problema é que o Amazon SES não envia e-mails, onde From: não é verificado. Então, quando um endereço interno quer encaminhar para um externo e o remetente também é externo, o e-mail não será enviado.

Para resolver isso, atualmente usamos a seguinte configuração em main.cf

header_checks = regexp:/etc/postfix/first_header_checks
smtp_header_checks = regexp:/etc/postfix/second_header_checks
sender_canonical_maps = regexp:/etc/postfix/sender_canonical
sender_canonical_classes = envelope_sender
smtpd_data_restrictions = check_sender_access pcre:/etc/postfix/sender_access

Com o first_header_checks

/^From:(\s)?(.*)/i PREPEND X-Original-From: $2
/^To:(\s)?(.*)$/i PREPEND X-Original-To: $2

second_header_checks

/^From:(.*)/i REPLACE From: <[email protected]>

sender_canonical

/.*/    [email protected]

sender_access

/(.*)/  prepend Reply-To: <$1>

Isso funciona muito bem para mensagens recebidas. [email protected] envia o e-mail para [email protected] e é encaminhado para [email protected]

Reply-To: <[email protected]>
X-Original-To: <[email protected]>
To: [email protected]
From: <[email protected]>
X-Original-From: <[email protected]>

O problema, isso também acontece para o correio de saída do servidor. Digamos que [email protected] envie um e-mail, o de reescrito para não responder e um Responder-Para será definido. Isso eu quero consertar. Os cabeçalhos de e-mail só devem ser reescritos para os e-mails recebidos que serão encaminhados .

Eu tentei usar expressões regulares como !/^From:(\s)?(.*@verified-domain\.com)/ , mas até agora sem sorte.

    
por kero 21.02.2017 / 13:03

2 respostas

2

O postfix 2.1 e superior suporta operadores condicionais nas tabelas regex e pcre . No seu caso, second_header_checks usando essas condicionais deve ser assim:

if !/^From:(.*)@verified-domain.com/i
/^From:(.*)/i REPLACE From: <[email protected]>
endif

Você pode testar suas tabelas de pesquisa sem realmente enviar algo assim:

peter@mail:~peter $ cat msgheaders
From: <[email protected]>
To: [email protected]

peter@mail:~peter $ postmap -hmq - regexp:/etc/postfix/second_header_checks < msgheaders
From: <[email protected]>     REPLACE From: <[email protected]>

peter@mail:~peter $ cat msgheaders-1
From: <[email protected]>
To: [email protected]

peter@mail:~peter $ postmap -hmq - regexp:/etc/postfix/second_header_checks < msgheaders-1
peter@mail:~peter $ 
    
por 24.02.2017 / 16:33
1

Eu estava tentando fazer algo muito semelhante a este w / um serviço de e-mail diferente, heres como eu resolvi isso (depois de obter muita ajuda deste segmento):

  1. Configure um mapa de transporte que defina o próximo salto para um daemon smtp em execução localmente para seu exemplo de destino externo: [email protected] smtp:localhost:9999
  2. Adicione um novo daemon smtp executado localmente ao master.cf, aplique as verificações de cabeçalho, mapas canônicos e & canonical_classes para somente este daemon
  3. use um content_filter no daemon de execução local para apontar para o servidor mx do destino externo. Meu parecido com isso %código%
  4. Pode ser necessário modificar seus smtpd_recipient_restrictions no daemon em execução local apenas para permitir que ele atue como retransmissão. Por exemplo: %código% (Isso pode não ser o ideal, dbl verificar política de segurança antes de empurrar ao vivo)

Boa sorte, se precisar de mais detalhes, posso tentar ajudar.

    
por 10.11.2017 / 21:12