Como bloquear anexos em emails recebidos apenas usando o Postfix?

9

Eu tenho um servidor de correio (CentOS 6.5) executando Postfix e Dovecot

O Postfix está atendendo na porta 25 para email de entrada e 587 para email de saída

O problema é que as mensagens de saída com anexos PDF estão sendo bloqueadas, onde eu só quero mensagens de entrada com anexos PDF bloqueados.

Eu tenho essa linha de configuração no main.cf

 mime_header_checks = regexp:/etc/postfix/blocked_attachments

O arquivo locked_attachments contém:

/name=[^>]*\.(pdf|zip)/ REJECT

Portanto, as mensagens recebidas com um anexo em PDF corretamente são bloqueadas, mas quando componho um email com um PDF que também é bloqueado quando tento e envio.

Como posso dizer ao postfix que quero apenas os anexos recebidos filtrados? Ou eu perdi alguma coisa?

Aditya K
fonte

Respostas:

7

Reescreverei sua pergunta:

Como posso usar _header_checks diferentes para smtpd (porta 25) e envio (porta 587)?

Esse problema canônico pode ser dividido com várias condições

  1. Eu quero desativar header_checks para um dos smtpd ou envio.
  2. Eu quero executar header_checks diferentes para smtpd e envio.

1. Quero desativar header_checks para um dos smtpd ou envio.

Para o exemplo, suponho que você deseja desativar os header_checks para envio (email de saída) .

Solução 1: método receive_override_options

Você pode usar o parâmetro postfix chamado receive_override_options . Com o parâmetro, você pode substituir a opção global header_check, para que o filtro não seja executado. # main.cf header_checks = pcre: / caminho / para / header_checks

#master.cf
submission inet n       -       n       -       -       smtpd
    -o receive_override_options=no_header_body_checks

Advertências: isso desativará TODAS as _checagens_de_ cabeçalho e as checagens-de-corpo definidas nos checagens de cabeçalho do homem 5 . Para o controle completo de qual parâmetro será desativado, consulte a Solução 2.

Solução 2: método de serviço de limpeza múltipla

Podemos usar a técnica de serviço de limpeza múltipla para o seu problema, como *_header_checksfoi realizada pelo serviço de limpeza . Você pode ver o exemplo dessa configuração no tutorial amavisd-new .

O parâmetro mágico para esta configuração é cleanup_service_name . Com esse parâmetro, podemos usar um serviço de limpeza diferente para cada processo smtpd. Primeiro, definimos um serviço de limpeza adicional (chamado no-headerchecks) no master.cf

no-headerchecks unix    n       -       n       -       0       cleanup
    -o mime_header_checks=

Nesta limpeza, definimos mime_header_checks vazios para desativar a filtragem. O último passo é dizer ao serviço de envio para usar nossas verificações sem cabeçalho

submission inet n       -       n       -       -       smtpd
    -o cleanup_service_name=no-headerchecks 

2. Quero executar diferentes header_checks para smtpd e envio.

Para esse problema, você pode usar vários métodos de serviço de limpeza, conforme descrito acima.

Primeiro, definimos um serviço de limpeza adicional (chamado segundo cabeçalho) no master.cf

second-headerchecks unix    n       -       n       -       0       cleanup
    -o mime_header_checks=pcre:/path/to/2ndheaderchecks

Nesta limpeza, definimos o segundo mime_header_checks para outra tabela PCRE. A última etapa é dizer ao serviço de envio para usar nossas verificações de segundo cabeçalho

submission inet n       -       n       -       -       smtpd
    -o cleanup_service_name=second-headerchecks

Nota:

  • Seu caso é semelhante a esta pergunta . Infelizmente, a resposta de Laurentiu Roescu só funciona se você deseja ativar o header_checks para mensagens enviadas que usam smtp como transporte. A boa notícia é que sua primeira frase sobre cleanupdaemon nos dá uma idéia para a segunda solução.

  • É possível aplicar vários métodos de serviço de limpeza se você desejar diferentes header_checks, body_checks e outros parâmetros definidos em man 5 header_checks.

masegaloeh
fonte