[jay.scot]
[020]


--[ Getting to grips with slrn


Until a few weeks ago, I occasionally visited Usenet using the Lynx
browser's built-in NNTP handler. It's a basic tool that served its
purpose for browsing a few groups. However, Lynx couldn't handle
killfiles, and the abundance of spam on Usenet nowadays made it very
discouraging, looking at you google groups!. Recently, my other computer
stopped working, which gave me a clean slate, so I decided to invest
more time into finding a better solution. I remember using Pan back in
the day, towards the end of Usenets hayday, but I wanted something CLI
based so that's why I ended up going with slrn.


When I used Lynx, I had an old Usenet block account that I purchased
about three years ago from usenet.farm, honestly it wasn't for
backfilling binaries! It worked fine for reading, and I rarely posted so
wasn't and issue on that front. This time, though, I went to
eternal-september.org and created a new account there.


At first, I set up slrn in NNTP mode, which means it interacts with the
news server remotely. However, this quickly became inconvenient for
several reasons. Loading groups by connecting directly to the server
every time I started up slrn felt sluggish. Moreover, I couldn't find
a good way to separate my authentication credentials and store the slrn
configuration in Git. In the slrn config file, I had to define the
credentials explicitly, without the ability to call an external password
manager or encrypted file, like so:


       nnrpaccess "snews://news.eternal-september.org:563" "my-user" "my-pass"
       set force_authentication 1


After some research over on the slrn homepage, I discovered that slrn
comes with another tool called slrnpull. As the name suggests, it pulls
all news articles to a local spool, which can then be viewed in slrn.
Setting this up was a breeze, and with this method, I was able to
separate my authentication credentials into a single file called
"authinfo," which I could easily add to my Gitignore. I am now setup and
good to go, looking forward to being more involved with Usenet!


Below, I've included my configuration, which should serve as a good
starting point for anyone wanting to use slrn. All files are relative to
~/.config/slrn


       slrnpull -d ~/.config/slrn/   # pull posts
       slrn -i ~/.config/slrn/config # read posts


--[ config


% user
set username "jay.scot"
set hostname "me@invalid"
set generate_message_id 0

% apps
set editor_command "vim '+set tw=72' +%d '%s'"
set Xbrowser "firefox '%s' &"

% attrib
set followup_string "On %D, %r <%f> wrote:"
set reply_string "In %n, you wrote:"

% paths
set spool_inn_root      "~/.config/slrn/"
set spool_root          "~/.config/slrn/news"
set spool_nov_root      "~/.config/slrn/news"
set read_active         1
set use_slrnpull        1
set server_object       "spool"

set scorefile ".config/slrn/score"

% mime
charset display utf8
charset outgoing utf8

% display
set confirm_actions 0
set sorting_method 9
set uncollapse_threads 1
set top_status_line " %n"
set group_status_line "%D %-20g -- %L (%P)"
set header_status_line "%p [%r/%t] %-20g -- %L (%P)"
set art_status_line "%p %s %-20g -- %L (%P)"
set overview_date_format "%d %b %Y %H:%M"

visible_headers "Date:,From:,Newsgroups:,Subject:"
header_display_format 0 "%F%B  %21r  %T%s %-26g %D  %-5c"

% keybinds
setkey group "set_prefix_argument(4); () = select_group();" "
setkey article create_score "K"


--[ slrnpull.conf


# NAME | MAX_ARTICLES | DAYS_BEFORE_EXPIRE | FETCH_HEADERS_ONLY
default                         0       0       0

eternal-september.info
eternal-september.newusers
eternal-september.talk
alt.gopher
uk.radio.amateur


--[ score


% : Logical AND ie all tests must be passed (Conjunction)
% :: Logical OR ie any of the tests are passed (Disjunction)
% ~ Logical NOT ie an exception from the score rule (Negation)
% = Stop score processing and award the score if the test is passed
% * Wild card character

[*]
 Score:: -9999

 % Kill all articles which are uppercase and contain $ sign
 Subject: \$
 ~Subject: \c[a-z]

 % Google groups are a source of, basically, all spam
 Message-ID: googlegroups

 % Known spam remailer
 From: nobody@dizum\.com

 % Prolific spammer
 From: doctor@doctor\.nl2k\.ab\.ca

[eternal-september.*]
 Score:: -9999
 From: Tigerbrother
 From: Dragonbrother



--[ authinfo


username
password


EOF