Title: Gentoo port of the week: slrn
Author: Solène
Date: 08 November 2017
Tags: gentoo portoftheweek
Description: 

## Introduction

Hello,

Today I will speak about **slrn**, a nntp client. I'm using it to
fetch mailing lists I'm following (without necesserarly subscribing to
them) and read it offline. I'll speak about using nntp to read
news-groups, I'm not sure but in a more general way nntp is used to
access *usenet*. I'm not sure to know what *usenet* is, so we will
stick here by connecting to mailing-list archives offered by
**gmane.org** (which offers access to mailing-lists and newsgroups
through nntp).

Long story short, recently I moved and now I have a very poor DSL
connection. Plus I'm often moving by train with nearly no 4G/LTE
support during the trip. I'm going to write about getting things done
offline and about reducing bandwith usage. This is a really
interesting topic in our hyper-connected world.

So, back to **slrn**, I want to be able to fetch lot of news and read
it later. Every nntp client I tried were getting the articles list (in
nntp, an article = a mail, a forum = mailing list) and then it
download each article when we want to read it. Some can cache the
result when you fetch an article, so if you want to read it later it
is already fetched. While **slrn** doesn't support caching at all, it
comes with the utility **slrnpull** which will create a local copy of
forums you want, and **slrn** can be configured to fetch data from
there. slrnpull need to be configured to tell it what to fetch, what
to keep etc... and a cron will start it sometimes to fetch the new
articles.

## Configuration 

The following configuration is made to be simple to use, it runs with
your regular user. This is for gentoo, maybe some another system would
provide a dedicated user and everything pre-configured.

Create the folder for **slrnpull** and change the owner:

    $ sudo mkdir /var/spool/slrnpull
    $ sudo chown user /var/spool/slrnpull

**slrnpull** configuration file must be placed in the folder it will
use. So edit **/var/spool/slrnpull/slrnpull.conf** as you want, my
configuration file is following.

    default 200 45 0
    # indicates a default value of 20 articles to be retrieved from the
server and
    # that such an article will expire after 14 days.

    gmane.os.freebsd.questions
    gmane.os.freebsd.devel.ports
    gmane.os.openbsd.misc
    gmane.os.openbsd.ports
    gmane.os.openbsd.bugs

The client **slrn** needs to be configured to find the informations
from slrnpull.

File *~/.slrnrc*:

    set hostname "your.hostname.domain"
    set spool_inn_root "/var/spool/slrnpull"
    set spool_root "/var/spool/slrnpull/news"
    set spool_nov_root "/var/spool/slrnpull/news"
    set read_active 1
    set use_slrnpull 1
    set post_object "slrnpull"
    set server_object "spool"

Add this to your crontab to fetch news once per hour (at HH:00
minutes):

    0 * * * * NNTPSERVER=news.gmane.org slrnpull -d
/var/spool/slrnpull/

Now, just type **slrn** and enjoy.

## Cheat Sheet

Quick cheat sheet for using **slrn**, there is a help using "?" but it
is not very easy to understand at first.

+ h : hide/display the article view
+ space : scroll to next page in the article, go to next at the end
+ enter : scroll one line
+ tab : scroll to the end of quotes
+ c : mark all as read

## Tips

+ when a forum is empty, it is not shown by default

I found that a **slrnconf** software provide a GUI to configure slrn
exists, I didn't try it.

## Going further

It seems nntp clients supports a score file that can mark interesting
articles using user defined rules.

nntp protocol allow to submit articles (reply or new thread) but I
have no idea how it works. Someone told me to forget about this and
use mails to mailing-lists when it is possible.

**leafnode** daemon can be used instead of **slrnpull** in a more
generic way. It is a nntp server that one would use locally as a proxy
to nntp servers. It will mirror forums you want and serve it back
through nntp, allowing you to use any nntp client (slrnpull enforces
the use of slrn). **leafnode** seems old, a v2 is still in development
but seems rather inactive. Leafnode is old and complicated, I wanted
something KISS (Keep It Simple Stupid) and it is not.

## Others clients you may want to try

nntp console client

+ gnus (in emacs)
+ wanderlust (in emacs too) 
+ alpine

GUI client

+ pan (may be able to download, but I failed using it)
+ seamonkey (the whole mozilla suite supports nntp)