$NAME(1)

NAME
$NAME - Fast and lightweight USENET client with GUI

SYNOPSIS
$NAME [-display [host]:display] [-geometry WxH[+X+Y]]

$NAME [-h|-v]

DESCRIPTION
If you don't know what USENET is, you probably want to read this article first:

https://en.wikipedia.org/wiki/Usenet

This client with graphical user interface uses the NNTP protocol defined in RFC3977 to get USENET news articles defined in RFC5536 from a server via IP network.

$NAME provides full Unicode support, including NFC normalization for posting and search/compare operations. Article content is converted to ISO8859-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).

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 performed. Optionally the client can authenticate to the server via the AUTHINFO USER/PASS extension defined in RFC4643.

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 compression is negotiated. For the same reason compression negotiation should be disabled for reading groups that contain articles with confidential information.

$NAME has MIME support according to RFC2045, RFC2046, RFC2047 and RFC2231. Posted articles should be fully RFC5536 and MIME compliant. For the receiving direction, the following MIME conformance requirements from RFC2049 chapter 2 are not implemented yet:

•   Part 6 (Media types): Support for "message/rfc822" and "multipart/digest" is missing

•   Part 6 (Media types): Data with media type "application" can not be stored into a file yet

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):

http://www.gnksa.org

Currently $NAME $VERSION provides no support for the following features:

•   Multiple servers

•   Offline mode

•   UUCP

If you need one of these features, use leafnode(8) or another proxy server (consider Hamster or CodoSoft NNTPd for machines with Windows operating system).

OPTIONS
The following options are supported:

-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.

-iconic
    Starts with minimized window.

-h  Print help message.

-v  Print version and build date.

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:

    •   none (Default style)

    •   gtk+ (GTK+ style)

    •   plastic (Aqua style)

    Newer FLTK versions may accept additional schemes.

TMPDIR
    Directory used for temporary files (as recommended by POSIX). This value will override the default "/tmp".

TZ  The timezone that is used by localtime(3). $NAME internally uses this function to convert POSIX timestamps to local time and for creating 'date-time' tokens according to RFC5322.

In addition, $NAME 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, ISO8859-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 setting this to POSIX or an ISO8859-1 locale will not completely disable Unicode support! You can at least use Unicode for your name in the identity configuration and you can correctly quote Unicode content for follow-up articles in any case.

LC_MESSAGES
    Locale for user interface language. The codeset is ignored because FLTK internally always use UTF-8 (regardless of the locale settings). If $NAME is compiled without National Language 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.scheme
    (String) See the environment variable FLTK_SCHEME for possible values. The environment variable takes precedence over this ressource.

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.

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 disable font anti-aliasing. The recommended setting 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 disable 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 setting is "hintfull" (3).

    Attention: With some modes it is possible that lines will overlap and characters like underscore are clipped!

FILES

~/.signature
    The signature from this file is automatically appended to all created articles. Note that this file should be US-ASCII encoded. The signature separator "dash dash space" plus LF line break is automatically prepended if not already present in this file.

~/.$NAME/configfile
    Configuration and user interface state of last session. The file format is forward and backward compatible between all versions with same major number.

    See CONFIGURATION section below for details.

~/.$NAME/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 configfile. 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 obvious for which server they can be used.

    It is allowed to share the groupfile between multiple instances of $NAME that run simultaneously. The file will contain the state of the instance that is terminated last.

~/.$NAME/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 RFC3977, this database is not used.

~/.$NAME/logfile
    Protocol dump of server communication from current/last session. To view this data while the program is running, select 'Tools->Protocol console' in the user interface. This file is overwritten for every new connection.

~/.$NAME/scorefile
    Scoring rules. The file format is forward and backward compatible between all versions with same major number.

    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 terminated 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 $VERSION but can't be configured from the GUI. Some have no GUI editor by intent. If you don't know what you are doing, consider to not modify them.

•   cancelkey (String) Local secret for the Cancel-Lock mechanism

    $NAME must be compiled with support for ssl(3) to make this work because the cryptographic functions are shared. If both, this entry and the domain entry are set, $NAME creates 'Cancel-Lock' (always) and 'Cancel-Key' header fields when canceling or superseding articles. For the 'SHA1' scheme this key should be at least 20 bytes in length. There is no upper limit, using a much longer key is recommended.

    Attention: Everybody who get his hands on this secret can cancel articles that were locked using this key in the past!

•   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.

•   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).

•   crl_upd_ts (String) TLS certificate CRL update timestamp

    This entry contains a timestamp in ISO8601 format for the last successful CRL update.

•   domain (String) Optional domain under control of the user or his organization

    This entry is used to generate Message-IDs. They are only worldwide unique for all time if $NAME runs on a machine with a hostname that is unique inside this domain. In addition the clock of the machine must be synchronized to at least some seconds precision.

    If a domain is configured, the header fields "Message-ID" and "Injection-Date" are created by $NAME for all outgoing articles. Note that RFC5537 specify some nasty details for the "Injection-Date" header field (they are the reason to handle it internally in this case).

•   editor (String) Optional external editor for article composition

    The pathname of a file containing the data is passed as parameter. The editor must be able to process Unicode data in UTF-8 format. The specified editor must terminate with exit status zero on success.

    A temporary file is used. Consider to set the TMPDIR environment variable.

•   immedauth (Integer) Immediate authentication option

    The value one represents the default behaviour to authenticate immediately after a connection was established.

    The value zero switch the behaviour so that authentication against the article source is only executed after a request to do so (480 response when using NNTP protocol).

•   intro (String) Introduction line format

    The name of the cited author can be inserted with "%s". The last character should be a colon.

•   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.

•   organization (String) Optional name of the users organization

    The string is inserted as 'Organization' header field in outgoing articles.

•   post_proc (String) Pathname of an optional article postprocessor

    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 normalization, 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 RFC2047 format. If the postprocessor modifies an existing header field, this format must be preserved. If a new header field is added, the postprocessor is responsible for creating valid RFC2047 encoding and Unicode normalization to NFC.

•   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.

•   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 individual 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).

•   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 $VERSION of $NAME currently only supports US-ASCII keywords. Do not use spaces around commas.

•   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 scenarios 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 available if the overview is used.

•   dist_suggestions (Integer) Use distribution suggestions

    Setting this to a nonzero value automatically initialize the distribution 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.

SCORING
This section describes the format of the scorefile.

This file must be a POSIX textfile, this means every line must be terminated 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 3 colon-separated fields:

•   Type The header field to which the rule is associated. This field is case sensitive.

    The following types (in alphabetical order) are recognized by version $VERSION.

    Type "from": The string from the third field must match literally against the "From" header field.

    Type "from_ere": The string from the third field is interpreted as a POSIX.2 extended regular expression and must match against the "From" header field.

    Type "group": The string from the third field must match literally against a group element in the "Newsgroups" header field.

    Type "msgid_ere": The string from the third 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 third field must match literally against the "Subject" header field.

    Type "subject_ere": The string from the third field is interpreted as a POSIX.2 extended regular expression and must match against the "Subject" header field.

    Type "extended": All rules with this type use a new, different syntax with 5 fields. This type is used for compatibility reasons (older parsers will ignore "extended" rules). The second field of this type is a newsgroup wildmat that allows to limit the scope of the rule. The wildmat syntax is as defined in RFC3977 with the exceptions that colon is not allowed (because it is used as field separator) and SP is not allowed between tokens (e.g. around comma or exclamation mark). The last 3 fields are the same as with the original syntax.

    Note that rules using wildmats and/or regular expressions are ignored if $NAME is compiled without support for regular expressions.

•   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 $NAME, 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.

•   String The rules content string.

    This must always be an Unicode string (in UTF-8 format with NFC normalization).

    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
$NAME is based in part on the work of the following projects:

•   FLTK project (http://www.fltk.org/)

•   Unicode standard (http://www.unicode.org/)

    Unicode is a registered trademark of Unicode, Inc. in the United States and other countries.

•   OpenSSL project (http://www.openssl.org/)

    If compiled with support for TLS.

•   zlib compression library (http://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
$NAME tries to comply with the following standards:

ANSI X3.4, ISO2022, ISO8601, ISO8859, ISO10646, RFC822, RFC850, RFC977, RFC1468, RFC1738, RFC2045, RFC2046, RFC2047, RFC2049, RFC2104, RFC2152, RFC2231, RFC2246, RFC2368, RFC2585, RFC2606, RFC2646, RFC2980, RFC3174, RFC3629, RFC3676, RFC3977, RFC3986, RFC4346, RFC4642, RFC4643, RFC5198, RFC5246, RFC5280, RFC5322, RFC5536, RFC5537, RFC5538, RFC6048, RFC6176, RFC6048, RFC6657, RFC7230,RFC7231, RFC7234, RFC7568, POSIX.1-1996, Unicode 9.0.0

SEE ALSO
fltk(3), leafnode(8), locale(7), localtime(3), nls(7), ssl(3), zlib(3), X(7)
http://en.wikipedia.org/wiki/Usenet
http://www.gnksa.org