Leafnode-2

Published on May 19, 2013.

Leafnode-2 é um servidor NNTP, i.e., um servidor de newsgroup/usenet. Neste poste irei mostrar como instalá-lo e configurá-lo.

Preparação

Primeiro é preciso criar um usuário um um grupo chamado news. :

# useradd news
# passwd news
# grep news /etc/passwd
news:x:500:500::/home/news:/bin/bash
# grep news /etc/group
news:x:500:

Depois de criado o usuário e o grupo news verifique se o sistema possui um Fully Qualified Domain Name (FQDN), e.g.,

Verique se o FQDN está corretamente configurado em /etc/HOSTNAME e /etc/hosts. Se precisar, utilize:

# hostname --fqdn

Componentes

Leafnode-2 é composto por 5 programas:

leafnode

O servidor NNTP.

fetchnews

Responsável por baixar as novas mensagens.

applyfilter

Responsável por filtrar a caixa de entrada.

texpire

Responsável por remover mensagens antigas.

newsq

Responsável pelo sumário das noticias.

Instalação

Baixe o Leafnode-2 a partir de http://www.dt.e-technik.uni-dortmund.de/~ma/leafnode/beta/.

Descompacte, acesse a pasta e compile. :

$ tar -xvf leafnode-2
$ cd leafnode-2
$ ./configure
$ make

O diretório para spooling é por padrão /var/spool/news e pode ser modificado na compilação:

$ ./configure --enable-spooldir=/diretorio/para/spooling
$ make

Ao utilizar o systemd como super-daemon (ver na próxima sessão) parece ocorrer alguma incompatibilidade ao modificar o diretório para spooling:

# journalctl
...
... leafnode[...]: cannot open /diretorio/para/spooling/leaf.node - is your --enable-spooldir matching your installation?
...

Se a compilação não apresentar problemas, instale-o. :

# make install

Configuração

Copie o arquivo de configuração fornecido como exemplo. :

# cp /etc/leafnode/config.example /etc/leafnode/config

Abra o arquivo /etc/leafnode/config e edite-o. Algumas coisas que precisam ser configuradas:

expire = 20

server = your.news.server
username = your.username
password = your.password

initialfetch = 500

A declaração expire é importante caso contrário corre um erro:

... leafnode[...]: no expire declaration in config file.

Algumas opções para your.news.server são:

Leafnode-2 roda a partir do super-daemon inetd (ou xinetd ou systemd) e precisa ser adicionado as configurações deste último. Para o inetd:

Para o xinetd:

Para o systemd:

Agora utilize telnet para verificar se o Leafnode-2 está funcionando. Você deve encontrar alguma coisas parecida com:

$ telnet localhost 119
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
200 Leafnode NNTP daemon, version 2.0.0.alpha20121101a at mydomain.org
quit
205 Always happy to serve!
Connection closed by foreign host.

Com o Leafnode-2 funcionando é hora de configurar a variável de ambiente NNTPSERVER. Para isso, adicione no seu ~/.bashrc :

export NNTPSERVER=localhost

Sincronizando

Depois de tudo configurado, é hora de executar o Leafnode-2 pela primeira vez. Execute o comando:

# fetchnews -vvv

O Leafnode-2 irá se conectar aos servidores e baixar a lista de newsgroups e respectivas descrições.

Agora você deve iniciar seu leitor de newsgroup. Será apresentado todos os newsgroups presentes no Leafnode-2 (note que você não está inscrito em nenhum dos newsgroups e que o número de mensagens é 0). Procure por um newsgroup que lhe interessa e acesse-o, você irá encontrar a seguinte mensagem:

From: Leafnode <news@leafnode>
Subject: Leafnode placeholder for group some.newsgroup

This server is running leafnode, which is a dynamic NNTP proxy. This means
that id does not retrieve newsgroups unless someone is actively reading
them.

If you do an operation on a group - such as reading an article, looking at
the group table of contents or similar, then leafnode will go and fetch
articles from that group when it next updates.

Since you have read this dummy articles, leafnode will retrieve the
newsgroup some.newsgroup when fetchnews is run next time. If you'll into
this group a little later, you will see real articles.

If you see articles in groups you do not read, that is almost always
because of cross posting. These articles do not occupy any more space -
they are hardlinked into each newsgroup directory.

If you do not understand this, please talk to your newsmaster.

Leafnode can be found at http://leafnode.sourceforge.net/

Em resumo, você precisa fazer um primeiro acesso nos grupos de seu interesse para que o Leafnode-2 começe baixar os artigos.

Agora vamos executar novamente o Leafnode-2 para ver se ele baixa os artigos. :

# fetchnews -vvv

Ao acessar novamente o newsgroup você irá encontrar os últimos artigos (o número de artigos irá depender do valor de initialfetch em /etc/leafnode/config e do número de artigos presentes no newsgroup).

Como precisamos ficar executando o Leafnode-2 de tempos em tempos para ele pegar os últimos artigos, podemos utilizar o cron para isso. :

# crontab -u news -e

e adicione as linhas abaixo:

# Sets fetchnews to run at 15 past every hour:
15 * * * * /usr/sbin/fetchnews  1>/dev/null

Referências

Tags: