.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SEND-IHAVE 8" .TH SEND-IHAVE 8 "2022-07-10" "INN 2.7.1" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" send\-ihave \- Send ihave control messages to remote sites .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBsend-ihave\fR [\fB\-d\fR] \fIsitename\fR[\fB:\fR\fIhostname\fR] [\fIsitename\fR[\fB:\fR\fIhostname\fR] ...] .SH "DESCRIPTION" .IX Header "DESCRIPTION" Using \fBsend-ihave\fR is discouraged; the ihave and sendme control messages implement a predecessor of the \s-1NNTP\s0 protocol, and are now largely obsolete on the Internet but still see use in conjunction with some transport protocols such as \s-1UUCP.\s0 .PP In case you really need using ihave and sendme control messages, and follow these instructions to set them up, please inform the \s-1INN\s0 maintainers of any documentation improvements that would have made the installation easier, notably missing or unclear steps. .PP The basic idea behind the ihave and sendme control messages is that you tell your \s-1UUCP\s0 peers what articles you have available via ihave control messages, and you respond with a sendme control message for the articles that you want. .PP \&\fBsend-ihave\fR processes the batch files written by \fBinnd\fR to send ihave control messages to remote \s-1NNTP\s0 sites. The sites to be fed are specified by giving \f(CW\*(C`sitename:hostname\*(C'\fR pairs on the command line. The \fIsitename\fR is the label the site has in the \fInewsfeeds\fR file, without its \f(CW\*(C`.ihave\*(C'\fR suffix. The \fIhostname\fR is the real hostname of the remote site, a \s-1FQDN\s0 (Fully Qualified Domain Name). Normally, the \fIsitename\fR and the \fIhostname\fR are the same, and as such don't have to be specified as \f(CW\*(C`sitename:hostname\*(C'\fR pairs but just as \f(CW\*(C`sitename\*(C'\fR. .PP \&\fBsend-ihave\fR encapsulates Message-IDs in an ihave control message and uses \&\fBinews\fR to send the control message to a \f(CW\*(C`to.hostname\*(C'\fR pseudo-newsgroup. .PP The batch file generated by \fBsend-ihave\fR for a given site is named \&\fIsitename.ihave\fR in the \fIpathoutgoing\fR directory. To prevent batch file corruption, \fBshlock\fR\|(1) is used ensure these files are not processed by two running instances in parallel. .PP For instance, to generate ihave control messages for \fInews.server.com\fR when receiving articles in the comp.* hierarchy, just add the following line in your \fInewsfeeds\fR file (and reload it): .PP .Vb 1 \& news.server.com.ihave:comp.*:Tf,Wm: .Ve .PP (Note that if you send \f(CW\*(C`*\*(C'\fR to \f(CW\*(C`news.server.com\*(C'\fR, you should add \f(CW\*(C`@to,@to.*\*(C'\fR to the end of the newsgroup pattern so that the ihave control message generated by \fBsend-ihave\fR isn't, itself, included in the list of articles in an ihave control message. You may also want to add that pattern to the end of any entry processing control articles, like \fBcontrolchan\fR, or being fed a \f(CW\*(C`*\*(C'\fR pattern.) .PP Then, periodically run out of \fBcron\fR\|(8) the following command: .PP .Vb 1 \& send\-ihave news.server.com .Ve .PP \&\fBsend-ihave\fR will then post to the \f(CW\*(C`to.news.server.com\*(C'\fR pseudo-newsgroup an ihave control article containing a list of Message-IDs. Several control articles may be posted, each one containing up to 1000 Message-IDs. .PP Make sure the \f(CW\*(C`to.news.server.com\*(C'\fR pseudo-newsgroup exists on your server (or the \f(CW\*(C`to\*(C'\fR pseudo-newsgroup if \fImergetogroups\fR is set to true in \fIinn.conf\fR), and that ihave control articles are not filtered (the default Cleanfeed configuration rejects them). These control articles will be filed in the \&\f(CW\*(C`control\*(C'\fR pseudo-newsgroup (or \f(CW\*(C`control.ihave\*(C'\fR if it exists), or \f(CW\*(C`to\*(C'\fR if \fImergetogroups\fR is set to true. .PP You now have to propagate them with any method you want to the remote server. You probably already had one set up, in which case you only have to add the \f(CW\*(C`to.news.server.com\*(C'\fR newsgroup in the list of groups to feed it. (See how \fBsend\-uucp\fR\|(8) works to set up a \s-1UUCP\s0 feed.) .PP Besides sending ihave control messages, your news server needs processing the sendme control messages it receives from remote peers. You have to add a \&\f(CW\*(C`sendme\*(C'\fR entry in \fIcontrol.ctl.local\fR with a \fBdoit\fR action to allow the processing of these messages matching a given From address. \fBcontrolchan\fR will then generate a batch file named \fIpathname.work\fR in \fIpathoutgoing\fR, containing a list of storage tokens (\fIpathname\fR is taken from the Path header field body or the \s-1IP\s0 address of the remote peer, depending on the value of \fIlogipaddr\fR in \fIinn.conf\fR). Finally, you'll have to set up \fBbatcher\fR\|(8) or \fBsend\-uucp\fR\|(8) to send the news batches to your remote peers. .PP Similarly, your news server needs processing the ihave control messages it receives from remote peers. This step is the easiest to do. Just add an \&\f(CW\*(C`ihave\*(C'\fR entry in \fIcontrol.ctl.local\fR like the one you added for \f(CW\*(C`sendme\*(C'\fR. \&\fBcontrolchan\fR will process these ihave control messages, and generate a sendme control article for each article present in the ihave control message but not in your local news server. These sendme control articles are posted to the \f(CW\*(C`to.pathname\*(C'\fR pseudo-newsgroup, and will be propagated as described before. (Note that there may be two different \f(CW\*(C`to\*(C'\fR groups to create because the \fIsitename\fR used in \fInewsfeeds\fR may not be the same as \fIpathname\fR.) .PP Beware that the ihave and sendme control messages are not signed. You should enforce restrictions on who can send articles to \f(CW\*(C`to.*\*(C'\fR groups, either via \fIreaders.conf\fR or special rules in filter hooks, and on the \f(CW\*(C`ihave\*(C'\fR and \f(CW\*(C`sendme\*(C'\fR lines in \fIcontrol.ctl.local\fR. .SH "OPTIONS" .IX Header "OPTIONS" .IP "\fB\-d\fR" 4 .IX Item "-d" The \fB\-d\fR flag causes \fBsend-ihave\fR to send output to stdout rather than the \fIsend\-ihave.log\fR log file in \fIpathlog\fR. .SH "HISTORY" .IX Header "HISTORY" Rewritten into \s-1POD\s0 by Julien Elie. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBbatcher\fR\|(8), \fBcontrolchan\fR\|(8), \fBcontrol.ctl\fR\|(5), \fBinews\fR\|(1), \fBnewsfeeds\fR\|(5), \&\fBsend\-uucp\fR\|(8).