NFilter - NewsProxy
Texto escrito por Daniel JS, em 21/02/2004.
Publicado originalmente em www.abacatedoce.net.
Última atualização em 18/03/2005.
Download da
versão completa - 665KB
Caso tenha algum problema ao baixar o arquivo, desabilite qualquer
gerenciador de download que esteja usando.
Download da
Atualização (NFilter 1.2.1-b1) - 116KB
É necessário baixar a versão completa antes de
copiar esta atualização.
1. Introdução
2. Por que usar o NFilter?
3. Como funciona?
4. Configurando
4.1. Configuração do newsreader
4.2. Configuração do NFilter
5. Filtros
5.1. Filtro por IP
5.2. Filtro por IP e nick
5.3. Observação na linha
"Autor" (From)
5.4. Filtrando Clones
6. Dúvidas e dicas sobre o NFilter
1. Introdução [Topo]
O NFilter é um software que faz o papel de
um Proxy entre você e o seu servidor de newsgroups favorito, ou
seja, ao invés de configurar seu newsreader para acessar,
news.seuservidor.com.br, você o configura para acessar o
NFilter, através de 127.0.0.1 (o IP da máquina local).
Sendo assim, o NFilter tem acesso a tudo que você envia e recebe
de e para news.seuservidor.com.br.
2. Por que usar o NFilter? [Topo]
Mesmo newsreaders mais poderosos como o Gravity e o Agent,
são limitados em se tratando de regras e filtros. O Outlook
Express, um dos mais populares, é extremamente limitado nesse
quesito.
A proposta do NFilter é dar a estes newsreaders (e a quaisquer
outros, para Windows), um novo conjunto de regras, manipulando as
mensagens antes de disponibilizá-las ao newsreader.
3. Como funciona? [Topo]
Normalmente você configura seu newsreaders para acessar news.seuservidor.com.br, e "conversar" com o servidor. Com o NFilter, você configurará seu leitor para "conversar" (acessar) o NFilter que, por sua vez, fará o trabalho de "conversar" com o servidor.
![]()
Dessa forma, as mensagens passarão pelo NFilter (que
aplicará suas regras) e depois para seu newsreader (que
poderá aplicar novas regras ou filtros, baseado nas
ações do NFilter).
Você também pode usar exclusivamente o NFilter para filtrar
as mensagens.
4. Configurando [Topo]
Após fazer o download do NFilter (665KB), atualizá-lo (116KB) e
instalá-lo, será preciso configurar seu newsreader e o
NFilter para ambos funcionarem corretamente.
4.1. Configuração do
newsreader [Topo]
A única coisa que você precisa fazer, é mudar o
endereço de acesso do seu servidor de newsgroup para "127.0.0.1"
(sem aspas). Atenção: depois de feita essa mudança,
será necessário estar com o NFilter aberto e configurado
corretamente para poder acessar seu servidor normalmente!
4.2. Configuração do
NFilter [Topo]
A primeira coisa a fazer, é ir no menu Edit, opção
Configuration.

É nesta tela onde você vai informar
o servidor que deseja utilizar. Em Server Name or IP number,
informe o servidor ou IP do mesmo que você utiliza. No exemplo
acima, utilizei o news.unipar.br, um dos servidores da rede U-BR (http://u-br.tk).
Pronto, o básico já está feito. Agora, reinicie o
NFilter e você já estará tudo configurado para a
parceria com seu newsreader.
É necessário reiniciar o
NFilter para que qualquer alteração entre em vigor,
incluindo mudanças nos filtros!
5. Filtros [Topo]
A configuração dos Filtros é
feita no menu Edit, na opção Filters.
Será aberta uma janela do bloco de notas, com o arquivo
nfilter.dat aberto. Nele há vários comentários e
instruções de uso em inglês.
No começo, o NFilter pode ser um pouco complicado para lidar.
É recomendado sempre que você faça testes de filtros
usando o grupo de testes do servidor, para garantir que os filtros
criados estejam funcionando perfeitamente.
Basicamente, a estutura das linhas dos filtros é assim:
grupo_de_notícias ação condição
Ações permitidas:
drop = Exclui a mensagem
aflag:texto = Insere "texto" antes do nick do
autor da mensagem.
flag:texto = Insere "texto" antes do assunto da
mensagem
score:valor = Amensagem receberá o marcador estipulado em
valor, para processar regras futuras. O valor pode ser na forma
+X, -X ou X. Mais detalhes logo abaixo.
Observações importantes:
1. O NFilter permite o uso do coringa * (asterisco).
2. Não use espaços nas regras. Substitua-os por *
(asterisco).
3. Não deixe linhas em branco! Caso queira deixar um
espaço entre uma linha e outra, utilize o caracter #.
Veja a seguir, alguns exemplos de regras populares:
u-br.* drop NNTP-Posting-Host:*200.221.5.1
A linha acima bloqueia todos o IP 200.221.5.1
u-br.* drop NNTP-Posting-Host:*200.221.*.*
Já essa opção, bloqueia todos os IPs que
começam com 200.221
u-br.* score:+10 NNTP-Posting-Host:*200.248.*.*
u-br.* score:+10 From:*Fulano*
u-br.* drop
score:20 As três linhas
acima, bloqueariam qualquer clone de fulano que estivesse usando algum
IP dentro da faixa 200.248.x.x.
1. Na linha um, as mensagens da faixa 200.248.x.x recebem mais 10 pontos
no contador interno do NFilter (contador utilizado para processar
regras).
2. Na linha dois, as mensagens de Fulano, recebem mais 10 pontos.
3. Por fim, a última linha exclui mensagens que tenham recebido
20 pontos nas mensagens anterior. Portanto, mensagens de Fulano que não
tenham sido originadas a partir da faixa 200.248.x.x, não
serão bloqueadas, pois receberam apenas 10 pontos na segunda
linha. Já mensagens originadas desta faixa de IP e enviadas por
Fulano, serão bloqueadas, pois receberam 10 pontos na primeira
linha (quando a condição da regra desta linha coincidiu
com a mensagem), e mais 10 na segunda linha (quando a regra desta
também coincidiu). Logo, 10+10=20.
5.3. Observação na linha "Autor" (From) [Topo]
u-br.* aflag:[Ler] From:*Fulano*de*Tal*
O exemplo acima irá colocar a observação
"[Ler]" antes de todas mensagens enviadas por "Fulano de
Tal". Onde irá aparecer essa observação? No
seu newsreader. Para ele, o autor da mensagem será "[Ler]
Fulano de Tal".
A partir daí, você pode aplicar regras e/ou filtros do seu
newsreader, utilizando [Ler] na linha Autor como
condição. O mesmo processo pode ser feito utilizando a
linha Assunto. Nesse caso, o exemplo acima ficaria assim:
u-br.* flag:[Ler] From:*Fulano*de*Tal*
Observe que na condição
você pode usar qualquer item do cabeçalho de uma mensagem.
Com as regras em cadeia (utilizando score), é possível
analisar todos cabeçalhos da mensagem antes de aplicar um comando baseado no score:valor_final.
5.4. Filtrando Clones
[Topo]
"Clones" são mensagens assinadas por usuário Y
como se ele fosse usuário X, com o simples intuito de tumultuar o
grupo, prejudicando não só apenas o usuário
clonado, como todos os outros participantes.
A maneira mais eficiente de evitar clones, é usar o bom senso e
não dar atenção a eles. Entretanto, algumas vezes
isso não é possível, tornando necessária a
utilização de uma ferramenta específica para se
livrar deles. E o NFilter é a ferramenta certa para isso.
Conhecendo algumas características básicas das mensagens
do usuário original, você pode facilmente filtrar as
mensagens do clone.
Para isso, identifique características
únicas na mensagem original do autor. Por exemplo, o fato de
postar sempre usando Outlook Express 6.00.2900.2180 e postar usando a
faixa de IP 200.167.*.* são características únicas.
Embora outros usuários possam usar o mesmo newsreader e o mesmo
IP, provavelmente usarão nicks diferentes entre si.
Após verificar as características, crie as regras
necessárias no NFilter, como abaixo:
# As regras abaixo marcarão usuários usando o nick
"Usuário Real".
# Os que não estiverem usando a versão 6.0.29.00.2180 do
Outlook Express,
# serão marcados como "Clone". Já os que
estiverem usando, serão considerados originais:
u-br.*
score:+5 From:*Usuário*Real*
u-br.*
score:+1 X-Newsreader:*Microsoft*Outlook*Express*6.00.2900.2180
u-br.* aflag:[O]
score:6
u-br.* aflag:[CLONE] score:5
a. Na primeira linha todas as mensagens enviadas
por "Usuário Real" recebem o marcador de 5;
b. Na segunda linha todas as mensagesn enviadas usando o Outlook Express
6.00.2900.2180 recebem mais 1 ponto de marcador;
c. Na terceira linha, os usuários que receberam pontos na linha 1
e 2, receberão o marcador "[O]" antes do nick do
usuário, identificando que o usuário é original.
Esta linha pode ser excluída, se desejar não fazer nenhuma
alteração no nick dos usuários originais;
d. Por fim, a terceira linha marcará como "[CLONE]"
todos os usuários que usarem o nick "Usuário
Real" mas não estiverem usando o newsreader que o
"Usuário Real" sempre usa. Desta forma, será
possível filtrar as mensagens do clone no se newsreader,
através do sinal "[CLONE]" que ficará ao lado
dos nicks dos autores. Ou se preferir nem baixá-las, pode trocar
o item "aflag:[CLONE]" por "drop". Mas essa é
uma alteração perigosa, pois se você não
fizer a regra corretamente, poderá perder mensagens úteis
de usuários que não gostaria de filtrar.
A lógica para filtrar clones é bem
simples. Cada característica da mensagem original de uma
determinada pessoa recebe um ponto. Se no fim o total de pontos
não for equivalente ao total de pontos que o "Usuário
Real" receberia, este "Usuário Real" é
falso.
Sabendo disso você pode ampliar a precisão das regras acima
com a maior facilidade, acrescentando mais características ao seu
filtro. Por exemplo:
u-br.*
score:+5 From:*Usuário*Real*
u-br.*
score:+1 X-Newsreader:*Microsoft*Outlook*Express*6.00.2900.2180
u-br.*
score:+1 (alguma
característica)
u-br.*
score:+1 (outra
característica)
u-br.* aflag:[O]
score:8
u-br.* aflag:[CLONE] score:5
u-br.* aflag:[CLONE] score:6
u-br.* aflag:[CLONE] score:7
Tome cuidado para não criar regras que possam
considerar outros usuários como clones. Construa suas regras de
forma que para ser um clone, ele obrigatoriamente deverá estar
usando um nick X e postar as mensagens
não seguindo tais características típicas do
usuário X.

Observe o clone do usuário Zhezow, detectado pelo NFilter e
visualizado no Gravity.
Entendendo os conceitos explicados acima, você
poderá filtrar praticamente qualquer conteúdo que desejar.
Recomendo a utilização do NFilter em conjunto com o Gravity.
6. Dúvidas e dicas sobre o NFilter
Caso encontre dificuldades para configurar o
NFilter, você pode solicitar auxilio através do meu e-mail.
Para usuários da U-BR, podemos trocar informações
sobre regras para bloquear mensagens indesejadas e "arruaceiros
virtuais" (trolls). Com o intuito de preservar a eficiência
dos filtros, não envio informações sobre meus
filtros para quem eu não conheço.