Postfix como usar o serviço de políticas junto com o filtro de proxy

3

Usando o postfix 2.9 no debian eu configurei o filtro proxy antes da fila para verificação de spam e vírus smtpd_proxy_filter=127.0.0.1:27 . Estou usando o filtro de proxy e não filtro de conteúdo, para que eu possa rejeitar diretamente o email (com filtro de conteúdo pós-fila, só posso descartar o email e, opcionalmente, enviar o backscatter para o endereço do remetente forjado).

Eu também quero usar o serviço de políticas para limitar o número de e-mails enviados por nome de usuário do SASL. Isso é configurado em smtpd_recipient_restrictions antes de permit_sasl_authenticated . O daemon de política funciona bem, mas o postfix reclama que não pode guardar o email com esta mensagem:

warning: access table inet:127.0.0.1:10031: with smtpd_proxy_filter
specified, action HOLD is unavailable

De acordo com este tópico , isso não é diretamente possível:

To HOLD mail with smtpd_proxy_filter, specify the HOLD action with the smtpd proces AFTER the filter.

Eu tentei isso, no entanto, quando eu coloquei o serviço de política no daemon smtpd após o filtro de proxy (smtpd na porta 26 no meu caso), ele não recebe nenhuma informação SASL (confirmado com tcpdump).

smtpd :25 ---> before-queue proxy localhost:27 ---> smtpd localhost:26

Então, como posso combinar essas duas verificações?

EDIT: Talvez os filtros aninhados antes da fila funcionem? Então eu precisaria usar um programa diferente para as verificações de SASL, ou fazer alguma reescrita de protocolo / protocolo de política ...

    
por Marki555 11.06.2015 / 16:57

1 resposta

2

Por fim, consegui encontrar uma solução que funciona bem, embora seja uma abordagem em duas etapas.

Primeiro, modifiquei a configuração do daemon de política (postfix cluebringer v2) para retornar a diretiva PREPEND em vez de HOLD. Estou adicionando um cabeçalho especial, que será avaliado posteriormente: PREPEND X-cust-policy: Hold . Isso funciona mesmo com a combinação com o filtro proxy anterior à fila.

Em segundo lugar, usei a diretiva header_checks pcre:/etc/postfix/header_hold no main.cf para verificar o meu adicionado mais tarde. Essa verificação é avaliada pelo daemon cleanup(8) antes que o e-mail entre na fila. Então, depois que o email é passado através de todas as verificações, incluindo o daemon de política, ele é passado pelo filtro de fila anterior e, em seguida, é processado pelo cleanup(8) daemon. Normalmente, ele deve colocar a mensagem na fila incoming , mas quando encontrar esse cabeçalho, o email é colocado diretamente na fila hold .

Aqui está o conteúdo da tabela PCRE do arquivo /etc/postfix/header_hold :

### PCRE format, no postmap command!
# Hold all email with specified header (which is inserted by policy service)
/^X-cust-policy: Hold/    HOLD

A única ressalva é que a verificação baseada em cabeçalho também será acionada em emails devolvidos não entregues (mas isso não acontece com frequência que o email liberado da fila hold será devolvido).

Também tive que atualizar o webui do cluebringer para suportar a ação PREPEND para o módulo Quotas, embora o próprio daemon já o suporte (a versão no Debian wheezy).

    
por 18.06.2015 / 11:56

Tags