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.,
- Se possuir um domínio, utilize-o em conjunto com um subdominio e o hostname da máquina,
- Utilize um serviço de DNS dinâmico para conseguir um dominio gratuitamente,
- Utilize o serviço de news individual.net que poderá lhe dar um FQDN gratuitamente.
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:
leafnodeO servidor NNTP.
fetchnewsResponsável por baixar as novas mensagens.
applyfilterResponsável por filtrar a caixa de entrada.
texpireResponsável por remover mensagens antigas.
newsqResponsá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:
news.gmane.org.
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:
Abra o arquivo
/etc/inetd.conf.Verifique que não existe linhas começando com
nntp, se ouver comente-a utilizando#.Adicione as linhas:
# Leafnode 2 services: nntp stream tcp nowait news /usr/sbin/tcpd /usr/local/sbin/leafnodeLembre de verificar o caminho do
tcpdeleafnode.Depois de alterar
/etc/inetd.confé preciso reiniciar o daemon:# /etc/init-d/openbsd-inetd restartou :
# systemctl restart inetd
Para o xinetd:
Abra o arquivo
/etc/xinetd.confe/etc/xinetd.d/.Verifique que não existe linhas começando com
service nntp, se ouver comente-a utilizando#e também as linhas a seguir até encontrar}.Adicione as linhas:
service nntp { socket_type = stream protocol = tcp wait = no user = news server = /usr/sbin/tcpd server_args = /usr/local/sbin/leafnode disable = no }Depois de alterar
/etc/xinetd.confé preciso reiniciar o daemon:# /etc/xinit-d/xinetd restartou :
# systemctl restart xinetd
Para o systemd:
Escreva
/etc/systemd/system/leafnode.socket:[Unit] Description=Leafnode socket [Socket] ListenStream=119 Accept=yes [Install] WantedBy=sockets.targetEscreva
/etc/systemd/system/leafnode@.service:[Unit] Description=Leafnode service [Service] ExecStart=/usr/local/sbin/leafnode StandardInput=socket User=newsExecute:
# systemdtl start leafnode.sockete:
# systemctl enable leafnode.socketpara o processo ser iniciado durante o boot.
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: