Como reinjetar mensagens digitalizadas na fila usando o sendmail

3

Gostaria de passar as mensagens recebidas usando virtual_transport para um transporte spamassassin (main.cf: virtual_transport=spamassassin ) e, em seguida, reinjetar as mensagens digitalizadas no postfix usando o sendmail.

O transporte é assim:

spamassassin unix   -    n     n   -   -    pipe
    flags=hu user=vmail:mail argv=/usr/bin/spamc -u ${recipient} -e /usr/sbin/sendmail -f ${sender} ${recipient}

Isso deve ser possível de acordo com a documentação do postfix :

High volume sites should avoid using "simple" content filters that re-inject scanned mail via Postfix sendmail(1) and postdrop(1).

Com minha chamada atual do sendmail /usr/sbin/sendmail -f ${sender} ${recipient} , os loops de e-mail são passados de volta para a fila e depois voltam para o spamassassin e assim por diante.

Do meu entendimento da documentação do postfix, o email entregue usando o postfix sendmail é descartado no diretório maildrop e, em seguida, selecionado usando pickup . Tentei anexar um -o virtual_transport=dovecot ao transporte de coleta para evitar a fila, mas isso não ajudou. (Essas opções só podem ser adicionadas aos transportes smtp, suponho).

Como posso reinjetar e-mails digitalizados com spamassassin de volta à fila para entrega final sem causar um loop?

    
por Zulakis 03.05.2015 / 14:05

1 resposta

4

How can I reinject mail scanned with spamassassin back into the queue for final delivery without causing a loop?

NÃO Você não pode

Explicação

Eu entendo o motivo pelo qual você usa virtual_transport para encaminhar e-mails para o Spam Assassin. Você só deseja verificar o e-mail destinado ao seu virtual_mailbox_domain . Infelizmente, ele não segue a configuração recomendada para filtro de conteúdo simples que usa content_filter parâmetro em vez de virtual_transport .

Por que não consigo passar virtual_transport para pickup ou smtpd?

Geralmente, aqui a jornada de e-mail pelo código do postfix

Input  --> cleanup --> qmgr --> Output 
*smtpd                          *local     
*pickup                         *virtual
*qmqpd                          *smtp
                                *lmtp
                                *pipe

No daemon cleanup , o postfix encaminhará seu e-mail, independentemente de pertencerem a transportes virtuais, locais, smtp ou outros. Uma exceção é quando o parâmetro content_filter não em branco foi passado para o serviço de entrada ( smtpd , pickup , qmqpd ). Quando isso acontecer, o postfix substituirá a rota da mensagem e enviará o email para content_filter .

Outra nota, por padrão, todo serviço postfix foi obter o valor do parâmetro main.cf , a menos que você o substitua usando -o parameter = value em master.cf . Mas nem todos os parâmetros em man 5 postconf são usados por um serviço. Por exemplo, content_filter usado apenas por pickup , smtpd e qmqpd , para que você possa colocar -o content_filter = amavis: [127.0.0.1:10025 neles . Outro exemplo, não é sensato colocar -o smtp_bind_address em smtpd como este parâmetro usado somente em smtp service.

O mesmo argumento pode ser aplicado à sua pergunta, "por que eu posso passar -o virtual_transport em pickup ?"

Então, aqui estão as várias alternativas para sua configuração

  • Use content_filter conforme explicado na documentação do postfix. A desvantagem é que você também examina o e-mail transmitido fora de seu domínio.

  • Use content_filter na tabela ACCESS e na ação FILTER . Com isso, você pode verificar seletivamente o e-mail recebido. Infelizmente, você deve inscrever seu virtual domain novamente nessa tabela. . Você pode evitá-lo colocando cuidadosamente a tabela ACCESS após permit_mynetworks , permit_sasl_authenticated . Dessa forma, os e-mails enviados já serão permitidos e você só verifica os e-mails recebidos. ( Crédito ao OP comentário :))

  • Usando Múltiplas instâncias do Postfix . Dessa forma, você pode manter o parâmetro virtual_transport e o spamc injetará o email em sua segunda instância. E então você pode definir diferentes virtual_transport em diferentes instâncias. Mas é um pouco exagerado se você quiser manter sua configuração simples.

por 03.05.2015 / 15:46