Filtro de conteúdo após a fila do postfix, filtro avançado não funciona

3

Eu segui as instruções no site do postfix em como configurar um filtro de conteúdo , obtive o exemplo simples e correndo bastante rápido, mas depois de longas horas de luta eu não consegui fazer o filtro avançado funcionar.

Eu configurei tudo como no exemplo, o smtp escuta na porta 25 para mensagens não filtradas, tem um conjunto de filtros para passar mensagens para a porta 10025 que chama o script de filtro e outro ouvinte smtp para mensagens filtradas na porta 10026.

No exemplo simples, o script é a parada final no fluxo de mensagens, ele obtém a mensagem através da entrada padrão e reinjecta-a usando o sendmail.

No exemplo avançado, eu pareço não receber a mensagem e não consigo passar adiante. Consegui com sucesso a devolução de uma resposta: "550 conteúdo rejeitado".

Acho que minha pergunta é como o script recebe o corpo do email e como ele o retorna para a fila de mensagens? e como faço tudo funcionar?

main.conf:

content_filter = scan:localhost:10025

master.conf:

scan      unix  -       -       n       -       10      smtp
        -o smtp_send_xforward_command=yes
        -o disable_mime_output_conversion=yes
        -o smtp_generic_maps=

localhost:10025 inet  n       n       n       -       10      spawn
        user=filter argv=/home/omri/filter.sh localhost 10026

localhost:10026 inet  n       -       n       -       10      smtpd
        -o content_filter= 
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks,no_milters
        -o smtpd_helo_restrictions=
        -o smtpd_client_restrictions=
        -o smtpd_sender_restrictions=
        # Postfix 2.10 and later: specify empty smtpd_relay_restrictions.
        -o smtpd_relay_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o smtpd_authorized_xforward_hosts=127.0.0.0/8
    
por Omriko 13.06.2014 / 15:10

1 resposta

2

Na seção Exemplo de filtro de conteúdo simples , você pode usar pipe (por exemplo, stdin) para receber o corpo do correio. Nos avançados , seu script deve ser capaz de atuar como servidor SMTP e cliente SMTP .

  • Como servidor SMTP, o postfix usará o SMTP para fornecer um e-mail ao script. Portanto, seu script deve manipular a transação SMTP por conta própria. O processo de Spawn não faz isso para você, em vez disso, ele será tratado como inetd.
  • Como cliente SMTP, seu script retornará o e-mail para postfix localhost: 10026 com a transação SMTP também.

Snippet dessa página.

The second example is more complex, but can give better performance, and is less likely to bounce mail when the machine runs into some resource problem. This content filter receives unfiltered mail with SMTP on localhost port 10025, and sends filtered mail back into Postfix with SMTP on localhost port 10026.

For non-SMTP capable content filtering software, Bennett Todd's SMTP proxy implements a nice PERL/SMTP content filtering framework. See: http://bent.latency.net/smtpprox/.

    
por 14.06.2014 / 06:26