Como configurar o amavisd-new para varredura apenas em remetentes / servidores específicos?

10

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

Eu sei que é possível fazê-lo no endereço de email de um destinatário, mas não sobre como fazê-lo no endereço de email do remetente. É até possível fazê-lo no endereço IP de um destinatário nos bancos de apólices. Mas minha abordagem deve ser ser independente do destinatário e retransmitir apenas o remetente.

O que eu quero realizar é apenas digitalizar e-mails originários do Yahoo, Google, Hotmail e outros grandes remetentes. Portanto, é mais fácil configurar quais remetentes devem ser observados do que os que não devem.

Eu sabia que é mais fácil conseguir isso no lado do MTA, mas isso não faz parte da pergunta porque eu já uso 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 desbloqueio, pois isso ainda significa que o email passa por toda a verificação, mas obtém uma pontuação negativa alta. O correio não deve ser verificado a menos que seja enviado pelos grandes jogadores.

Então, quais parâmetros no amavisd-new são os adequados para permitir a varredura para remetentes específicos e somente para esses?

mailq
fonte
Você já viu esses exemplos ? Se sim, o que há de errado com eles?
-
@ syneticon-dj Eu os conheço. Esta é a solução que eu já tenho (quarto parágrafo acima). Mas eles estão atrás dos filtros da fila e eu preciso que o amavis seja executado como um filtro antes da fila e isso não funciona. E isso é para ignorar remetentes específicos; Quero o oposto de apenas verificar remetentes específicos e ignorar o resto.
mailq
Não vejo por que não funcionaria antes da fila. E inverter a lógica para verificar apenas remetentes específicos e não verificar mais nada é apenas reverter as configurações dos bancos de políticas - configure as variáveis ​​de desvio _ * _ checks_maps como sua configuração padrão e verifique se os mapas estão vazios para o banco de políticas do yahoo.com.
-
Por que a lista de permissões não funcionaria por não ligar para o SpamAssassin? Do amavisd.conf-sample: "Se TODOS os destinatários da mensagem estiverem na lista branca ou negra do remetente, a verificação de spam (chamando o SpamAssassin) será ignorada, economizando tempo". "TODOS" os destinatários devem ser afetados ao usar @whitelist_sender_maps, não?
precisa saber é o seguinte

Respostas:

1

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

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

Lista de permissões, exceto Domain.X

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

Lista de permissões, exceto Domínio e Subdomínio de X

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

Modificando

Por exemplo, adicionando 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 QUEBRA ESTA REGRA EM VÁRIAS REGRAS, NÃO É O QUE VOCÊ QUER

Quebrar as regras em 2 ou mais linhas fará uma lista branca de tudo !!

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

Em termos simples, a lista de permissões é uma verificação seqüencial, uma linha / regra por vez.

Vejamos o seguinte exemplo ERRADO

# NÃO COPIAR ISSO
@whitelist_sender_maps = (new_RE (
    qr'@(?!(gmail\.com$|hotmail\.com$))'i,
    qr'@(?!(aol\.com$|msn\.com$))'i
));
# NÃO COPIAR ISSO
  1. Qualquer coisa do msn.com passará, porque a primeira linha retornará VERDADEIRO e a verificação será interrompida.
  2. Qualquer coisa do gamil.com passará porque, depois de falhar na 1ª linha, o amavisd se moverá para a 2ª linha, que retornará VERDADEIRO .
  3. E o domínio que não está na lista? Eles vão passar. Esta é a intenção da regra!

Você acaba na lista branca de todos os remetentes !!

Programa de Teste Perl

#! / usr / bin / perl

use estrito;

# Rejeitar domínio e subdomínio
#my $ REGinfo = '== Rejeitar domínio e subdomínio =='
#my $ REG = qr '[@.] (?! (gmail \ .com $ | hotmail \ .com $ | aol \ .com $))' i;

# Apenas domínio exato
meu $ REGinfo = '== Somente domínio exato ==';
my $REG=qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$))'i;

imprima $ REGinfo. "\ n";
imprime '$ REG ='. $ REG. "\ n \ n";

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

para o meu $ i (0 .. $ # strTest) {
    if ($ strTest [$ i] = ~ $ REG) {
        print ("Passe $ strTest [$ i] \ n");
    }
    outro {
        print ("Falha em $ strTest [$ i] \ n");
    }
}
John Siu
fonte