CONTROLCHAN(8)

πŸ’… CONTROLCHAN(8) β€” the control message handler that eats, and it's channel-fed, bestie

okay so real talk: this one lives in section 8 of the InterNetNews docs, and honestly? it's lowkey the main character of control message handling. let's get into it 🫢


✨ NAME ✨

controlchan β€” a channel-fed control message handler. that's it, that's the vibe. πŸ‘‘


🌸 SYNOPSIS 🌸

controlchan [-ch]

πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the tea: controlchan takes the whole job of handling control messages away from innd β€” like, it removes that responsibility entirely β€” and instead it processes them from a channel or a file feed. the one exception? cancels. those it does not deal with. periodt.

πŸ’€ heads up: the two Perl modules Encode and MIME::Parser are required by controlchan. no cap, you need both.

to reduce load (we love an efficient queen), controlchan keeps a copy of control.ctl and control.ctl.local in memory and checks permissions β€” including any required PGP headers, yes ma'am β€” before any scripts get called. and the way that it just… automatically reloads those two configuration files when it notices they've been modified? iconic. ✨

also! the default case of an unrecognized control article gets handled internally, and the "drop" case is handled with far less fuss. we simply don't stress about it. πŸ™ˆ

normally, controlchan is invoked by innd as configured in newsfeeds. here's an example entry, bestie β€” copy it exactly:

controlchan!\
    :!*,control,control.*,!control.cancel\
    :AC,Tc,Wnsm\
    :<pathbin in inn.conf>/controlchan

make sure the newsgroup "control.cancel" exists, okay? that way controlchan doesn't have to scan through cancels, which β€” plot twist β€” it wouldn't be processing anyway. πŸ’…

you can also manually invoke controlchan with just a path to a file (one that contains a complete control article, headers and body included), or with a token on its standard input:

echo '/path/to/a/control/article' | controlchan
echo '@0303465234000000000000235AE000000002@' | controlchan
🌈 now listen, this next bit is in the (very, very unlikely) event that you need to process ihave/sendme control messages: be sure that logipaddr is set to false in inn.conf, because in this case controlchan needs a site name, not an IP address. fr fr, don't skip this one.

and finally: controlchan tries to report all log messages through syslog(3) β€” unless it's connected to an interactive terminal, in which case it does its own thing. πŸŽ€


πŸ’– OPTIONS πŸ’–

  • -c β€” by default, controlchan does not process articles whose Date or Injection-Date header fields are too far in the past (more than artcutoff days, as set in inn.conf) or one day in the future. this is all about preventing a malicious replay of old control articles, and honestly? protective queen behavior. πŸ›‘οΈ using the -c flag disables this check on the cutoff date.
  • -h β€” gives usage information. short, sweet, helpful. 🌸

🧚 HISTORY 🧚

written by Katsuhiro Kondou <kondou@nec.co.jp> for InterNetNews. converted to POD by Julien Elie. legends only. πŸ‘‘


⭐ SEE ALSO ⭐


and that's the whole page, bestie πŸ’œ this lil gem is from INN 2.7.4, dated 2025-03-29 β€” so go forth, handle those control messages, and slay πŸ’…βœ¨

πŸ“¦ 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