SM(8)
π SM(8) β like, the storage manager but make it a group chat
okay so first things first, this is sm(8) from the InterNetNews docs, and it's genuinely the CLI front door to the INN storage manager. buckle up bestie π
β¨ NAME β¨
sm β your command-line interface to the INN storage manager. that's it, that's the whole vibe.
πΈ SYNOPSIS πΈ
sm [-cdHiqRrSs] [token ...]
π¦ DESCRIPTION π¦
So the INN storage manager is the whole subsystem that keeps track of all the articles and, like, which storage backend each one is chilling in. Every stored article gets a storage API token, no cap. And sm is the command-line interface to that manager β mainly it's for pulling articles back out by their tokens, but it also does other operations on the storage subsystem. multi-talented, honestly. β¨
token is the token of an article β literally the same thing grephistory hands you, or what's sitting in the history file. it looks something like:
@0502000005A4000000010000000000000000@
You can pass any number of tokens on the command-line for any function other than -s. If you don't pass any, sm normally reads tokens from standard input, one per line. the default operation is to retrieve the corresponding article for each token and write it to standard output.
If -s is given, sm flips the script: it instead stores the article given on standard input (in native format, unless -R is given, in which case it expects wire format) using the standard rules of the storage subsystem. If the article stores successfully, the token of the article gets printed to standard output. π
β οΈ please note: this does not make any attempt to write a history entry or any overview data. so it's only useful under very specific circumstances. like, extremely specific. iykyk.
π OPTIONS π
-cβ show a clear, decoded form of the storage API token. every part of the token gets explained in a human-readable string. amongst other elements, this command gives you the path to where the corresponding article is supposed to be stored. it's giving "explain it to me like i'm five" and honestly slay.-d,-rβ rather than retrieving the specified article, remove the article. this deletes it out of the news spool and it will not subsequently be retrievable by any part of INN. it's equivalent toctlinnd cancelexcept it takes a storage API token instead of a message-ID.
When the expiretombstone setting in inn.conf is true, sm -r also appends the cancelled token to cancels.tombstone in pathdb so that a later expire run can drop the corresponding history entry without a per-article storage check. Append failures are logged but do not affect the cancellation itself. see inn.conf(5) under expiretombstone for the full mechanism. π
-Hβ retrieve only the headers of the article rather than the entire article. this option cannot be used with-d,-r,-i, or-S. heads only, no body, very demure.-iβ show the newsgroup name and article number associated with the token rather than the article itself. note that for crossposted articles, only the first newsgroup and article number to which the article is associated will be returned. just the first one. don't come for the rest. π-qβ suppress all error messages except usage errors. shhh. quiet hours. π€«-Rβ display the raw article. this means line endings won't be converted to native line endings and will be left as CRLF sequences; leading periods will still be escaped for sending over NNTP, and the article will end in aCRLF.CRLFsequence.
When used with -s, read articles in wire format. raw is raw, bestie, no edits.
-Sβ write the article to standard output in the format used byrnewsspool files. multiple articles can be written in this format, and the resulting output can be fed tornews(on another system, for example) to inject those articles into INN. this option cannot be used with-d,-r,-H,-i, or-R. it's giving β¨portableβ¨-sβ store the article given on standard input using the normal storage rules for articles as configured instorage.conf(5). prints the new token for the message to standard output if it's stored successfully. If this option is given, no other options except-Rand possibly-qshould be given. When-Ris given, any number of articles in wire format are read on standard input and stored. the main character option, honestly. π
π₯ EXIT STATUS π₯
If all operations were successful, sm exits with status 0. If an operation on any of the provided tokens fails, sm will exit with status 1 β even if the operations on other tokens were successful. like, it doesn't matter that most of it went fine, it's gonna be dramatic about the one that didn't. π
In other words: if twenty tokens are fed to sm -r on stdin, 19 articles were successfully removed, but the sixth article couldn't be found, sm will still exit with status 1.
π‘ this means that if you need to be sure whether a particular operation succeeded, you should run sm on one token at a time. one at a time. slow and steady. self-care.
π§ HISTORY π§
Written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews.
Rewritten in POD by Russ Allbery <eagle@eyrie.org>. absolute icons, both of them. π«Ά
π SEE ALSO π
ctlinnd(8), grephistory(1), history(5), rnews(1), storage.conf(5). go read them, they're literally right there and they're all useful.
and that's the whole page bestie! this one's shipped as part of INN 2.7.4, dated 2026-06-12. luv u, go store some articles responsibly ππ¦β¨
π¦ where this page comes from
- arch rolling: inn 2.7.4-4 Β· ISC
- epel 10: inn 2.7.4-5.el10_3 Β· ISC AND BSD-3-Clause AND BSD-4-Clause AND FSFAP AND (GPL-1.0-or-later OR Artistic-1.0-Perl) AND GPL-3.0-or-later WITH Bison-exception-2.2 AND LicenseRef-Fedora-Public-Domain AND MIT AND NTP
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms