Como configurar o amavisd-new apenas para varrer determinados remetentes / servidores?

10

Gostaria de saber como configurar o amavisd-new para verificar apenas o Spam em clientes específicos (IPs, CIDRs ou nomes de host) ou, alternativamente, o domínio de email do remetente.

Eu sei que é possível fazer isso no endereço de e-mail de um destinatário, mas não em como fazer isso para o endereço de e-mail do remetente. É até possível fazê-lo no endereço IP de um destinatário com bancos de políticas. Mas a minha abordagem deve ser ser independente do destinatário e apenas retransmitir o remetente.

O que eu quero fazer é apenas verificar e-mails originados do Yahoo, Google, Hotmail e outros grandes remetentes. Por isso, é mais fácil configurar quais remetentes devem ser observados do que os que não deveriam.

Eu sei que é mais fácil de obter no lado do MTA, mas isso não faz parte da pergunta porque eu já tenho uma solução no lado do MTA. Eu quero fazer isso no amavisd-new. E não ajuda saber como colocar remetentes em uma lista de permissões, pois isso ainda significa que o e-mail passa por toda a varredura, mas recebe uma alta pontuação negativa. O e-mail não deve ser escaneado, a menos que seja enviado pelos grandes jogadores.

Então, quais parâmetros no amavisd-new são os corretos para habilitar a varredura para determinados remetentes e apenas para estes?

    
por mailq 14.01.2012 / 21:36

1 resposta

1

Lista de permissões do Amavisd, exceto alguns domínios

O que você precisa é whitelist_sender_map ( aqui ) com expressão regular regex ( aqui )

Coloque na lista de permissões todas, exceto Domain.X

@whitelist_sender_maps = ( new_RE(
    qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$))'i
));

Lista branca, exceto o domínio e o subdomínio de X

@whitelist_sender_maps = ( new_RE(
    qr'[@.](?!(gmail\.com$|hotmail\.com$|aol\.com$))'i
));

Modificando

Por exemplo, adicionar msn.com à exceção da lista de permissões

@whitelist_sender_maps = ( new_RE(
    qr'[@.](?!(gmail\.com$|hotmail\.com$|aol\.com$|msn\.com$))'i
));

NÃO QUEBRE ESTA REGRA MÚLTIPLA, NÃO É O QUE VOCÊ QUER

Quebrando as regras em 2 ou mais linhas, WHITELIST TUDO !!

(vou colocar esta seção em vermelho, se possível)

Em termos simples, a lista branca é uma verificação sequencial, uma linha / regra por vez.

Vamos analisar o seguinte exemplo WRONG

# DO NOT COPY THIS
@whitelist_sender_maps = ( new_RE(
    qr'@(?!(gmail\.com$|hotmail\.com$))'i,
    qr'@(?!(aol\.com$|msn\.com$))'i
));
# DO NOT COPY THIS
  1. Qualquer coisa do msn.com passará, porque a primeira linha retorna TRUE e o check stop.
  2. Qualquer coisa do gamil.com passará, porque depois de falhar a primeira linha, o amavisd passa para a segunda linha, que retornará TRUE .
  3. E quanto ao domínio que não está na lista? Eles vão passar. Essa é a intenção da regra!

Você acaba colocando todos os remetentes na lista de permissões !!

Programa de teste Perl

#!/usr/bin/perl

use strict;

# Reject Domain & Sub-Domain
#my $REGinfo='==Reject Domain & Sub-Domain=='
#my $REG=qr'[@.](?!(gmail\.com$|hotmail\.com$|aol\.com$))'i;

# Exact domain only
my $REGinfo='==Exact Domain Only==';
my $REG=qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$))'i;

print $REGinfo."\n";
print '$REG='.$REG."\n\n";

my @strTest = (
    '[email protected]',
    '[email protected]',
    '[email protected]',
    '[email protected]',
    '[email protected]',
    '[email protected]',
    '[email protected]'
);

for my $i (0 .. $#strTest){
    if ($strTest[$i] =~ $REG) {
        print ("Pass $strTest[$i]\n");
    }
    else {
        print ("Fail $strTest[$i]\n");
    }
}
    
por 09.11.2012 / 05:05