flnews(1) flnews 1.2.0 manual flnews(1)
NAME
flnews - Fast and lightweight Usenet client with GUI
SYNOPSIS
flnews [-display [host]:display] [-geometry WxH[+X+Y]]
flnews [-h|-v]
DESCRIPTION
If you don't know what Usenet is, you probably want to read this arti-
cle first:
https://en.wikipedia.org/wiki/Usenet
flnews is a client with graphical user interface that uses the NNTP
protocol defined in RFC 3977 to get Usenet news articles defined in RFC
5536 from a server via IP network. Version 1 of the NNTP protocol (as
defined in RFC 977) is supported too and automatically used, if the
server does not report support for Version 2.
If compiled with support for ssl(3), the NNTPS protocol (NNTP over
encrypted TLS connection) is supported. For NNTPS connections the
server to client authentication via X509 certificate is always per-
formed. Optionally the client can authenticate to the server via the
AUTHINFO USER/PASS extension defined in RFC 4643.
If compiled with support for compression and zlib(3), the NNTP COMPRESS
extension is supported. Compression negotiation is disabled by default
and can be enabled on the 'Edit->Configuration->Misc' tab in the user
interface. Because compression in general can weaken the underlaying
encryption, the optional authentication is always done before compres-
sion is negotiated. For the same reason compression negotiation should
be disabled for reading groups that contain articles with confidential
information.
flnews provides full Unicode support, including NFC normalization for
posting and search/compare operations. Article content is converted to
ISO 8859-1 before posting (if possible) to be more friendly to old
clients. The ability to display Unicode content depends on the GUI
toolkit fltk(3). Even if the content could not be correctly displayed,
it is always possible to correctly quote it in follow-up articles.
flnews has MIME support according to RFC 2045, RFC 2046, RFC 2047 and
RFC 2231. Since version 0.18 full MIME conformance according to RFC
2049 Section 2 was reached. Posted articles should be fully RFC 5536
conformant (without postprocessing by the user).
Additional checks are implemented that create warnings if an article
violates common Usenet conventions. Conformance to mandatory GNKSA 2.0
rules was reached with exception of part 4 (the "Reply-To" header field
can only be modified before the article composer is started):
https://js.home.xs4all.nl/gnksa/
Currently flnews 1.2.0 provides no support for the following features:
o Multiple servers
o Offline mode
o UUCP
If you need one of these features, use leafnode(8) or another proxy
server (consider Hamster for machines with Windows operating system).
OPTIONS
The following options are supported:
-4 Force usage of IPv4 network protocol.
-confprefix path Use different configuration directory. Atten-
tion: Never set path to an existing configura-
tion directory for flnews with a different
major version number!
-debug Enable debug mode.
-display [host]:display X display to use. More information about X can
be found in X(7).
-geometry WxH[+X+Y] Window size and position.
-h Print help message.
-iconic Starts with minimized window.
-notooltips Disable tooltip messages.
-v Print version and compile time options.
EXIT STATUS
Zero on regular exit. All other values indicate an error.
ENVIRONMENT
DISPLAY X display to use. More information about X can
be found in X(7).
FLTK_SCHEME Selects the FLTK scheme to use. FLTK 1.3.0
accepts the following options:
o none (Default style)
o gtk+ (GTK+ style)
o plastic (Aqua style)
Newer FLTK versions may accept additional
schemes.
TMPDIR Directory used for temporary files (as recom-
mended by POSIX). This value will override the
default "/tmp".
TZ The timezone that is used by localtime(3).
flnews internally uses this function to con-
vert POSIX timestamps to local time and for
creating 'date-time' tokens according to RFC
5322.
XDG_CONFIG_HOME Prefix for configuration directory path
according to XDG Base Directory Specification.
This value will override the default "~/.con-
fig". The program name flnews is appended as
last path component.
In addition, flnews honours the following locale related variables:
LANG Used as fallback if LC_* variables are not
set.
LC_ALL Overdrives all other LC_* variables.
LC_CTYPE Character classification to use. Only locales
with US-ASCII, ISO 8859-1 and UTF-8 codesets
are allowed here. Setting this to a locale
with UTF-8 codeset is very expensive on some
operating systems (e.g. more than an order of
magnitude slower on NetBSD 5). Note that set-
ting this to POSIX or an ISO 8859-1 locale
will not completely disable Unicode support!
You can at least use Unicode for your name in
the identity configuration and you can cor-
rectly quote Unicode content for follow-up
articles in any case.
LC_MESSAGES Locale for user interface language. The code-
set is ignored because FLTK internally always
use UTF-8 (regardless of the locale settings).
If flnews is compiled without National Lan-
guage Support (NLS), this variable is ignored.
As a general rule, POSIX.2 define that all locale sections must use the
same codeset. More information about NLS can be found in nls(7) or
locale(7) depending on the operating system.
X RESOURCES
Information about X resources and how to set them can be found in X(7).
fltk.background (String) The value of this ressource is taken
as the background color for most widgets (see
Text.background if it does not work).
fltk.foreground (String) The value of this ressource is taken
as the foreground color for most widgets.
fltk.scheme (String) See the environment variable
FLTK_SCHEME for possible values. The environ-
ment variable takes precedence over this
ressource.
Text.background (String) The value of this ressource is taken
as the background color for text, list, and
valuator widgets.
Text.selectBackground (String) The value of this ressource is taken
as the background color for selected text.
Set it to something like "gray" for a more
decent selection color. On machines with
8-bit color depth the highlight color for
search results (that is derived from the
selection background color) may have little or
no contrast. Use a darker color in this case,
e.g. "darkgray".
Xft.antialias (Boolean) If FLTK uses the X11 backend and is
compiled to use Xft (the default), then the
value "true" will enable and "false" will dis-
able font anti-aliasing. The recommended set-
ting is "true".
Xft.hinting (Boolean) If FLTK uses the X11 backend and is
compiled to use Xft (the default), then the
value "true" will enable and "false" will dis-
able font hinting. The recommended setting is
"true".
Xft.autohint (Boolean) If FLTK uses the X11 backend, is
compiled to use Xft (the default) and Xft is
configured with enabled font hinting (resource
Xft.hinting set to "true") then this resource
controls the hinting algorithm. With setting
"false" the BCI algorithm is used, "true"
enables the builtin autohinter of Freetype2.
The recommended setting is "false".
Xft.hintstyle (Integer) If FLTK uses the X11 backend, is
compiled to use Xft (the default) and Xft is
configured with enabled font hinting (resource
Xft.hinting set to "true") then this resource
controls the hinting mode. Possible values are
"hintnone" (0), "hintslight" (1), "hintmedium"
(2) and "hintfull" (3). The recommended set-
ting is "hintfull" (3).
Attention: With some modes it is possible that
lines will overlap and characters like under-
score are clipped!
FILES
~/.signature The signature from this file is automatically
appended to all created articles.
This file is not used if another location for
the signature file is configured. See CONFIG-
URATION section below for details (configfile
entry "signature_file").
Note: At this (shared) location the file
should be US-ASCII encoded. If you want to use
Unicode in signatures, a dedicated signature
file for flnews should be configured.
The following files are inside the configuration directory. The default
location is "~/.config/flnews". The environment variable XDG_CON-
FIG_HOME and the option -confprefix (highest precedence) can be used to
modify the configuration directory location.
.cancelsecret Secret for generating Cancel-Locks/-Keys with
scheme SHA256 according to RFC 8315.
The secret in this file must be a cryptograph-
ically random value according to RFC 4086 and
should be at least 32 octets in length.
flnews must be compiled with support for
ssl(3) or this file will be ignored, because
the cryptographic functions are shared.
If this file is not present, it is automati-
cally created and a new secret is written to
it (using random data from the cryptographic
PRNG).
If this file is present and not empty, and the
fqdn entry is set, flnews creates "Cancel-
Lock" (always) and "Cancel-Key" header fields
when canceling or superseding articles.
To use the same secret as another installation
of flnews (or another newsreader that use the
algorithm recommended by RFC 8315 with HMAC
based on SHA256), copy the file with the
desired secret to this location.
To manually disable this feature, an empty
file must be used.
Attention: Everybody who get his hands on this
secret can cancel articles that were locked
using this key in the past! This file should
be readable only by the user.
The old scheme SHA1 is still supported too.
See CONFIGURATION section below for details
(configfile entry "cancelkey").
configfile Configuration and user interface state of last
session. The file format is forward and back-
ward compatible between all versions with same
major number.
See CONFIGURATION section below for details.
groupfile Subscribed groups and already viewed articles
database. The data is US-ASCII encoded in
newsrc format and can be shared with other
newsreaders using the entry newsrc in config-
file. It is possible to share the group data
over machine borders by using a NFS server
(advisory file locking support is required).
Attention: In any case all newsreaders that
share a groupfile must be configured to use
the same server! There is a convention to name
such files "newsrc-$HOSTNAME" to make it obvi-
ous for which server they can be used.
It is allowed to share the groupfile between
multiple instances of flnews that run simulta-
neously. The file will contain the state of
the instance that is terminated last.
headers/* Cached article header database. The file names
correspond to the article watermarks of the
current NNTP server. If the server provides
the OVER capability defined in RFC 3977, this
database is not used.
logfile Protocol dump of server communication from
current/last session. To view this data while
the program is running, select 'Tools->Proto-
col console' in the user interface. This file
is overwritten for every new connection.
scorefile Scoring rules. The file format is forward and
backward compatible between all versions with
same major number. The data can be shared
using the entry scorerc in configfile. It is
possible to share the scoring rules over
machine borders by using a NFS server (advi-
sory file locking support is required).
It is allowed to share the scorefile between
multiple instances of flnews that run simulta-
neously. The file will contain the state of
the instance that is terminated last.
See SCORING section below for details.
CONFIGURATION
This section describes the format of the configfile.
This file must be a POSIX textfile, this means every line must be ter-
minated with a LF line break.
Any line starting with '#' is treated as a comment (not parsed and
ignored). Missing entries are automatically added, unsupported entries
are ignored.
The content can have one of two types: Integer or Unicode string.
Strings use the UTF-8 representation and NFC normalization of Unicode.
The following entries are supported by version 1.2.0 but can't be con-
figured from the GUI. Some have no GUI editor by intent. If you don't
know what you are doing, consider to not modify them.
o cancelkey (String) Secret for generating Cancel-Locks/-Keys with
scheme SHA1 according to RFC 8315
flnews must be compiled with support for ssl(3) to make this work,
because the cryptographic functions are shared.
If this entry and the fqdn entry are set, flnews creates "Cancel-
Lock" (always) and "Cancel-Key" header fields when canceling or
superseding articles.
Note: The scheme SHA1 is obsolete since RFC 8315. This entry is pre-
served for backward compatibility. After a transition period this
entry should be left empty and the scheme SHA256 should be used. See
section above (File "~/.config/flnews/.cancelsecret").
o color_xxx (Integer) Text foreground color for xxx.
The value must be an 8-bit index for the FLTK colormap:
https://www.fltk.org/doc-1.3/drawing.html#drawing_colors
o crl_check (Integer) Enable TLS certificate CRL checks
A nonzero value means that CRL checks are enabled.
flnews must be compiled with support for CRL checks to make this
work.
o crl_upd_c (Integer) TLS certificate CRL update choice
A nonzero value means that, after the CRL update interval has
elapsed, the user get a choice to select whether the CRL update
should be delayed.
o crl_upd_iv (Integer) TLS certificate CRL update interval
The value must be positive and is a period of time in hours. Too
large values (longer than one year) are clamped to the upper limit.
The value zero means that new CRLs should be downloaded for every
new connection (not recommended).
o crl_upd_ts (String) TLS certificate CRL update timestamp
This entry contains a timestamp in ISO 8601 format for the last suc-
cessful CRL update.
o dist_suggestions (Integer) Use distribution suggestions
Setting this to a nonzero value automatically initialize the distri-
bution header field in the composer with suggested distribution data
(if available). If no distribution suggestions are available for
the target groups, the header field is initialized to "world" as
with this option set to zero.
Any time a distribution suggestion is used, the user is informed
with a popup window in the GUI.
With the NNTP protocol the command LIST DISTRIB.PATS is used to
retrieve the distribution suggestions from the server.
o editor (String) Optional external editor for article composition
The pathname of an executable program must be specified.
The pathname of a file containing the data is passed as parameter.
If the external editor requires additional parameters, a start
script must be specified (and the script must provide the additonal
parameters).
The editor must be able to process Unicode data in UTF-8 format.
The specified editor must terminate with exit status zero on suc-
cess.
A temporary file is used. Consider to set the TMPDIR environment
variable.
o flowed_insert_crlf (Integer) Add empty line after paragraph
Only used if "Format=flowed" is declared.
A value of zero corresponds to the dumb behaviour up to version 0.16
(if a paragraph ends with an empty line, there is no separation to
the following text).
A value of one adds an empty line separator after every paragraph
that ends with an empty line. This is required to create single line
paragraphs (allow single line to be rewrapped to smaller width for
display). The author of an article can request this behaviour with
the experimental parameter "InsLine=yes" in addition to "For-
mat=flowed".
o fqdn (String) Fully qualified domain name (FQDN) of the machine
Must be empty or a valid "dot-atom" according to RFC 5322, this
means the nameless root domain must be omitted (no trailing dot).
This entry is used to generate Message-IDs. They are only worldwide
unique for all time if flnews runs on a machine with a FQDN. In
addition the clock of the machine must be synchronized so that time-
stamps are not ambigous.
If a FQDN is configured, the header fields "Message-ID", "Injection-
Date", "Cancel-Lock" and "Cancel-Key" (only when cancelling or
superseding an article) are created by flnews for all outgoing arti-
cles. Note that RFC 5537 specifies some nasty details for the
"Injection-Date" header field (they are the reason to handle it
internally in this case).
o force_unicode (Integer) Force Unicode for outgoing articles
With the value zero outgoing articles are converted to ISO 8859-1 if
possible. With a nonzero value, all articles are sent using Unicode
(UTF-8 transformation format).
o immedauth (Integer) Immediate authentication option
The value one represents the default behaviour to authenticate imme-
diately after a connection was established.
The value zero switches the behaviour, so that authentication
against the server is only executed after a request to do so (480
response when using NNTP protocol).
o inews (String) Pathname of an optional external inews
The external inews must accept the article on its standard input and
inject it into the network. After successful completion of this
task it must terminate with exit status zero. In the case of an
error, it must terminate with a nonzero exit status.
Note that the article feeded into the external inews has canonical
format (CR+LF line breaks).
If your inews needs command line parameters or a different input
format, specify a shell script here (and call the external inews
from this script).
o initial_greeting (String) Greeting line for first article of new
thread
The content is automatically inserted into the body of every new
regular article (that is not a followup, cancel or supersede).
o intro (String) Introduction line format
The name of the cited author can be inserted with "%s". The news-
groups list of the cited article can be inserted with "%g". Every
variable is allowed only once.
The last character should be a colon.
o inv_order (Integer) Inverse order
The value zero is the default behaviour (top down).
A nonzero value inverts the order of articles or thread branches
respectively.
o newsrc (String) Optional pathname of file to share group states in
newsrc format
This file is imported at startup and used as groupfile. At exit the
local groupfile is copied back to this location. Note that this file
is replaced with rename(2) and is not modified in place. If the file
is accessed via NFS, advisory locking must be available.
o nntp_no_over (Integer) Disable usage of overview (OVER command) for
NNTP protocol
Setting this to a nonzero value disables usage of overview and makes
the whole newsgroup list usable for scoring rules.
In general the default value 0 should be used. There are two scenar-
ios for which this option may be useful.
If the network connection to the server is very slow and no data
compression is available: In this case the transfer of the (larger)
overview may be slower than the transfer of a few (smaller) new
headers, because the older headers can be taken from the local
cache.
If one or more scoring rules should match other (not the current or
not subscribed at all) newsgroups in Xposts: Because the newsgroup
list is not part of the overview, only the current group is avail-
able if the overview is used.
o organization (String) Optional name of the users organization
The string is inserted as 'Organization' header field in outgoing
articles.
o post_proc (String) Pathname of an optional article postprocessor
Note: The postprocessor can be used to insert custom header fields.
The postprocessor must be a filter in Unix sense. It must accept the
article on its standard input, process it and write the result to
its standard output. After successful completion of this task is
must terminate with exit status zero. In the case of an error, the
postprocessor must terminate with a nonzero exit status.
Note that the article feeded into the postprocessor has canonical
format (CR+LF line breaks) and use Unicode UTF-8 encoding for the
body. Modifications must preserve this format. The Unicode normal-
ization, potential conversion to the target character set and the
application of the transfer encoding to the body is done after the
postprocessing. Therefore the postprocessor is not allowed to add
"Content-Type" and "Content-Transfer-Encoding" header fields!
The header is already in RFC 2047 format. If the postprocessor modi-
fies an existing header field, this format must be preserved. If a
new header field is added, the postprocessor is responsible for cre-
ating valid RFC 2047 encoding and Unicode normalization to NFC.
o refresh_interval (Integer) Group list refresh interval
The value zero is the default behaviour and disables the autorefresh
feature.
A nonzero value refreshes the group list in the specified interval
(in minutes).
o scorerc (String) Optional pathname of file to share scoring rules
This file is imported at startup and used as scorefile. At exit the
local scorefile is copied back to this location. Note that this file
is replaced with rename(2) and is not modified in place. If the file
is accessed via NFS, advisory locking must be available.
o signature_file (String) Pathname of file with signature (relative to
home directory)
Default value: ".signature".
If this file is present, its content is used as signature. The sig-
nature separator "dash dash space" plus LF line break is automati-
cally prepended if not already present in this file. The file must
be a POSIX text file (LF line break after every line, including the
last one) with Unicode encoding in UTF-8 format (Unicode normaliza-
tion is not important and applied automatically).
Use an empty string to disable signature generation.
o testgrp_ere (String) POSIX.2 extended regular expression (Unicode is
allowed)
If non US-ASCII characters are used in the regular expression, they
must be representable in the codeset of the character classification
locale used at runtime. Otherwise the regular expression from this
entry is ignored and will never match. See the desciption for the
LC_CTYPE environment variable above for details.
Note that this regular expression is used for matching against indi-
vidual group names, not group lists. This means '^' and '$' will
match start and end of individual group names.
If a match is detected against a group name, this group is treated
as a test group that may require special control commands in the
"Keywords" header field to silence e.g. reflector bots (see entry
"testgrp_kwords" for keyword configuration).
o testgrp_kwords (String) Comma separated list of words
If a target group of an article is identified as a test group (as
described for the "testgrp_ere" entry), the header field "Keywords"
is initialized to the value defined with this entry.
Attention: Version 1.2.0 of flnews currently only supports US-ASCII
keywords. Do not use spaces around commas.
o timestamp_comment (Integer) Generate Date header field with timezone
comment
The value zero represents the default behaviour to append no com-
ment.
The value one switches the behaviour, so that a comment with the
name of the timezone is appended to the Date header field. If the
operating system does not provide timezone information, this entry
is ignored.
o tls_owncerts (Integer) Use local trust anchors for TLS
With nonzero value the trust anchor (X.509 root certificate) of a
certificate chain is searched in the local location only. The system
wide certificate store of the OpenSSL installation is ignored.
Local X.509 certificate path: ~/.config/flnews/certs
Copy the root certificate (in PEM format) to a file with arbitrary
name in the path specified above. Then run the c_rehash utility to
create the symlink that OpenSSL uses for searching.
o unread_in_next_group (Integer) Skip to next group for unread article
With zero value searching for next unread article stays in current
group.
With nonzero value the next group with unread articles is selected
if there are no more unread articles in the current group.
SCORING
This section describes the format of the scorefile.
This file must be a POSIX textfile, this means every line must be ter-
minated with a LF line break.
Any line starting with '#' is treated as a comment (not parsed and
ignored).
All other lines are parsed as rules with four colon-separated fields:
o Target The groups to which the rule is associated.
This must be a wildmat according to RFC 3977. The wildmat "*" will
match all groups.
o Type The header field to which the rule is associated. This field is
case sensitive.
The following types (in alphabetical order) are recognized by ver-
sion 1.2.0.
Type "from": The string from the fourth field must match literally
against the "From" header field.
Type "from_ere": The string from the fourth field is interpreted as
a POSIX.2 extended regular expression and must match against the
"From" header field.
Type "group": The string from the fourth field must match literally
against a group element in the "Newsgroups" header field.
Type "msgid_ere": The string from the fourth field is interpreted as
a POSIX.2 extended regular expression and must match against the
"Message-ID" header field.
Type "subject": The string from the fourth field must match liter-
ally against the "Subject" header field.
Type "subject_ere": The string from the fourth field is interpreted
as a POSIX.2 extended regular expression and must match against the
"Subject" header field.
Note that rules using wildmats (other than "*") and/or regular
expressions are ignored if flnews is compiled without support for
regular expressions.
o Score The score value that apply if the filter rule matches.
This must be a signed integer value. If the scorefile is shared
between multiple instances of flnews, the values must be usable for
the whole group. The machine with the smallest limits will clamp the
values if they are too large or too small respectively.
o String The rules content string.
This must always be an Unicode string (in UTF-8 format with NFC nor-
malization).
Attention: If the normalization is wrong, the rule may not match as
intended!
The colon has no special meaning inside this field anymore and must
not be quoted for any of the rule types listed above.
The default score for every article is zero. If a rule matches, the
score value from the second field will be added to the corresponding
article. Note that the processing is not stopped after a match, the
following rules are applied too.
Articles with nonzero score result are marked with icons in the GUI.
Articles with negative score result are additionally marked as read.
NOTES
flnews is based in part on the work of the following projects:
o FLTK toolkit for graphical user interface (https://www.fltk.org/)
o Unicode standard for text encoding (https://www.unicode.org/)
Unicode is a registered trademark of Unicode, Inc. in the United
States and other countries.
o OpenSSL cryptographic libraries (https://www.openssl.org/)
If compiled with support for TLS.
o LibreSSL cryptographic libraries (https://www.libressl.org/)
If compiled with support for TLS (as replacement for OpenSSL).
o zlib compression library (https://zlib.net/)
If compiled with support for compression.
AUTHORS
To view the list of authors and the license terms, select
'Help->License' in the user interface.
BUGS
To report bugs, select 'Help->Bug report' in the user interface.
STANDARDS
flnews tries to comply with the following standards:
ISO 2022, ISO 8601, ISO 8859, RFC 20, RFC 822, RFC 850, RFC 977, RFC
1468, RFC 1738, RFC 2045, RFC 2046, RFC 2047, RFC 2049, RFC 2104, RFC
2152, RFC 2183, RFC 2231, RFC 2246, RFC 2368, RFC 2585, RFC 2606, RFC
2646, RFC 2980, RFC 3174, RFC 3629, RFC 3676, RFC 3977, RFC 3986, RFC
4346, RFC 4642, RFC 4643, RFC 5198, RFC 5246, RFC 5280, RFC 5322, RFC
5536, RFC 5537, RFC 5538, RFC 6048, RFC 6066, RFC 6068, RFC 6176, RFC
6657, RFC 7230, RFC 7231, RFC 7234, RFC 7366, RFC 7507, RFC 7568, RFC
7627, RFC 7919, RFC 8054, RFC 8089, RFC 8143, RFC 8315, RFC 8446, RFC
8996, POSIX.2-1992, POSIX.1-1996, POSIX.1-2001, POSIX.1-2008, Unicode
13.0.0, XDG Base Directory Specification 0.7
SEE ALSO
fltk(3), leafnode(8), locale(7), localtime(3), nls(7), ssl(3), zlib(3),
X(7)
https://en.wikipedia.org/wiki/Usenet
https://js.home.xs4all.nl/gnksa/
Unix 2023-06-08 flnews(1)