tinews.pl(1)
β¨ tinews.pl(1) β¨ β post & sign an article via NNTP π
okay so bestie, imagine posting to Usenet but make it signed and secure and honestly a little bit iconic. that's this. it's tinews.pl(1) and she's the whole moment. π«Ά
πΈ NAME πΈ
tinews.pl β post and sign an article via NNTP
π SYNOPSIS π
tinews.pl [OPTIONS] < input
π DESCRIPTION π
tinews.pl reads an article on STDIN, signs it via pgp(1) or gpg(1) and posts it to a news server. that's the whole vibe. read, sign, yeet. π
the article shall not contain any raw 8-bit data, or it needs to already have the relevant MIME-headers β because tinews.pl will not add any MIME-headers nor encode its input. she is not doing that for you, bestie, no cap. π
if the article contains To:, Cc: or Bcc: headers and mail-actions are configured, it will automatically add a Posted-And-Mailed: yes header to the article and send out the mail-copies. considerate queen behavior tbh. π
if a Cancel-Lock secret file is defined it will automatically add a Cancel-Lock: (and Cancel-Key: if required) header. slay. π₯
the input should have unix line endings (<LF>, '\n'). use --transform to convert from <CR><LF> to just <LF>. do it. i'm begging. π
π OPTIONS π
-4|--ipv4β force connecting via IPv4 to the remote NNTP server.-a"Approved" |--approved"Approved" β set the article header fieldApproved:to the given value.-c"Control" |--control"Control" β set the article header fieldControl:to the given value.-d"Distribution" |--distribution"Distribution" β set the article header fieldDistribution:to the given value.-e"Expires" |--expires"Expires" β set the article header fieldExpires:to the given value.-f"From" |--from"From" β set the article header fieldFrom:to the given value.-iheader |--ignore-headersheader β comma separated list of headers that will be ignored during signing. usually the following headers will be signed if present:
From, Newsgroups, Subject, Control, Supersedes, Followup-To, Date, Injection-Date, Sender, Approved, Message-ID, Reply-To, Cancel-Key, Also-Control and Distribution.
some of them may be altered on the Server (i.e. Cancel-Key) which would invalid the signature, this option can be used to exclude such headers if required. protect the vibes. π‘οΈ
-m"Message-ID" |--message-id"Message-ID" β set the article header fieldMessage-ID:to the given value.-n"Newsgroups" |--newsgroups"Newsgroups" β set the article header fieldNewsgroups:to the given value.-o"Organization" |--organization"Organization" β set the article header fieldOrganization:to the given value.-p"port" |--port"port" β use "port" as NNTP-port-r"Reply-To" |--reply-to"Reply-To" β set the article header fieldReply-To:to the given value.-sdirectory |--savedirdirectory β save signed article to directory directory instead of posting.-t"Subject" |--subject"Subject" β set the article header fieldSubject:to the given value.-v|--verboseβ warn about disabled options due to lacking perl-modules or executables and unreadable files and enable warnings about raw 8-bit data. she's chatty and we love her for it.-w"Followup-To" |--followup-to"Followup-To" β set the article header fieldFollowup-To:to the given value.-x"Path" |--path"Path" β prepend the article header fieldPath:with the given value.-D|-N|--debugβ setNet::NNTP(3pm)to debug mode, enable warnings about raw 8-bit data, warn about disabled options due to lacking perl-modules or executables and unreadable files.-E|--discard-emptyβ silently discard an empty article. not today, nothing-burger. π-F|--referencesβ set the article header fieldReferences:to the given value.-H|--helpβ show help-page.-I|--no-injection-dateβ do not addInjection-Date:header.-L|--no-canlockβ do not addCancel-Lock:/Cancel-Key:headers.-O|--no-organizationβ do not addOrganization:header.-R|--no-controlβ restricted mode, disallow control-messages.-S|--no-signatureβ do not append$HOME/.signature.-T"seconds" |--timeout"seconds" β override the connection timeout setting. default is 120 seconds.-X|--no-signβ do not sign the article.-Y|--force-authβ force authentication on connect even if not required by the server.--canlock-algorithm"Algorithm" β digest algorithm used forCancel-Lock:/Cancel-Key:headers. supported algorithms aresha1,sha256andsha512. default issha1.--ssl|--nntpsβ use NNTPS (via port 563) if available. this requires a recent version ofNet::NNTP(3pm)andIO::Socket::SSL(3pm). be aware that no SSL verification will be done. π¨--transformβ convert network line endings (<CR><LF>) to unix line endings (<LF>).--versionβ show version.-A-V-Wβ these options are accepted for compatibility reasons but ignored. ghosts of manpages past, fr fr. π»-h|--headersβ these options are accepted for compatibility reasons but ignored.
π¦ EXIT STATUS π¦
the following exit values are returned:
0β successful completion. ate. β¨!=0β an error occurred. π
π ENVIRONMENT π
$NEWSHOSTβ set to override the NNTP server configured in the source or config-file. it has lower priority than$NNTPSERVERand should be avoided.$NNTPSERVERβ set to override the NNTP server configured in the source or config-file. this has higher priority than$NEWSHOST.$NNTPPORTβ the NNTP TCP-port to post news to. this variable only needs to be set if the TCP-port is not 119 (the default). the'-p'command-line option overrides$NNTPPORT.$PGPPASSβ set to override the passphrase configured in the source (used forpgp(1)-2.6.3).$PGPPASSFILEβ passphrase file used forpgp(1)orgpg(1).$SIGNERβ set to override the user-id for signing configured in the source. if you neither set$SIGNERnor configure it in the source the contents of theFrom:-field will be used.$REPLYTOβ set the article header fieldReply-To:to the return address specified by the variable if there isn't already aReply-To:header in the article. the'-r'command-line option overrides$REPLYTO.$ORGANIZATIONβ set the article header fieldOrganization:to the contents of the variable if there isn't already anOrganization:header in the article. the'-o'command-line option overrides$ORGANIZATION, the'-O'command-line option disables it.$DISTRIBUTIONβ set the article header fieldDistribution:to the contents of the variable if there isn't already aDistribution:header in the article. the'-d'command-line option overrides$DISTRIBUTION.
π FILES π
pgptmp.txtβ temporary file used to store the reformatted article.pgptmp.txt.ascβ temporary file used to store the reformatted and signed article.$PGPPASSFILEβ the passphrase file to be used forpgp(1)orgpg(1).$HOME/.signatureβ signature file which will be automatically included.$HOME/.cancelsecretβ the passphrase file to be used for Cancel-Locks. this feature is turned off by default.$HOME/.newsauthβ"nntpserver password [user]"pairs or triples for NNTP servers that require authorization. first match counts. any line that starts with"#"is a comment. blank lines are ignored. this file should be readable only for the user as it contains the user's unencrypted password for reading news. if no matching entry is found$HOME/.nntpauthis checked.$HOME/.nntpauthβ"nntpserver user password"triples for NNTP servers that require authorization. first match counts. lines starting with"#"are skipped and blank lines are ignored. this file should be readable only for the user as it contains the user's unencrypted password for reading news.$HOME/.newsauthis checked first.$XDG_CONFIG_HOME/tinewsrc $HOME/.config/tinewsrc $HOME/.tinewsrcβ"option=value"configuration pairs, last match counts and only"value"is case sensitive. lines that start with"#"are ignored. if the file contains unencrypted passwords (e.g.nntp-passorpgp-pass), it should be readable for the user only. use-vHto get a full list of all available configuration options.
π SECURITY π
if you've configured or entered a password, even if the variable that contained that password has been erased, it may be possible for someone to find that password, in plaintext, in a core dump. in short, if serious security is an issue, don't use this script. π that's the tea, bestie, and it's not the fun kind.
be aware that even if NNTPS is used still no SSL verification will be done. π©
π NOTES π
tinews.pl is designed to be used with pgp(1)-2.6.3, pgp(1)-5, pgp(1)-6, gpg(1) and gpg2(1). the whole roster, honestly. π
tinews.pl requires the following standard modules to be installed: Getopt::Long(3pm), Net::NNTP(3pm), Time::Local(3pm) and Term::Readline(3pm). no modules no service, that's the rule. π
NNTPS (NNTP with implicit TLS; RFC 4642 and RFC 8143) may be unavailable if Net::NNTP(3pm) is too old or IO::Socket::SSL(3pm) is missing on the system. tinews.pl will fallback to unencrypted NNTP in that case.
if the Cancel-Lock feature (RFC 8315) is enabled the following additional modules must be installed: MIME::Base64(3pm), Digest::SHA(3pm) or Digest::SHA1(3pm) and Digest::HMAC_SHA1(3pm). sha256 and sha512 as algorithms for canlock-algorithm are only available with Digest::SHA(3pm).
gpg2(1) users may need to set $GPG_TTY, i.e.
GPG_TTY=$(tty)
export GPG_TTY
before using tinews.pl. see <https://www.gnupg.org/> for details. do not skip this step, i will find out. π
tinews.pl does not do any MIME encoding, its input should be already properly encoded and have all relevant headers set. she said bring your own encoding. π
π AUTHOR π
Urs Janssen <urs@tin.org>, Marc Brockschmidt <marc@marcbrockschmidt.de>
π SEE ALSO π
pgp(1), gpg(1), gpg2(1), pgps(1), Digest::HMAC_SHA1(3pm), Digest::SHA(3pm), Digest::SHA1(3pm), Getopt::Long(3pm), IO::Socket::SSL(3pm), MIME::Base64(3pm), Net::NNTP(3pm), Time::Local(3pm), Term::Readline(3pm)
and that's the page, bestie π this one is version 1.1.70, dated October 16th, 2024 β she's giving vintage but still serving π go sign something pretty. β¨π¦
π¦ where this page comes from
- alpine 3.24: tin-doc 2.6.5-r2 Β· BSD-3-Clause
- epel 10: tin 2.6.6-1.el10_3 Β· BSD-3-Clause AND LicenseRef-Fedora-Public-Domain
- fedora 43: tin 2.6.5-1.fc43 Β· BSD-3-Clause AND LicenseRef-Fedora-Public-Domain
- fedora 44: tin 2.6.5-3.fc44 Β· BSD-3-Clause AND LicenseRef-Fedora-Public-Domain
- fedora 44: tin 2.6.6-1.fc44 Β· BSD-3-Clause AND LicenseRef-Fedora-Public-Domain
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms