GENCANCEL(1) | InterNetNews Documentation | GENCANCEL(1) |
gencancel - Generate cancel control messages
gencancel [-adkLm] [-b body] [-c charset] [-f from] [-n newsgroups] [-s subject] message-id
gencancel provides the news administrator with a helpful tool to generate cancel control messages, writing them to standard output. The generated cancel article can then be injected by inews (see examples below).
gencancel expects the Message-ID of the article to cancel; this message-id argument should properly be quoted for the shell and surrounded by angle brackets. gencancel will then try to read the original article in the news spool to determine the original newsgroups it was posted to, and re-use that information for the cancel control message. If you want to modify that, or if the information was not found, you'll have to set it with the -n flag.
If INN was built with Cancel-Lock support, gencancel will generate the right admin Cancel-Key header field to use in order to authenticate cancels. If, for whatever reason, you need cancelling an article posted from your news server with a Cancel-Lock header field, the corresponding admin Cancel-Key hashes are needed to authenticate the withdrawal request. That information is computed with the canlockadmin parameter set in inn-secrets.conf.
In case you only need the admin Cancel-Key hashes, you can use the -k flag. Only the body of the Cancel-Key header field will then be written to standard output. You can then re-use it for instance in a supersede request or from another script.
This header field is useful for cancelling articles originally posted to moderated newsgroups. If a cancel control article lists a moderated newsgroup in its Newsgroups header field, and no Approved header field is present, the cancel will be sent to the moderator first for approval. Cancel control messages are not required to contain an Approved header field outside of moderated newsgroups, but can, so you shouldn't generally use -a unless you really want your cancels to be approved by a moderator, or are sure the Newsgroups header field does not list any moderated newsgroups.
This flag is only available if INN was built with Cancel-Lock support.
This flag is only available if INN was built with Cancel-Lock support.
In case your news server does not (or no longer) locally carry the original article, you will have to give an explicit newsgroup or list of comma-separated newsgroups with this flag, that will be used as the Newsgroups header field of the cancel.
To only retrieve the admin Cancel-Key hashes associated to the given Message-ID:
gencancel -k '<mid@news>'
If you're using non-ASCII characters in headers, make sure you properly MIME-encode them. For instance, use the "Encode" Perl module:
FROM=$(perl -e 'use Encode; print encode("MIME-Q", decode("UTF-8", "Julien ÉLIE"));') gencancel -f "$FROM <admin@news.server.com>" '<mid@news>'
You'll then see in the output a properly MIME-encoded header field:
From: =?UTF-8?Q?Julien_=C3=89LIE?= <admin@news.server.com>
An example of call with a custom multi-line body:
gencancel -b "$(echo -e "Multi\nLine\nBody.")" '<mid@news>'
(Use -c to change the default Content-Type charset for the body.)
You can then pipe the result into "inews -h -P -D" (meaning inews expects an article with headers, does not add a Sender header field, and writes the result to standard output instead of actually injecting it):
gencancel '<mid@news>' | inews -h -P -D
If it all looks good, then inject it into the news system (without giving "-D" to inews):
gencancel '<mid@news>' | inews -h -P
Note that inews sends the message to the server specified in the server parameter in inn.conf.
Written by Julien Élie for InterNetNews.
inews(1), inn-secrets.conf(5).
2024-03-31 | INN 2.7.2 |