postfix - verificações de cabeçalho diferentes para mensagens recebidas e enviadas

4

Como posso aplicar diferentes header_checks para emails de entrada e saída usando o postfix?

Por padrão, todos os header_checks são aplicados a entrada e saída.

    
por Zulakis 25.05.2013 / 18:17

3 respostas

4

header_checks é feito por cleanup , portanto, não acredito que você possa aplicá-lo apenas para entrada ou saída.

smtp_header_checks é aplicado apenas para o correio de saída (cliente smtp)

    
por 25.05.2013 / 21:47
1

Se houver um cabeçalho de correio que você possa usar para identificar qual é a entrada e qual é o correio de saída, com o postfix 3.2 ou mais recente, você pode causar um curto-circuito na header_checks , como:

/^Received: .*detect_outgoing_mails/ PASS
/^X-Something: this rule will only match on incoming mails/ HOLD

(mas ainda lhe dá apenas a opção para corresponder a TODOS (como antes) ou para corresponder apenas a mensagens recebidas ou enviadas apenas, e requer uma versão do postfix relativamente nova)

Como alternativa melhor, se você sempre pode receber mensagens de saída (correio de clientes para os quais você atua como servidor de retransmissão de email) em uma porta (envio: tcp / 587) e mensagens recebidas em tcp / 25, ser capaz de usar master.cf para substituir header_checks para cada um, assim:

submission inet n       -       n       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o header_checks=pcre:/etc/postfix/header_checks.relay

smtp      inet  n       -       -       -       200     smtpd
  -o strict_rfc821_envelopes=yes
  -o header_checks=pcre:/etc/postfix/header_checks.mx

mas isso não funcionará se seus clientes para quem você retransmitir também usarem tcp / 25 como o resto do mundo. Se o fizerem, você pode configurar uma porta alternativa para eles e isso funcionará, mas a viabilidade disso depende da sua capacidade de persuadir todos os usuários a alterar suas configurações.

Se você tem IP extra extra, também pode torná-lo transparente para os usuários: digamos que você tenha smtp.example.org como servidor de retransmissão para usuários e como seu MX com% IP_de_c%, você pode alterar o MX do domínio para IP a.a.a.a e, em seguida, use um servidor smtpd em b.b.b.b com um conjunto de verificações de cabeçalho e outro servidor smtpd em a.a.a.a com outro conjunto de verificações de cabeçalho. Isso é ainda mais fácil se você reencaminhar apenas para usuários de 192.168.x.x / 24 quando você pode manter o mesmo nome DNS e usar exibições DNS para apresentar IP interno para clientes internos e IP externo para o resto do mundo.

E a terceira forma é usar o recurso FILTER do postfix em vez de b.b.b.b - em vez de simples correspondência de regexp, encaminhará mensagens inteiras para o seu script personalizado para processamento, que poderá distinguir facilmente entre e-mails de entrada e saída, inspecionando cabeçalhos, e então fará qualquer pós-processamento como desejado.

    
por 15.01.2017 / 23:51
0

Se eu entendi sua pergunta corretamente, você deve ser capaz de fazer isso através do /etc/postfix/header_checks file, algo assim para o correio externo /^From: "spammer/ REJECT /^To: [email protected]/ REDIRECT [email protected]

Eu fiz isso há muito tempo, então não lembre de todos os detalhes, mas você pode obter mais informações aqui DOC

Isso permitiria que você definisse uma ação dependendo se o e-mail estava chegando ou saindo. Espero que isso responda à sua pergunta.

    
por 25.05.2013 / 19:07