Como bloquear anexos em emails de entrada usando apenas o Postfix?

10

Eu tenho um servidor de e-mail (CentOS 6.5) executando o Postfix e o Dovecot

O postfix está escutando na porta 25 para o correio de entrada e 587 para o correio de saída

O problema é que os e-mails de saída com anexos em PDF estão sendo bloqueados, onde eu quero apenas mensagens de entrada com anexos em PDF bloqueados.

Eu tenho esta linha de configuração em main.cf

 mime_header_checks = regexp:/etc/postfix/blocked_attachments

O arquivo blocked_attachments contém:

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

Assim, o recebimento de e-mails com anexos em PDF é bloqueado, mas quando eu componho um e-mail com um PDF que também é bloqueado quando tento enviar.

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

    
por Aditya K 08.01.2015 / 13:08

1 resposta

6

Vou reescrever sua pergunta:

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

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

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

1. Eu quero desligar header_checks para um dos smtpd ou submissão.

Para o exemplo, suponho que você queira desativar o 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á TODOS os _header_checks e body_checks definidos em man 5 header_checks . Para o controle completo qual parâmetro será desativado, consulte a Solução 2.

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

Podemos usar técnica de serviço de limpeza múltipla para o seu problema, pois *_header_checks foi executado por serviço de limpeza . Você pode ver o exemplo dessa configuração no tutorial do amavisd-new .

O parâmetro magic para essa configuração é cleanup_service_name . Com esse parâmetro, podemos usar diferentes serviços de limpeza para cada processo smtpd. Primeiro, definimos um serviço de limpeza adicional (chamado de 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. A última etapa é dizer ao serviço de submissão para usar nossas não-checagens de cabeçalho

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

2. Eu quero rodar header_checks diferentes para smtpd e submissão.

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

Primeiro, definimos um serviço de limpeza adicional (chamado second-headerchecks) no master.cf

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

Nesta limpeza, definimos second mime_header_checks para outra tabela PCRE. O último passo é dizer ao serviço de submissão para usar nossas segundas cheques de cabeçalho

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

Nota:

  • Seu caso é parecido com esta pergunta . Infelizmente a resposta de Laurentiu Roescu só funciona se você quiser ativar header_checks para enviar e-mails que usam smtp como transporte. A boa notícia é que sua primeira frase sobre o cleanup daemon nos dá uma ideia para a segunda solução.

  • O método de vários serviços de limpeza pode ser aplicado se você quiser diferentes header_checks, body_checks e outros parâmetros definidos em man 5 header_checks .

por 09.01.2015 / 03:13