.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" 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 "INN.CONF 5" .TH INN.CONF 5 "2024-05-19" "INN 2.7.2" "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" inn.conf \- Configuration data for InterNetNews programs .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fIinn.conf\fR in \fIpathetc\fR is the primary general configuration file for all InterNetNews programs. Settings which control the general operation of various programs, as well as the paths to all portions of the news installation, are found here. The \s-1INNCONF\s0 environment variable, if set, specifies an alternate path to \fIinn.conf\fR. .PP This file is intended to be fairly static. Any changes made to it will generally not affect any running programs until they restart. Unlike nearly every other configuration file, \fIinn.conf\fR cannot be reloaded dynamically using \fBctlinnd\fR\|(8); \fBinnd\fR\|(8) must be stopped and restarted for relevant changes to \fIinn.conf\fR to take effect (\f(CW\*(C`ctlinnd xexec innd\*(C'\fR is the fastest way to do this.) .PP Blank lines and lines starting with a number sign (\f(CW\*(C`#\*(C'\fR) are ignored. All other lines specify parameters, and should be of the following form: .PP .Vb 1 \& : .Ve .PP (Any amount of whitespace can be put after the colon and is optional.) If the value contains embedded whitespace or any of the characters \f(CW\*(C`[]<>{}"\e:;\*(C'\fR, it must be enclosed in double quotes (""). A backslash (\f(CW\*(C`\e\*(C'\fR) can be used to escape quotes and backslashes inside double quotes. is case-sensitive; \f(CW\*(C`server\*(C'\fR is not the same as \f(CW\*(C`Server\*(C'\fR or \f(CW\*(C`SERVER\*(C'\fR. (\fIinn.conf\fR parameters are generally all in lowercase.) .PP If occurs more than once in the file, the first value is used. Some parameters specified in the file may be overridden by environment variables. Most parameters have default values if not specified in \&\fIinn.conf\fR; those defaults are noted in the description of each parameter. .PP Many parameters take a boolean value. For all such parameters, the value may be specified as \f(CW\*(C`true\*(C'\fR, \f(CW\*(C`yes\*(C'\fR, or \f(CW\*(C`on\*(C'\fR to turn it on and may be any of \f(CW\*(C`false\*(C'\fR, \f(CW\*(C`no\*(C'\fR, or \f(CW\*(C`off\*(C'\fR to turn it off. The case of these values is significant. .PP This documentation is extremely long and organized as a reference manual rather than as a tutorial. If this is your first exposure to \s-1INN\s0 and these parameters, it would be better to start by reading other man pages and referring to this one only when an \fIinn.conf\fR parameter is explicitly mentioned. Those parameters which need to be changed when setting up a new server are discussed in \fI\s-1INSTALL\s0\fR. .SH "PARAMETERS" .IX Header "PARAMETERS" .SS "General Settings" .IX Subsection "General Settings" These parameters are used by a wide variety of different components of \&\s-1INN.\s0 .IP "\fIdomain\fR" 4 .IX Item "domain" This should be the domain name of the local host. It should not have a leading period, and it should not be a full host address. It is used only if the \fBinn_getfqdn()\fR routine in \fBlibinn\fR\|(3) cannot get the fully qualified domain name by using either the \fBgethostname\fR\|(3) or \fBgetaddrinfo\fR\|(3) calls. The check is very simple; if either routine returns a name with a period in it, then it is assumed to have the full domain name. The default value is unset. .Sp This parameter is not meant to be used to affect the right-hand side of autogenerated Message-IDs; you have to directly use \fIdomain\fR in \&\fBreaders.conf\fR\|(5) instead, for backwards-compatible reasons. (The name of this parameter in \fIreaders.conf\fR will likely be changed in a future major release to disambiguate its use.) .IP "\fIinnflags\fR" 4 .IX Item "innflags" The flags to pass to \fBinnd\fR on startup. See \fBinnd\fR\|(8) for details on the possible flags. The default value is unset. .Sp Note that these flags are only used when \fBinnd\fR is started from \fBrc.news\fR or \fBnntpsend\fR. .IP "\fImailcmd\fR" 4 .IX Item "mailcmd" The path to the program to be used for mailing reports and errors to the news administrator. The default is \fIpathbin\fR/innmail. This should not normally need to be changed. .IP "\fImta\fR" 4 .IX Item "mta" The command to use when sending a mail (e.g. mailing postings to moderators, gatewaying news to mail, sending statistics to the \s-1TOP1000\s0 project, mailing errors and reports to the news administrator). Some programs use \fBinnmail\fR\|(1) which in turn runs the command in the \fImta\fR parameter. The message, with its headers, will be piped into this \fImta\fR program. Depending on the calling program, additional header fields may be added when appropriate, like To, Subject or Auto-Submitted header fields. .Sp The string \f(CW%s\fR, if present, will be replaced by the expected recipient(s) like the e\-mail address of the moderator or of a remote list. It's strongly recommended for this command to end with \f(CW%s\fR on the command line rather than, when not present, use the addresses in the To and Cc header fields of the message, since the latter approach allows the news server to be abused as a mechanism to send mail to arbitrary addresses and will result in unexpected behaviour. There is no default value for this parameter; it must be set in \&\fIinn.conf\fR or a fatal error message will be logged via syslog. .Sp For most systems, \f(CW\*(C`/usr/lib/sendmail \-oi \-oem %s\*(C'\fR (adjusted for the correct path to \fBsendmail\fR, and between double quotes) is a good choice. .Sp To improve deliverability of sent mails, especially moderated group submissions, you are encouraged to install a modern and full-featured \s-1MTA\s0 like Postfix instead of a frugal \s-1MTA\s0 like Nullmailer. You'll then be able to configure bounces and benefit from \s-1DSN\s0 (Delivery Status Notifications). Useful flags to add, if your \fImta\fR program supports them, are \f(CW\*(C`\-N failure\*(C'\fR (to only return a \s-1DSN\s0 on failure, not delay), \f(CW\*(C`\-F \*(AqNewsmaster\*(Aq\*(C'\fR (to set the full name of the notification), \f(CW\*(C`\-fnewsmaster@server.com\*(C'\fR (to set the envelope sender address), and \f(CW\*(C`\-opnobodyreturn\*(C'\fR (a privacy option to only return headers in the \s-1DSN\s0). Feel free to add any other options you think appropriate. .IP "\fIpathhost\fR" 4 .IX Item "pathhost" What to put into the Path header field to represent the local site. This path identity is added to the Path header field body of all articles that pass through the system, including locally posted articles, and is also used when processing some control messages and when naming the server in status reports. There is no default value; this parameter must be set in \fIinn.conf\fR or \s-1INN\s0 will not start. A good value to use is the fully qualified hostname of the system. .Sp The main purpose of the path identity is to avoid being proposed by your peers articles that already contain your path identity in their Path header fields. .Sp In case you are running several internal news servers, you may want to also set \fIpathcluster\fR so as to define the primary path identity to advertise to your peers for their use in correctly identifying your news servers and adding the right path diagnostic (see Section\ 3.2.1 of \s-1RFC\s0\ 5537 for more details about path diagnostics). .IP "\fIrunasgroup\fR" 4 .IX Item "runasgroup" The group under which the news server will run. The default is \f(CW\*(C`news\*(C'\fR (or the group specified at configure time) and should not normally need to be changed. .IP "\fIrunasuser\fR" 4 .IX Item "runasuser" The user under which the news server will run. The default is \f(CW\*(C`news\*(C'\fR (or the user specified at configure time) and should not normally need to be changed. .IP "\fIserver\fR" 4 .IX Item "server" The name of the default \s-1NNTP\s0 server. If \fInnrpdposthost\fR is not set and \&\s-1UNIX\s0 domain sockets are not supported, \fBnnrpd\fR tries to hand off locally-posted articles through an \s-1INET\s0 domain socket to this server. .Sp \&\fBactsync\fR, \fBgetlist\fR, \fBinews\fR, and \fBnntpget\fR also use this value as the default server to connect to. In the latter cases, the value of the \&\s-1NNTPSERVER\s0 environment variable, if it exists, overrides this. The default value is unset. You may want to set it to \f(CW\*(C`localhost\*(C'\fR or the fully qualified domain name of your local news server or of a remote news server. .Sp \&\fBrnews\fR uses this value as a fallback when \fInnrpdposthost\fR is not set, and there's no localhost server. .IP "\fIsyntaxchecks\fR" 4 .IX Item "syntaxchecks" A list of values controlling the level of checks performed by \fBinnd\fR and \fBnnrpd\fR. For instance: .Sp .Vb 1 \& syntaxchecks: [ no\-laxmid ] .Ve .Sp The last occurrence of a given value takes precedence, that is to say if \f(CW\*(C`no\-laxmid laxmid\*(C'\fR is listed, \fIlaxmid\fR takes precedence. .Sp Only one check can currently be enabled/disabled: .RS 4 .IP "\fIlaxmid\fR / \fIno-laxmid\fR" 4 .IX Item "laxmid / no-laxmid" When \fIlaxmid\fR is set, Message-IDs containing \f(CW\*(C`..\*(C'\fR in the left part are accepted, as well as Message-IDs with two \f(CW\*(C`@\*(C'\fR. Some non-compliant news posters generate such syntactically invalid Message-IDs, especially in binary newsgroups. The default is \fIno-laxmid\fR, that is to say \s-1INN\s0 strictly follows the standard regarding syntax checks (it will neither accept these articles nor propagate them to remote peers). .RE .RS 4 .RE .SS "Feed Configuration" .IX Subsection "Feed Configuration" These parameters govern incoming and outgoing feeds: what size of articles are accepted, what filtering and verification is performed on them, whether articles in groups not carried by the server are still stored and propagated, and other similar settings. .IP "\fIartcutoff\fR" 4 .IX Item "artcutoff" Articles older than this number of days are dropped. The default value is \f(CW10\fR, which means that an incoming article will be rejected if its posting date is farther in the past than ten days. .Sp In order to disable that check on date, you can set this parameter to \f(CW0\fR. .Sp The number on the \f(CW\*(C`/remember/\*(C'\fR line in \fIexpire.ctl\fR should probably be one more than that number in order to take into account articles whose posting date is one day into the future. .IP "\fIbindaddress\fR" 4 .IX Item "bindaddress" Which \s-1IP\s0 address \fBinnd\fR\|(8) should bind itself to. This must be in dotted-quad format (nnn.nnn.nnn.nnn). If set to \f(CW\*(C`all\*(C'\fR or not set, innd defaults to listening on all interfaces. The value of the \&\s-1INND_BIND_ADDRESS\s0 environment variable, if set, overrides this setting. The default value is unset. .Sp This parameter has no effect when systemd socket activation is used. .IP "\fIbindaddress6\fR" 4 .IX Item "bindaddress6" Like \fIbindaddress\fR but for IPv6 sockets. If only one of the \fIbindaddress\fR and \fIbindaddress6\fR parameters is used, then only the socket for the corresponding address family is created. If both parameters are used then two sockets are created. If neither of them is used, the list of sockets to listen on will be determined by the system library \&\fI\f(BIgetaddrinfo\fI\|(3)\fR function. The value of the \s-1INND_BIND_ADDRESS6,\s0 if set, overrides this setting. The default value is unset. .Sp Note that you will generally need to put double quotes ("") around this value if you set it, since IPv6 addresses contain colons. .Sp This parameter has no effect when systemd socket activation is used. .IP "\fIdocancels\fR" 4 .IX Item "docancels" This parameter is intended for sites concerned about abuse of cancels, or that wish to enforce a mechanism to authenticate cancels. This parameter does not change how NoCeM notices are processed by \fBperl\-nocem\fR\|(8), and only applies to cancel articles (with a Control header field) and supersede requests (with a Supersedes header field). .Sp Unless rejected by the use of a filter hook, \fBinnd\fR always accepts and propagates cancel articles and supersede requests. However, actually processing such articles on the local news server depends on this parameter which can take the following values: .RS 4 .ie n .IP """require\-auth""" 4 .el .IP "\f(CWrequire\-auth\fR" 4 .IX Item "require-auth" Only articles originally protected by the Cancel-Lock authentication mechanism can be withdrawn by a valid authenticated cancel article or a valid authenticated supersede request. Withdrawals of articles not originally protected by Cancel-Lock will not be executed. .Sp This is the default value if \fBinnd\fR knows how to authenticate cancels (that is to say if \s-1INN\s0 was built with Cancel-Lock support). Otherwise, the behaviour will be the same as \f(CW\*(C`none\*(C'\fR. .ie n .IP """auth""" 4 .el .IP "\f(CWauth\fR" 4 .IX Item "auth" Withdrawals of articles not originally protected by the Cancel-Lock authentication mechanism will always be executed. However, if the original article is protected, only a valid authenticated cancel article or a valid authenticated supersede request will permit withdrawing it. (If \s-1INN\s0 was not built with Cancel-Lock support, such protected articles won't be withdrawn.) .ie n .IP """none""" 4 .el .IP "\f(CWnone\fR" 4 .IX Item "none" Neither cancel articles nor supersede requests will be processed; no articles will be withdrawn. .Sp This is the default value if \fBinnd\fR does not know how to authenticate cancels (that is to say if \s-1INN\s0 was not built with Cancel-Lock support) as it has no means to ensure that these withdrawal requests are legitimate. .ie n .IP """all""" 4 .el .IP "\f(CWall\fR" 4 .IX Item "all" \&\fBinnd\fR will process all cancel articles and supersede requests, even if unauthenticated, forged or with bad authentication. You should be sure of what you are doing if you choose that value as any article can be withdrawn (even by someone who is not the author of the article). .RE .RS 4 .RE .IP "\fIdontrejectfiltered\fR" 4 .IX Item "dontrejectfiltered" Normally \fBinnd\fR\|(8) rejects incoming articles when directed to do so by any enabled article filters (Perl or Python). However, this parameter causes such articles \fInot\fR to be rejected; instead filtering can be applied on outbound articles. If this parameter is set, all articles will be accepted on the local machine, but articles rejected by the filter will \fInot\fR be fed to any peers specified in \fInewsfeeds\fR with the \f(CW\*(C`Af\*(C'\fR flag. The default value is false. .Sp If this parameter is set, you may also use the \fIfiltered\fR key of storage method entries in \fIstorage.conf\fR to store filtered articles in dedicated storage classes. .IP "\fIhiscachesize\fR" 4 .IX Item "hiscachesize" If set to a value other than \f(CW0\fR, a hash of recently received Message-IDs is kept in memory to speed history lookups. The value is the amount of memory to devote to the cache in kilobytes. The cache is only used for incoming feeds and a small cache can hold quite a few Message-IDs, so large values aren't necessarily useful unless you have incoming feeds that are badly delayed. \fBinnreport\fR can provide useful statistics regarding the use of the history cache, especially when it misses. A good value for a system with more than one incoming feed is \f(CW256\fR; systems with only one incoming feed should probably set this to \f(CW0\fR. The default value is \f(CW256\fR. .IP "\fIignorenewsgroups\fR" 4 .IX Item "ignorenewsgroups" Whether newsgroup creation control messages (newgroup and rmgroup) should be fed as if they were posted to the newsgroup they are creating or deleting rather than to the newsgroups listed in the Newsgroups header field. If this parameter is set, the newsgroup affected by the control message will be extracted from the Control header field and the article will be fed as if its Newsgroups header field contained solely that newsgroup. This is useful for routing control messages to peers when they are posted to irrelevant newsgroups that shouldn't be matched against the peer's desired newsgroups in \fInewsfeeds\fR. This is a boolean value and the default is false. .IP "\fIimmediatecancel\fR" 4 .IX Item "immediatecancel" When using the timecaf storage method, article cancels are normally just cached to be cancelled, not cancelled immediately. If this is set to true, they will instead by cancelled as soon as the cancel is processed. This is a boolean value and the default is false. .Sp This setting is ignored unless the timecaf storage method is used. .IP "\fIlinecountfuzz\fR" 4 .IX Item "linecountfuzz" If set to something other than \f(CW0\fR, the line count of the article is checked against the Lines header field body of the article (if present) and the article is rejected if the values differ by more than this amount. A reasonable setting is \f(CW5\fR, which is the standard maximum signature length plus one (some injection software calculates the Lines header field before adding the signature). The default value is \f(CW0\fR, which tells \s-1INN\s0 not to check the Lines header field of incoming articles. .IP "\fImaxartsize\fR" 4 .IX Item "maxartsize" The maximum size of article (headers and body) that will be accepted by the server, in bytes. A value of \f(CW0\fR allows any size of article, but note that \fBinnd\fR will crash if system memory is exceeded. The default value is \f(CW1000000\fR (approximately 1\ \s-1MB\s0). This is checked against the article in wire format (\s-1CRLF\s0 at the end of each line, leading periods protected, and with the trailing \*(L"\er\en.\er\en\*(R" at the end). See also \&\fIlocalmaxartsize\fR. .IP "\fImaxconnections\fR" 4 .IX Item "maxconnections" The maximum number of incoming \s-1NNTP\s0 connections \fBinnd\fR\|(8) will accept. The default value is \f(CW50\fR. .IP "\fIpathalias\fR" 4 .IX Item "pathalias" If set, this value is prepended as a path identity immediately to the right of \&\fIpathhost\fR in the Path header field body of accepted articles if it doesn't already appear in the Path header field. The default value is unset. .Sp The main purpose of this parameter is when there is some other path identity that you want to add to the Path header field of every article passing through your news server(s) for some reason, maybe because you used to have some other path identity and you have peers that are configured to not send you articles that have already passed through that entity, and you can't get them to update to your current path identity for some reason. .IP "\fIpathcluster\fR" 4 .IX Item "pathcluster" If set, this value is appended as a path identity immediately to the left of \fIpathhost\fR in the Path header field body of accepted articles if it isn't already present as the leftmost element of the Path header field body. The default value is unset. .Sp The main purpose of this parameter is to set the name that you are using to identify yourself to peers (i.e. the path identity they should expect to see from you) in the cases where that doesn't match the main path identity \&\fIpathhost\fR for this news server. (The most common case where that happens is when you have multiple news servers that you want to present as a \*(L"united front\*(R" to the outside world and identify as the same virtual server, but you still want distinct path identities so those servers can internally feed each other. Also, even without internal feeds, \fIpathcluster\fR could be set to an organization name if the organization has multiple news servers.) .IP "\fIpgpverify\fR" 4 .IX Item "pgpverify" Whether to enable \s-1PGP\s0 verification of control messages other than cancel. This is a boolean value and the default in the \fIinn.conf\fR sample file is based on whether configure found \fBpgp\fR, \fBpgpv\fR, \fBpgpgpg\fR, \fBgpgv\fR, \&\fBgpgv1\fR, \fBgpgv2\fR, \fBgpg\fR, \fBgpg1\fR or \fBgpg2\fR. Note that if the parameter is not present in the configuration file, it defaults to false. .IP "\fIport\fR" 4 .IX Item "port" What \s-1TCP\s0 port \fBinnd\fR\|(8) should listen on. The default value is \f(CW119\fR, the standard \s-1NNTP\s0 port. .IP "\fIremembertrash\fR" 4 .IX Item "remembertrash" By default, \fBinnd\fR\|(8) records rejected articles in history so that, if offered the same article again, it can be refused before it is sent. If you wish to disable this behavior, set this to false. This can cause a substantial increase in the amount of bandwidth consumed by incoming news if you have several peers and reject a lot of articles, so be careful with it. Even if this is set to true, \s-1INN\s0 won't log some rejected articles to history if there's reason to believe the article might be accepted if offered by a different peer, so there is usually no reason to set this to false (although doing so can decrease the size of the history file). This is a boolean value and the default is true. .IP "\fIsourceaddress\fR" 4 .IX Item "sourceaddress" Which local \s-1IP\s0 address to bind to for outgoing \s-1NNTP\s0 sockets (used by \&\fBinnxmit\fR\|(8) among other programs, as well as \fBinnfeed\fR\|(8) as long as not overridden by \fIbindaddress\fR in \fBinnfeed.conf\fR\|(5)). This must be in dotted-quad format (nnn.nnn.nnn.nnn). If set to \f(CW\*(C`all\*(C'\fR, the operating system will choose the source \s-1IP\s0 address for outgoing connections. The default value is unset. .IP "\fIsourceaddress6\fR" 4 .IX Item "sourceaddress6" Like \fIsourceaddress\fR but for IPv6 sockets. Note that you will generally need to put double quotes ("") around this value if you set it, since IPv6 addresses contain colons. .IP "\fIverifygroups\fR" 4 .IX Item "verifygroups" Set this to true to reject incoming articles which contain an unknown newsgroup in the whole list of newsgroups to which they are posted. In case \fIwanttrash\fR is set to true, such articles will still be rejected. This is a boolean value, and the default is false. .IP "\fIwanttrash\fR" 4 .IX Item "wanttrash" Set this to true if you want to file articles posted to unknown newsgroups (newsgroups not in the \fIactive\fR file) into the \f(CW\*(C`junk\*(C'\fR newsgroup rather than rejecting them. This is sometimes useful for a transit news server that needs to propagate articles (according to the setting of \f(CW\*(C`Aj\*(C'\fR in the \fInewsfeeds\fR feed pattern) in all newsgroups regardless if they're carried locally. This is a boolean value and the default is false. .Sp The \fIlogtrash\fR parameter specifies whether such articles should be logged as posted to unwanted newsgroups in the \fInews\fR log file. .IP "\fIwipcheck\fR" 4 .IX Item "wipcheck" If \s-1INN\s0 is offered an article by a peer on one channel, it will return deferral responses (code 436) to all other offers of that article for this many seconds. (After this long, if the peer that offered the article still hasn't sent it, it will be accepted from other channels.) The default value is \f(CW5\fR and probably doesn't need to be changed. .IP "\fIwipexpire\fR" 4 .IX Item "wipexpire" How long, in seconds, to keep track of message IDs offered on a channel before expiring articles that still haven't been sent. The default value is \f(CW10\fR and probably doesn't need to be changed. .SS "History Settings" .IX Subsection "History Settings" The following parameter affect the history database. .IP "\fIhismethod\fR" 4 .IX Item "hismethod" Which history storage method to use. The only currently supported value is \f(CW\*(C`hisv6\*(C'\fR. There is no default value; this parameter must be set. .RS 4 .ie n .IP """hisv6""" 4 .el .IP "\f(CWhisv6\fR" 4 .IX Item "hisv6" Stores history data in the \s-1INN\s0 history v6 format: \fBhistory\fR\|(5) text file and a number of \fIdbz\fR database files; this may be in true history v6 format, or tagged hash format, depending on the build options. Separation of these two is a project which has not yet been undertaken. .RE .RS 4 .RE .SS "Article Storage" .IX Subsection "Article Storage" These parameters affect how articles are stored on disk. .IP "\fIcnfscheckfudgesize\fR" 4 .IX Item "cnfscheckfudgesize" If set to a value other than \f(CW0\fR, the claimed size of articles in \s-1CNFS\s0 cycbuffs is checked against \fImaxartsize\fR plus this value, and if larger, the \s-1CNFS\s0 cycbuff is considered corrupt. This can be useful as a sanity check after a system crash, but be careful using this parameter if you have changed \fImaxartsize\fR recently. The default value is \f(CW0\fR. .IP "\fIenableoverview\fR" 4 .IX Item "enableoverview" Whether to write out overview data for articles. If set to false, \s-1INN\s0 will run much faster, but reading news from the system will be impossible (the server will be for news transit only). If this option is set to true, \fIovmethod\fR must also be set. This is a boolean value and the default is true. .IP "\fIextraoverviewadvertised\fR" 4 .IX Item "extraoverviewadvertised" Besides the seven standard overview fields (which are in order \f(CW\*(C`Subject\*(C'\fR, \&\f(CW\*(C`From\*(C'\fR, \f(CW\*(C`Date\*(C'\fR, \f(CW\*(C`Message\-ID\*(C'\fR, \f(CW\*(C`References\*(C'\fR, \f(CW\*(C`:bytes\*(C'\fR and \&\f(CW\*(C`:lines\*(C'\fR) and the eighth \f(CW\*(C`Xref:full\*(C'\fR field required by \s-1INN\s0 in order to handle crossposts, it is possible to add other fields in the overview database. This parameter expects a list of such header field names. Overview data for these additional header fields will be generated for each new article at the time of arrival. For instance, if you specify: .Sp .Vb 1 \& extraoverviewadvertised: [ Path Newsgroups ] .Ve .Sp it implies that \fBnnrpd\fR will advertise \f(CW\*(C`Path:full\*(C'\fR and \f(CW\*(C`Newsgroups:full\*(C'\fR as the ninth and tenth fields in response to \s-1LIST OVERVIEW.FMT\s0 and that these two header field bodies will be stored in the overview database for each new article. It may be a useful configuration to have as some news readers do article scoring with rules based on these two header fields. Having them in the overview database permits being faster at scoring for these readers, without having to separately request them, but on the other hand these additional fields are also present in overview requests of all the other readers, which slightly slows their reading. .Sp The default value is an empty list (no additional fields are stored). Owing to optimizations when \fBinnd\fR parses the articles it receives, it is possible that all the values in the list are not recognized by \fBinnd\fR as standard header field names. In such cases, \fBinnd\fR will log an error in \fInews.err\fR at startup and the unrecognized fields will be discarded. Moreover, the deprecated \f(CW\*(C`Bytes\*(C'\fR and \f(CW\*(C`Lines\*(C'\fR header fields, already present in the standard overview fields as metadata items, cannot be added. .Sp You should advertise only fields for which the overview database is consistent, that is to say it records the content or absence of these fields for \fIall\fR articles, including those already existing in the news spool. Consequently, if you decide to add or remove a field from your overview database, you should either modify \&\fIextraoverviewadvertised\fR and rebuild your overview database with \&\fBmakehistory\fR\|(8) after removing all existing overview files, or implement a transition period by first using \fIextraoverviewhidden\fR as described below. .Sp Use of a transition period can accommodate most overview reconfigurations, but certain drastic changes may still require a complete overview rebuild. .Sp If for instance you want to store the content of the Injection-Info header field body in addition to the fields already stored above, you should use: .Sp .Vb 2 \& extraoverviewadvertised: [ Path Newsgroups ] \& extraoverviewhidden: [ Injection\-Info ] .Ve .Sp This way, \f(CW\*(C`Injection\-Info:full\*(C'\fR will not be advertised by \fBnnrpd\fR but will be stored for each new article. Once you know that all articles in your overview database record the content or absence of that new field (if \&\fBexpire.ctl\fR\|(5) is parameterized so that all your articles expire within 30\ days, you can assume the database is in such a state after 30\ days \&\-\-\ however, note that time to expiration can be unpredictable with \s-1CNFS\s0 and you then have to use \f(CW\*(C`cnfsstat \-a\*(C'\fR for checking on when buffers have rolled over), you should put: .Sp .Vb 2 \& extraoverviewadvertised: [ Path Newsgroups Injection\-Info ] \& extraoverviewhidden: [ ] .Ve .Sp The \f(CW\*(C`Injection\-Info\*(C'\fR value must be added at the end of the list because order matters and fields mentioned in \fIextraoverviewhidden\fR are generated after those mentioned in \fIextraoverviewadvertised\fR. \&\fBnnrpd\fR will now advertise \f(CW\*(C`Injection\-Info:full\*(C'\fR in response to the \s-1LIST OVERVIEW.FMT\s0 command (\f(CW\*(C`full\*(C'\fR indicates that the header field name appears followed by its value). .Sp Now suppose you want to remove the content of the Newsgroups header field from the overview. As order matters, the overview database will no longer be consistent for the Injection-Info header field. Therefore, you need to specify: .Sp .Vb 2 \& extraoverviewadvertised: [ Path ] \& extraoverviewhidden: [ Injection\-Info ] .Ve .Sp And once overview data is accurate for all articles, you should use: .Sp .Vb 2 \& extraoverviewadvertised: [ Path Injection\-Info ] \& extraoverviewhidden: [ ] .Ve .Sp Note that you have to restart \fBnnrpd\fR if it runs as a daemon whenever you change the value of \fIextraoverviewadvertised\fR; a mere \&\f(CW\*(C`ctlinnd xexec innd\*(C'\fR is not enough. .IP "\fIextraoverviewhidden\fR" 4 .IX Item "extraoverviewhidden" This parameter should be used in conjunction with \fIextraoverviewadvertised\fR (see above for more details). It expects a list of header field names. Overview data for these header fields will be generated for each new article at the time of arrival but, contrary to the fields mentioned in \&\fIextraoverviewadvertised\fR, \fBnnrpd\fR will not advertise them in response to the \s-1LIST OVERVIEW.FMT\s0 command. It also implies that \fBnnrpd\fR will not look in the overview database for fields mentioned in \fIextraoverviewhidden\fR when it handles \s-1HDR, XHDR\s0 and \s-1XPAT\s0 requests as the overview database is not considered consistent yet for these fields; \fBnnrpd\fR will have to parse the headers of the requested articles in the news spool, which is slower than directly querying the overview database. .Sp The default value is an empty list (no additional fields are stored). Owing to optimizations when \fBinnd\fR parses the articles it receives, it is possible that all the values in the list are not recognized by \fBinnd\fR as standard header field names. In such cases, \fBinnd\fR will log an error in \fInews.err\fR at startup and the unrecognized fields will be discarded. Moreover, the deprecated \f(CW\*(C`Bytes\*(C'\fR and \f(CW\*(C`Lines\*(C'\fR header fields, already present in the standard overview fields as metadata items, cannot be added. .IP "\fIgroupbaseexpiry\fR" 4 .IX Item "groupbaseexpiry" Whether to enable newsgroup-based expiry. If set to false, article expiry is done based on storage class of storing method. If set to true (and overview information is available), expiry is done by newsgroup name. This affects the format of \fIexpire.ctl\fR. This is a boolean value and the default is true. .IP "\fImergetogroups\fR" 4 .IX Item "mergetogroups" Whether to file all postings to \f(CW\*(C`to.*\*(C'\fR groups in the pseudonewsgroup \&\f(CW\*(C`to\*(C'\fR. If this is set to true, the newsgroup \f(CW\*(C`to\*(C'\fR must exist in the \&\fIactive\fR file or \s-1INN\s0 will not start. (See the discussion of \f(CW\*(C`to.\*(C'\fR groups in \fBinnd\fR\|(8) under \s-1CONTROL MESSAGES.\s0) This is a boolean value and the default is false. .IP "\fInfswriter\fR" 4 .IX Item "nfswriter" For servers writing articles, determine whether the article spool is on \s-1NFS\s0 storage. If set, \s-1INN\s0 attempts to flush articles to the spool in a more timely manner, rather than relying on the operating system to flush things such as the \s-1CNFS\s0 article bitmaps. You should only set this parameter if you are attempting to use a shared \s-1NFS\s0 spool on a machine acting as a single writer within a cluster. This is a boolean value and the default is false. .IP "\fIovercachesize\fR" 4 .IX Item "overcachesize" How many cache slots to reserve for open overview files. If \s-1INN\s0 is writing overview files (see \fIenableoverview\fR), \fIovmethod\fR is set to \&\f(CW\*(C`tradindexed\*(C'\fR, and this is set to a value other than \f(CW0\fR, \s-1INN\s0 will keep around and open that many recently written-to overview files in case more articles come in for those newsgroups. Every overview cache slot consumes two file descriptors, so be careful not to set this value too high. You may be able to use the \f(CW\*(C`ulimit \-n\*(C'\fR command to see how many open file descriptors your operating system allows. \fBinnd\fR\|(8) also uses an open file descriptor for each incoming feed and outgoing channel or batch file, and if it runs out of open file descriptors, it may throttle and stop accepting new news. The default value is \f(CW128\fR (which is probably still too low if you have a large number of file descriptors available). .Sp Please have a look at the documentation of the \fIrlimitnofile\fR parameter, as increasing the default value may lead to an exhaustion of usable file descriptors. .Sp This setting is ignored unless \fIovmethod\fR is set to \f(CW\*(C`tradindexed\*(C'\fR. .IP "\fIovgrouppat\fR" 4 .IX Item "ovgrouppat" If set, restricts the overview data stored by \s-1INN\s0 to only the newsgroups matching this comma-separated list of \fIuwildmat\fR expressions. Newsgroups not matching this setting may not be readable, and if \fIgroupbaseexpiry\fR is set to true and the storage method for these newsgroups does not have self-expire functionality, storing overview data will fail. The default is unset. .IP "\fIovflushcount\fR" 4 .IX Item "ovflushcount" How many articles received between flushing their overview data to disk. This parameter is only used for the buffindexed overview storage method, and defaults to \f(CW50\fR. (Flushing to disk is parameterized differently for other methods: \fItxn_nosync\fR in \fIovdb.conf\fR, \fItransrowlimit\fR and \fItranstimelimit\fR in \fIovsqlite.conf\fR, and always after each article arrival for tradindexed.) .Sp See \fIicdsynccount\fR (related to flushes of the \fIactive\fR and \fIhistory\fR files) for more information about this trade-off between faster speed and more data loss if \fBinnd\fR crashes. .IP "\fIovmethod\fR" 4 .IX Item "ovmethod" Which overview storage method to use. Currently supported values are \&\f(CW\*(C`buffindexed\*(C'\fR, \f(CW\*(C`ovdb\*(C'\fR, \f(CW\*(C`ovsqlite\*(C'\fR and \f(CW\*(C`tradindexed\*(C'\fR. There is no default value; this parameter must be set if \fIenableoverview\fR is true (the default). .RS 4 .ie n .IP """buffindexed""" 4 .el .IP "\f(CWbuffindexed\fR" 4 .IX Item "buffindexed" It stores overview data and index information into preconfigured large files like \s-1CNFS.\s0 Fast at writing, the \f(CW\*(C`buffindexed\*(C'\fR overview storage method can keep up with a large feed more easily and never consumes additional disk space beyond that allocated to these buffers. The downside is that these buffers are hard to recover in case of corruption and somewhat slower for readers and the expiry process. Also, overview data is limited to 8\ \s-1KB\s0 per article, which may lead to the lack of integration of a few articles with headers of unusual length into the overview database. See the \fBbuffindexed.conf\fR\|(5) man page for more details, and notably how to create the buffers. .ie n .IP """ovdb""" 4 .el .IP "\f(CWovdb\fR" 4 .IX Item "ovdb" It stores overview information into a Berkeley\ \s-1DB\s0 database, whose development pace has stalled these last years. This method is fast and very robust, but may require more disk space, unless compression is enabled. Overview data is fetched one article at a time, which makes this method a bit slower than \f(CW\*(C`ovsqlite\*(C'\fR for readers. See the \fBovdb\fR\|(5) man page for more details. .ie n .IP """ovsqlite""" 4 .el .IP "\f(CWovsqlite\fR" 4 .IX Item "ovsqlite" It stores overview information into an SQLite database, known for its long-term stability and compatibility. Robust and faster than \f(CW\*(C`ovdb\*(C'\fR at reading ranges of overview data (since overview data is transferred in 128\-kilobyte chunks between \fBovsqlite-server\fR and \fBnnrpd\fR) but somewhat slower at writing, this method may require more disk space, unless compression is enabled. See the \fBovsqlite\fR\|(5) man page for more details. .ie n .IP """tradindexed""" 4 .el .IP "\f(CWtradindexed\fR" 4 .IX Item "tradindexed" It uses two files per newsgroup, one containing the overview data and one containing the index. Fast for readers, but slow to write to because it has to update two files for each incoming article. Its main advantage is to be the best tested, the most reliable and the method with the best recovery tools (\fBtdx-util\fR). .RE .RS 4 .RE .IP "\fIstoreonxref\fR" 4 .IX Item "storeonxref" If set to true, articles will be stored based on the newsgroup names in the Xref header field body rather than in the Newsgroups header field body. This affects what the patterns in \fIstorage.conf\fR apply to. The primary interesting effect of setting this to true is to enable filing of all control messages according to what storage class the control pseudogroups are filed in rather than according to the newsgroups the control messages are posted to. This is a boolean value and the default is true. .Sp If the tradspool article storage method is used, \fIstoreonxref\fR must be true. .IP "\fIuseoverchan\fR" 4 .IX Item "useoverchan" Whether to \fBinnd\fR\|(8) should create overview data internally through \&\fBlibinnstorage\fR\|(3). If set to false, innd creates overview data by itself. If set to true, innd does not create; instead overview data must be created by \fBoverchan\fR\|(8) from an appropriate entry in \fInewsfeeds\fR. Setting to true may be useful, if innd cannot keep up with incoming feed and the bottleneck is creation of overview data within innd. This is a boolean value and the default is false. .IP "\fIwireformat\fR" 4 .IX Item "wireformat" Only used with the tradspool storage method, this says whether to write articles in wire format. Wire format means storing articles with \f(CW\*(C`\er\en\*(C'\fR at the end of each line and with periods at the beginning of lines doubled, the article format required by the \s-1NNTP\s0 protocol. Articles stored in this format are suitable for sending directly to a network connection without requiring conversion, and therefore setting this to true can make the server more efficient. The primary reason not to set this is if you have old existing software that looks around in the spool and doesn't understand how to read wire format. Storage methods other than tradspool always store articles in wire format. This is a boolean value and the default is true. .IP "\fIxrefslave\fR" 4 .IX Item "xrefslave" Whether to act as the slave of another server. If set, \s-1INN\s0 attempts to duplicate exactly the article numbering of the server feeding it by looking at the Xref header field body of incoming articles and assigning the same article numbers to articles as was noted in the Xref header field body from the upstream server. The result is that clients should be able to point at either server interchangeably (using some load balancing scheme, for example) and see the same internal article numbering. Servers with this parameter set should generally only have one upstream feed, and should always have \fInnrpdposthost\fR set to hand locally posted articles off to the master server. The upstream should be careful to always feed articles in order (\fBinnfeed\fR\|(8) can have problems with this in the event of a backlog). This is a boolean value and the default is false. .SS "Reading" .IX Subsection "Reading" These parameters affect the behavior of \s-1INN\s0 for readers. Most of them are used by \fBnnrpd\fR\|(8). There are some special sets of settings that are broken out separately after the initial alphabetized list. .IP "\fIallownewnews\fR" 4 .IX Item "allownewnews" Whether to allow use of the \s-1NEWNEWS\s0 command by clients. This command used to put a heavy load on the server in older versions of \s-1INN,\s0 but is now reasonably efficient, at least if only one newsgroup is specified by the client. This is a boolean value and the default is true. If you use the \&\fIaccess\fR parameter in \fIreaders.conf\fR, be sure to read about the way it overrides \fIallownewnews\fR. .IP "\fIarticlemmap\fR" 4 .IX Item "articlemmap" Whether to attempt to \fBmmap()\fR articles. Setting this to true will give better performance on most systems, but some systems have problems with \&\fBmmap()\fR. If this is set to false, articles will be read into memory before being sent to readers. This is a boolean value and the default is true. .IP "\fIclienttimeout\fR" 4 .IX Item "clienttimeout" How long (in seconds) a client connection can be idle before it exits. When setting this parameter, be aware that some newsreaders use the same connection for reading and posting and don't deal well with the connection timing out while a post is being composed. If the system isn't having a problem with too many long-lived connections, it may be a good idea to increase this value to \f(CW3600\fR (an hour). The default value is \f(CW1800\fR (thirty minutes). .IP "\fIinitialtimeout\fR" 4 .IX Item "initialtimeout" How long (in seconds) \fBnnrpd\fR will wait for the first command from a reader connection before dropping the connection. This is a defensive timeout intended to protect the news server from badly behaved reader clients that open and abandon a multitude of connections without every closing them. The default value is \f(CW10\fR (ten seconds), which may need to be increased if many clients connect via slow network links. .IP "\fImsgidcachesize\fR" 4 .IX Item "msgidcachesize" How many cache slots to reserve for message-IDs to storage token translations. When serving overview data to clients (\s-1NEWNEWS, OVER,\s0 etc.), \fBnnrpd\fR\|(8) can cache the storage token associated with a message-ID and save the cost of looking it up in the \fIhistory\fR file; for some configurations, setting this parameter can save more than 90% of the wall clock time for a session. The default value is \f(CW64000\fR. .IP "\fInfsreader\fR" 4 .IX Item "nfsreader" For servers reading articles, determine whether the article spool is on \s-1NFS\s0 storage. If set, \s-1INN\s0 will attempt to force articles and overviews to be read directly from the \s-1NFS\s0 spool rather than from cached copies. You should only set this parameter if you are attempting to use a shared \s-1NFS\s0 spool on a machine acting as a reader within a cluster. This is a boolean value and the default is false. .IP "\fInfsreaderdelay\fR" 4 .IX Item "nfsreaderdelay" If \fInfsreader\fR is set, \s-1INN\s0 will use the value of \fInfsreaderdelay\fR to delay the apparent arrival time of articles to clients by this amount. Note that only answers to \s-1GROUP\s0 and \s-1NEWNEWS\s0 commands are affected. This value should be tuned based on the \s-1NFS\s0 cache timeouts locally. The default is \f(CW60\fR, that is to say one minute. .IP "\fInnrpdcheckart\fR" 4 .IX Item "nnrpdcheckart" Whether \fBnnrpd\fR should check the existence of an article before listing it as present in response to an \s-1NNTP\s0 command (\s-1HDR, LISTGROUP, NEWNEWS, OVER, XPAT\s0). The primary use of this setting is to prevent \fBnnrpd\fR from returning information about articles which are no longer present on the server but which still have overview data available. Checking the existence of articles before returning overview information slows down the overview commands, but reduces the number of \*(L"article is missing\*(R" errors seen by the client. This is a boolean value and the default is true. .Sp You may also want to see the \fIgroupexactcount\fR parameter in \fBreaders.conf\fR\|(5) which controls the computing of the estimated article count returned in \s-1NNTP\s0 commands (\s-1GROUP, LIST COUNTS, LISTGROUP\s0). .IP "\fInnrpdflags\fR" 4 .IX Item "nnrpdflags" When \fBnnrpd\fR\|(8) is spawned from \fBinnd\fR\|(8), these flags are passed as arguments to the nnrpd process. This setting does not affect instances of nnrpd that are started in daemon mode, or instances that are started via another listener process such as \fBinetd\fR\|(8) or \fBxinetd\fR\|(8). Shell quoting and metacharacters are not supported. This is a string value and the default is unset. .IP "\fInnrpdloadlimit\fR" 4 .IX Item "nnrpdloadlimit" If set to a value other than \f(CW0\fR, connections to nnrpd will be refused if the system load average is higher than this value. The default value is \f(CW16\fR. .IP "\fInoreader\fR" 4 .IX Item "noreader" Normally, \fBinnd\fR\|(8) will fork a copy of \fBnnrpd\fR\|(8) for all incoming connections from hosts not listed in \fIincoming.conf\fR. If this parameter is set to true, those connections will instead be rejected with a 502 error code. This should be set to true for a transit-only server that doesn't support readers, or if nnrpd is running in daemon mode or being started out of inetd. This is a boolean value and the default is false. .IP "\fIreaderswhenstopped\fR" 4 .IX Item "readerswhenstopped" Whether to allow readers to connect even if the server is paused or throttled. This is only applicable if \fBnnrpd\fR\|(8) is spawned from \fBinnd\fR\|(8) rather than run out of inetd or in daemon mode. This is a boolean value and the default is false. .IP "\fIreadertrack\fR" 4 .IX Item "readertrack" Whether to enable the tracking system for client behavior. Tracked information is recorded to \fIpathlog\fR/tracklogs/log\-\fI\s-1ID\s0\fR, where \s-1ID\s0 is determined by nnrpd's \s-1PID\s0 and launch time. Currently the information recorded includes initial connection and posting; only information about clients listed in \fInnrpd.track\fR is recorded. In addition, every posted article will be saved in \fIpathlog\fR/trackposts/track.\fImessage-id\fR, where \&\fImessage-id\fR is the message \s-1ID\s0 of the post. This is a boolean value and the default is false. .IP "\fItradindexedmmap\fR" 4 .IX Item "tradindexedmmap" Whether to attempt to \fBmmap()\fR tradindexed overviews articles. Setting this to true will give better performance on most systems, but some systems have problems with \fBmmap()\fR. If this is set to false, overviews will be read into memory before being sent to readers. This is a boolean value and the default is true. .PP \&\s-1INN\s0 has optional support for generating keyword information automatically from article body text and putting that information in overview for the use of clients that know to look for it (\s-1HDR, OVER\s0 and \s-1XPAT\s0 commands). The following parameters control that feature, which should be considered \fIexperimental\fR. Its very simple text tokenization works only on plain-text \s-1ASCII\s0 articles, and totally lacks of understanding of anything other than English. Articles encoded in Base64 or Quoted-Printable, having a \s-1MIME\s0 structure, or farther afield from English will have garbage in the generated Keywords header field. .PP This feature may be too slow if you're taking a substantial feed, and probably will not be useful for the average news reader; enabling this is not recommended unless you have some specific intention to take advantage of it. .IP "\fIkeywords\fR" 4 .IX Item "keywords" Whether the keyword generation support should be enabled. This is a boolean value and the default is false. .Sp If an article already contains a Keywords header field, no keyword generation is done and the original Keywords header field is kept untouched. .Sp In order to use this feature, the regex library should be available and \s-1INN\s0 configured with the \fB\-\-enable\-keywords\fR flag. Otherwise, no keywords will be generated, even though this boolean value is set to true. You also have to add the Keywords header field into the overview with \fIextraoverviewadvertised\fR or \fIextraoverviewhidden\fR. .IP "\fIkeyartlimit\fR" 4 .IX Item "keyartlimit" Articles larger than this value in bytes will not have keywords generated for them (since it would take too long to do so). The default value is \&\f(CW100000\fR (approximately 100\ \s-1KB\s0). .IP "\fIkeylimit\fR" 4 .IX Item "keylimit" Maximum number of bytes allocated for keyword data. If there are more keywords than will fit into this many bytes when separated by commas, the rest are discarded. The default value is \f(CW512\fR. .IP "\fIkeymaxwords\fR" 4 .IX Item "keymaxwords" Maximum number of keywords that will be generated for an article. (The keyword generation code will attempt to discard \*(L"noise\*(R" words in English, so the number of keywords actually written into the overview will usually be smaller than this even if the maximum number of keywords is found.) The default value is \f(CW250\fR. .SS "Posting" .IX Subsection "Posting" These parameters are only used by \fBnnrpd\fR\|(8), \fBinews\fR\|(1), and other programs that accept or generate postings. There are some special sets of settings that are broken out separately after the initial alphabetized list. .IP "\fIaddinjectiondate\fR" 4 .IX Item "addinjectiondate" Whether to add an Injection-Date header field to all local posts. This is a boolean value and the default is true. .Sp Note that no Injection-Date header fields will be added to local posts already containing both a Message-ID header field and a Date header field. This is done in conformance with standards, to help minimize the possibility of a loop in e\-mail gatewaying and ensure that a newly injected article is not treated as a new, separate article in case of multiple injection of the same article to different injecting agents. .IP "\fIaddinjectionpostingaccount\fR" 4 .IX Item "addinjectionpostingaccount" Whether to add a posting-account attribute to the Injection-Info header field body to all local posts giving the username assigned to the user at connection time or after authentication. This is a boolean value and the default is false. There is no intrinsic support for obfuscating the value. That has to be done with a user-written Perl filter, if desired. .IP "\fIaddinjectionpostinghost\fR" 4 .IX Item "addinjectionpostinghost" Whether to add a posting-host attribute to the Injection-Info header field body to all local posts giving an \s-1FQDN\s0 (when known, by reverse lookup of the client \s-1IP\s0 address) and \s-1IP\s0 address of the system from which the post was received. This is a boolean value and the default is true. Note that \s-1INN\s0 either does not add this attribute or adds the name (when known) and \s-1IP\s0 address of the client. There is no intrinsic support for obfuscating the name of the client. That has to be done with a user-written Perl filter, if desired. .Sp When this parameter is set to true, an \s-1FQDN\s0 (obtained by reverse lookup of the client \s-1IP\s0 address or, if unknown, the \s-1IP\s0 address itself) of the client is also added to the Path header field body, after the \&\f(CW\*(C`!.POSTED\*(C'\fR diagnostic. .IP "\fIcheckincludedtext\fR" 4 .IX Item "checkincludedtext" Whether to check local postings for the ratio of new to quoted text and reject them if that ratio is under 50%. Included text is recognized by looking for lines beginning with \f(CW\*(C`>\*(C'\fR, \f(CW\*(C`|\*(C'\fR, or \f(CW\*(C`:\*(C'\fR. This is a boolean value and the default is false. .IP "\fIcomplaints\fR" 4 .IX Item "complaints" The value of the mail-complaints-to attribute of the Injection-Info header field added to all local posts. The default is the newsmaster's e\-mail address. (If the newsmaster, selected at configure time and defaulting to \f(CW\*(C`usenet\*(C'\fR, doesn't contain \f(CW\*(C`@\*(C'\fR, the address will consist of the newsmaster, an \f(CW\*(C`@\*(C'\fR, and the value of \fIfromhost\fR.) .IP "\fIfromhost\fR" 4 .IX Item "fromhost" Contains a domain used to construct e\-mail addresses. The address of the local news administrator will be given as @\fIfromhost\fR, where is the newsmaster user set at compile time (\f(CW\*(C`usenet\*(C'\fR by default). This setting will also be used by \fBmailpost\fR\|(8) to fully qualify addresses and by \&\fBinews\fR\|(1) to generate the Sender header field (and the From header field if missing). The value of the \s-1FROMHOST\s0 environment variable, if set, overrides this setting. The default is the fully qualified domain name of the local host. .IP "\fIlocalmaxartsize\fR" 4 .IX Item "localmaxartsize" The maximum article size (in bytes) for locally posted articles. Articles larger than this will be rejected. A value of \f(CW0\fR allows any size of article, but note that \fBnnrpd\fR and \fBinnd\fR will crash if system memory is exceeded. See also \fImaxartsize\fR, which applies to all articles including those posted locally. The default value is \f(CW1000000\fR (approximately 1\ \s-1MB\s0). .IP "\fImoderatormailer\fR" 4 .IX Item "moderatormailer" The address to which to send submissions for moderated groups. It is only used if the \fImoderators\fR file doesn't exist, or if the moderated group to which an article is posted is not matched by any entry in that file, and takes the same form as an entry in the \fImoderators\fR file. In most cases, \&\f(CW\*(C`%s@moderators.isc.org\*(C'\fR is a good value for this parameter (\f(CW%s\fR is expanded into a form of the newsgroup name). See \fBmoderators\fR\|(5) for more details about the syntax. The default is unset. If this parameter isn't set and an article is posted to a moderated group that does not have a matching entry in the \fImoderators\fR file, the posting will be rejected with an error. .IP "\fInnrpdauthsender\fR" 4 .IX Item "nnrpdauthsender" Whether to generate a Sender header field based on reader authentication. If this parameter is set, a Sender header field will be added to local posts containing the identity assigned by \fIreaders.conf\fR. If the assigned identity does not include an \f(CW\*(C`@\*(C'\fR, the reader's hostname is used. If this parameter is set but no identity is assigned, the Sender header field will be removed from all posts even if the poster includes one. This is a boolean value and the default is false. .IP "\fInnrpdposthost\fR" 4 .IX Item "nnrpdposthost" If set, \fBnnrpd\fR\|(8) and \fBrnews\fR\|(1) will pass all locally posted articles to the specified host rather than trying to inject them locally. See also \&\fInnrpdpostport\fR. This should always be set if \fIxrefslave\fR is true. The default value is unset. .IP "\fInnrpdpostport\fR" 4 .IX Item "nnrpdpostport" The port on the remote server to connect to to post when \fInnrpdposthost\fR is used. The default value is \f(CW119\fR. .IP "\fIorganization\fR" 4 .IX Item "organization" What to put in the Organization header field body if it is left blank by the poster. The value of the \s-1ORGANIZATION\s0 environment variable, if set, overrides this setting. The default is unset, which tells \s-1INN\s0 not to insert an Organization header field. .IP "\fIspoolfirst\fR" 4 .IX Item "spoolfirst" If true, \fBnnrpd\fR\|(8) will spool new articles rather than attempting to send them to \fBinnd\fR\|(8). If false, nnrpd will spool articles only if it receives an error trying to send them to innd. Setting this to true can be useful if nnrpd must respond as fast as possible to the client; however, when set, articles will not appear to readers until they are given to innd. nnrpd won't do this; \f(CW\*(C`rnews \-U\*(C'\fR must be run periodically to take the spooled articles and post them. This is a boolean value and the default is false. .IP "\fIstrippostcc\fR" 4 .IX Item "strippostcc" Whether to strip To, Cc, and Bcc header fields out of all local posts via \&\fBnnrpd\fR\|(8). The primary purpose of this setting is to prevent abuse of the news server by posting to a moderated group and including To or Cc header fields in the post so that the news server will send the article to arbitrary addresses. \s-1INN\s0 now protects against this abuse in other ways provided \fImta\fR is set to a command that includes \f(CW%s\fR and honors it, so this is generally no longer needed. This is a boolean value and the default is false. .PP \&\fBnnrpd\fR\|(8) has support for controlling high-volume posters via an exponential backoff algorithm, as configured by the following parameters. .PP Exponential posting backoff works as follows: news clients are indexed by \s-1IP\s0 address (or username, see \fIbackoffauth\fR below). Each time a post is received from an \s-1IP\s0 address, the time of posting is stored (along with the previous sleep time, see below). After a configurable number of posts in a configurable period of time, \fBnnrpd\fR\|(8) will begin to sleep for increasing periods of time before actually posting anything (posting backoff is therefore activated). Posts will still be accepted, but at an increasingly reduced rate. .PP After backoff has been activated, the length of time to sleep is computed based on the difference in time between the last posting and the current posting. If this difference is less than \fIbackoffpostfast\fR, the new sleep time will be 1 + (previous sleep time * \fIbackoffk\fR). If this difference is less than \fIbackoffpostslow\fR but greater than \&\fIbackoffpostfast\fR, then the new sleep time will equal the previous sleep time. If this difference is greater than \fIbackoffpostslow\fR, the new sleep time is zero and posting backoff is deactivated for this poster. (Note that this does not mean posting backoff cannot be reactivated later in the session.) .PP Exponential posting backoff will not be enabled unless \fIbackoffdb\fR is set and \fIbackoffpostfast\fR and \fIbackoffpostslow\fR are set to something other than their default values. .PP Here are the parameters that control exponential posting backoff: .IP "\fIbackoffauth\fR" 4 .IX Item "backoffauth" Whether to index posting backoffs by user rather than by source \s-1IP\s0 address. You must be using authentication in \fBnnrpd\fR\|(8) for a value of true to have any meaning. This is a boolean value and the default is false. .IP "\fIbackoffdb\fR" 4 .IX Item "backoffdb" The path to a directory, writeable by the news user, that will contain the backoff database. There is no default for this parameter; you must provide a path to a creatable or writeable directory to enable exponential backoff. .IP "\fIbackoffk\fR" 4 .IX Item "backoffk" The amount to multiply the previous sleep time by if the user is still posting too quickly. A value of \f(CW2\fR will double the sleep time for each excessive post. The default value is \f(CW1\fR. .IP "\fIbackoffpostfast\fR" 4 .IX Item "backoffpostfast" Postings from the same identity that arrive in less than this amount of time (in seconds) will trigger increasing sleep time in the backoff algorithm. The default value is \f(CW0\fR. .IP "\fIbackoffpostslow\fR" 4 .IX Item "backoffpostslow" Postings from the same identity that arrive in greater than this amount of time (in seconds) will reset the backoff algorithm. Another way to look at this constant is to realize that posters will be allowed to generate at most 86400/\fIbackoffpostslow\fR posts per day. The default value is \f(CW1\fR. .IP "\fIbackofftrigger\fR" 4 .IX Item "backofftrigger" This many postings are allowed before the backoff algorithm is triggered. The default value is \f(CW10000\fR. .SS "\s-1TLS/SSL\s0 Support for Reading and Posting" .IX Subsection "TLS/SSL Support for Reading and Posting" Here are the parameters used by \fBnnrpd\fR\|(8) to provide \s-1TLS/SSL\s0 support. .PP The parameters related to certificates are: .IP "\fItlscafile\fR" 4 .IX Item "tlscafile" The path to a file containing certificate authority root certificates, used to present a trust chain to a \s-1TLS\s0 client. This parameter is only used if \fBnnrpd\fR is built with \s-1TLS/SSL\s0 support. The default value is an empty string. .IP "\fItlscapath\fR" 4 .IX Item "tlscapath" The path to a directory containing certificate authority root certificates. Each file in the directory should contain one \s-1CA\s0 certificate, and the name of the file should be the \s-1CA\s0 subject name hash value. See the OpenSSL documentation for more information. This parameter is only used if \fBnnrpd\fR is built with \s-1TLS/SSL\s0 support. The default value is \fIpathetc\fR. .IP "\fItlscertfile\fR" 4 .IX Item "tlscertfile" The path to a file containing the server certificate to present to \&\s-1TLS\s0 clients. This parameter is only used if \fBnnrpd\fR is built with \s-1TLS/SSL\s0 support. The default value is \fIpathetc\fR/cert.pem. .Sp If you want to use a complete certificate chain, you can directly put it in \fItlscertfile\fR (like Apache's \fISSLCertificateFile\fR directive). Alternately, you can put a single certificate in \fItlscertfile\fR and use \&\fItlscafile\fR for additional certificates needed to complete the chain, like a separate authority root certificate. .Sp More concretely, when using Let's\ Encrypt certificates, Certbot's files can be installed as follows: .Sp .Vb 3 \& tlscapath: /etc/letsencrypt/live/news.server.com \& tlscertfile: /etc/letsencrypt/live/news.server.com/fullchain.pem \& tlskeyfile: /etc/letsencrypt/live/news.server.com/privkey.pem .Ve .Sp or: .Sp .Vb 4 \& tlscapath: /etc/letsencrypt/live/news.server.com \& tlscafile: /etc/letsencrypt/live/news.server.com/chain.pem \& tlscertfile: /etc/letsencrypt/live/news.server.com/cert.pem \& tlskeyfile: /etc/letsencrypt/live/news.server.com/privkey.pem .Ve .Sp Make sure that the permission rights are properly set so that the news user or the news group can read these directories and files (typically, he should access \fI/etc/letsencrypt/live/news.server.com\fR and \&\fI/etc/letsencrypt/archive/news.server.com\fR where the real keys are located, and the private key should not be world-readable). .Sp If you prefer to point to files outside the directory of Let's\ Encrypt, you may add a post-renewal hook for Let's\ Encrypt to copy the generated files to another location, and give them the expected rights. .IP "\fItlskeyfile\fR" 4 .IX Item "tlskeyfile" The path to a file containing the encryption key for the server certificate named in \fItlscertfile\fR. This may be the same as \&\fItlscertfile\fR if, when you created the certificate, you put the key in the same file (if, for example, you gave the same file name to both the \&\fB\-out\fR and \fB\-keyout\fR options to \f(CW\*(C`openssl req\*(C'\fR). This parameter is only used if \fBnnrpd\fR is built with \s-1TLS/SSL\s0 support. The default value is \&\fIpathetc\fR/key.pem. .Sp This file must only be readable by the news user or \fBnnrpd\fR will refuse to use it. .PP Finally, here are the parameters that can be used to tighten the level of security provided by \s-1TLS/SSL\s0 in case new attacks exploitable in \s-1NNTP\s0 on the \s-1TLS\s0 protocol or some supported cipher suite are discovered: .IP "\fItlsciphers\fR" 4 .IX Item "tlsciphers" The string describing the cipher suites OpenSSL will support for \s-1TLS\s0\ 1.2 and below. See OpenSSL's \fBciphers\fR\|(1) command documentation for details. The default is unset, which uses OpenSSL's default cipher suite list. .IP "\fItlsciphers13\fR" 4 .IX Item "tlsciphers13" The string describing the cipher suites OpenSSL will support for \s-1TLS\s0\ 1.3. See OpenSSL's \fBciphers\fR\|(1) command documentation for details. The default is unset, which uses OpenSSL's default cipher suite list. .Sp Note that a separate cipher suite configuration parameter is needed for \&\s-1TLS\s0\ 1.3 because \s-1TLS\s0\ 1.3 cipher suites are not compatible with \&\s-1TLS\s0\ 1.2, and vice-versa. In order to avoid issues where legacy \&\s-1TLS\s0\ 1.2 cipher suite configuration configured in the \fItlsciphers\fR parameter would inadvertently disable all \s-1TLS\s0\ 1.3 cipher suites, the \fIinn.conf\fR configuration has been separated out. .IP "\fItlscompression\fR" 4 .IX Item "tlscompression" Whether to enable or disable TLS/SSL\-level compression support, if the negotiated protocol supports it (notably, \s-1TLS\s0\ 1.3 no longer supports it). This is a boolean and the default is false, that is to say compression is disabled, so as to follow the best current practices for a secure use of \s-1TLS\s0 in application protocols (see \s-1RFC\s0\ 8143 for \s-1NNTP\s0). .Sp Note that enabling TLS/SSL\-level compression will be possible only if the OpenSSL library \s-1INN\s0 has been built with, supports that feature. .IP "\fItlseccurve\fR" 4 .IX Item "tlseccurve" The name of the elliptic curve to use for ephemeral key exchanges. To see the list of curves supported by OpenSSL, use \f(CW\*(C`openssl ecparam \&\-list_curves\*(C'\fR. .Sp The default is unset, which means an appropriate curve is auto-selected (if your OpenSSL version is at least 1.0.2 or you are using LibreSSL) or the \s-1NIST P\-256\s0 curve is used. .Sp This option is only effective if your OpenSSL version has \s-1ECDH\s0 support. .IP "\fItlspreferserverciphers\fR" 4 .IX Item "tlspreferserverciphers" Whether to let the client or the server decide the preferred cipher suite, signature algorithm or elliptic curve to use for an incoming connection. This is a boolean and the default is true, that is to say the server will choose following its own preferences. .IP "\fItlsprotocols\fR" 4 .IX Item "tlsprotocols" The list of \s-1TLS/SSL\s0 protocol versions to support. Valid protocols are \&\fBSSLv2\fR, \fBSSLv3\fR, \fBTLSv1\fR, \fBTLSv1.1\fR, \fBTLSv1.2\fR and \fBTLSv1.3\fR. The default value is to only allow secure \s-1TLS\s0 protocols: .Sp .Vb 1 \& tlsprotocols: [ TLSv1.2 TLSv1.3 ] .Ve .Sp Note that the listed protocols will be enabled only if the OpenSSL library \s-1INN\s0 has been built with, supports them. In case OpenSSL supports protocols more recent than TLSv1.3, they will be automatically enabled (which anyway is fine regarding security, as newer protocols are supposed to be more secure). .Sp \&\f(CW\*(C`SSLv2\*(C'\fR was formally deprecated by \s-1RFC\s0\ 6176 in 2011, \f(CW\*(C`SSLv3\*(C'\fR by \s-1RFC\s0\ 7568 in 2015, \f(CW\*(C`TLSv1.0\*(C'\fR and \f(CW\*(C`TLSv1.1\*(C'\fR by \s-1RFC\s0\ 8996 in 2021. .SS "Monitoring" .IX Subsection "Monitoring" These parameters control the behavior of \fBinnwatch\fR\|(8), the program that monitors \s-1INN\s0 and informs the news administrator if anything goes wrong with it. .IP "\fIdoinnwatch\fR" 4 .IX Item "doinnwatch" Whether to start \fBinnwatch\fR\|(8) from rc.news. This is a boolean value, and the default is true. .IP "\fIinnwatchbatchspace\fR" 4 .IX Item "innwatchbatchspace" Free space in \fIpathoutgoing\fR, in \fBinndf\fR\|(8) output units (normally kilobytes), at which \fBinnd\fR\|(8) will be throttled by \fBinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \f(CW4000\fR. .IP "\fIinnwatchlibspace\fR" 4 .IX Item "innwatchlibspace" Free space in \fIpathdb\fR, in \fBinndf\fR\|(8) output units (normally kilobytes), at which \fBinnd\fR\|(8) will be throttled by \fBinnwatch\fR\|(8), assuming a default \&\fIinnwatch.ctl\fR. The default value is \f(CW25000\fR. .IP "\fIinnwatchloload\fR" 4 .IX Item "innwatchloload" Load average times 100 at which \fBinnd\fR\|(8) will be restarted by \fBinnwatch\fR\|(8) (undoing a previous pause or throttle), assuming a default \&\fIinnwatch.ctl\fR. The default value is \f(CW1000\fR (that is, a load average of 10.00). .IP "\fIinnwatchhiload\fR" 4 .IX Item "innwatchhiload" Load average times 100 at which \fBinnd\fR\|(8) will be throttled by \fBinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \f(CW2000\fR (that is, a load average of 20.00). .IP "\fIinnwatchpauseload\fR" 4 .IX Item "innwatchpauseload" Load average times 100 at which \fBinnd\fR\|(8) will be paused by \fBinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \f(CW1500\fR (that is, a load average of 15.00). .IP "\fIinnwatchsleeptime\fR" 4 .IX Item "innwatchsleeptime" How long (in seconds) \fBinnwatch\fR\|(8) will sleep between each check of \s-1INN.\s0 The default value is \f(CW600\fR. .IP "\fIinnwatchspoolnodes\fR" 4 .IX Item "innwatchspoolnodes" Free inodes in \fIpatharticles\fR at which \fBinnd\fR\|(8) will be throttled by \&\fBinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \&\f(CW200\fR. .IP "\fIinnwatchspoolspace\fR" 4 .IX Item "innwatchspoolspace" Free space in \fIpatharticles\fR and \fIpathoverview\fR, in \fBinndf\fR\|(8) output units (normally kilobytes), at which \fBinnd\fR\|(8) will be throttled by \&\fBinnwatch\fR\|(8), assuming a default \fIinnwatch.ctl\fR. The default value is \&\f(CW25000\fR. .SS "Logging" .IX Subsection "Logging" These parameters control what information \s-1INN\s0 logs. .IP "\fIdocnfsstat\fR" 4 .IX Item "docnfsstat" Whether to start \fBcnfsstat\fR\|(8) when \fBinnd\fR\|(8) is started. cnfsstat will log the status of all \s-1CNFS\s0 cycbuffs to syslog on a periodic basis (frequency is the default for \f(CW\*(C`cnfsstat \-l\*(C'\fR, currently 600 seconds). This is a boolean value and the default is false. .IP "\fIhtmlstatus\fR" 4 .IX Item "htmlstatus" Whether \fBinnd\fR should write the status report as \s-1HTML\s0 file or in plain text. The \s-1HTML\s0 status file goes to \fIpathhttp\fR/inn_status.html, while the plain text status file is written to \fIpathlog\fR/inn.status. This is a boolean value and the default is true (an \s-1HTML\s0 status file is written). Also see the \fIstatus\fR parameter. .IP "\fIincominglogfrequency\fR" 4 .IX Item "incominglogfrequency" How many articles to process on an incoming channel before logging the activity. The default value is \f(CW200\fR. .IP "\fIlogartsize\fR" 4 .IX Item "logartsize" Whether the size of accepted articles (in bytes) should be written to the article log file. This is useful for flow rate statistics and is recommended. This is a boolean value and the default is true. .IP "\fIlogcancelcomm\fR" 4 .IX Item "logcancelcomm" Set this to true to log \f(CW\*(C`ctlinnd cancel\*(C'\fR commands to syslog. This is a boolean value and the default is false. .IP "\fIlogcycles\fR" 4 .IX Item "logcycles" How many old logs \fBscanlogs\fR\|(8) keeps. \fBscanlogs\fR\|(8) is generally run by \&\fBnews.daily\fR\|(8) and will archive compressed copies of this many days worth of old logs. The default value is \f(CW3\fR. .IP "\fIlogipaddr\fR" 4 .IX Item "logipaddr" Whether the verified name of the remote feeding host should be logged to the article log for incoming articles rather than the last entry in the Path header field body. The only reason to ever set this to false is due to some interactions with \fInewsfeeds\fR flags; see \fBnewsfeeds\fR\|(5) for more information. This is a boolean value and the default is true. .IP "\fIlogsitename\fR" 4 .IX Item "logsitename" Whether the names of the sites to which accepted articles will be sent should be put into the article log file. This is useful for debugging and statistics. This is a boolean value and the default is true. .IP "\fIlogstatus\fR" 4 .IX Item "logstatus" Whether \fBinnd\fR should write a shortened version of its status report to syslog every \fIstatus\fR seconds. This is a boolean value and the default is true. If set to true, see the \fIstatus\fR parameter for more details on how to enable status reporting. .IP "\fIlogtrash\fR" 4 .IX Item "logtrash" Whether \fBinnd\fR should add a line in the \fInews\fR log file to report unwanted newsgroups (that is to say newsgroups not locally carried by the news server). This is a boolean value and the default is true. It may be useful to set it to false when \fIwanttrash\fR is set to true. .IP "\fInnrpdoverstats\fR" 4 .IX Item "nnrpdoverstats" Whether nnrpd overview statistics should be logged via syslog. This can be useful for measuring overview performance. This is a boolean value and the default is true. .IP "\fInntplinklog\fR" 4 .IX Item "nntplinklog" Whether to put the storage \s-1API\s0 token for accepted articles (used by nntplink) in the article log. This is a boolean value and the default is false. .IP "\fIstathist\fR" 4 .IX Item "stathist" Where to write history statistics for analysis with \fIcontrib/stathist\fR; this can be modified with \fBctlinnd\fR\|(8) while \fBinnd\fR is running. Logging does not occur unless a path is given, and there is no default value. .IP "\fIstatus\fR" 4 .IX Item "status" How frequently (in seconds) \fBinnd\fR\|(8) should write out a status report. The report is written to \fIpathhttp\fR/inn_status.html or \&\fIpathlog\fR/inn.status depending on the value of \fIhtmlstatus\fR. If this is set to \f(CW0\fR or \f(CW\*(C`false\*(C'\fR, status reporting is disabled. The default value is \f(CW600\fR (that is to say reports are written every 10 minutes). .IP "\fItimer\fR" 4 .IX Item "timer" How frequently (in seconds) \fBinnd\fR\|(8) should report performance timings to syslog. If this is set to \f(CW0\fR, performance timing is disabled. Enabling this is highly recommended, and \fBinnreport\fR\|(8) can produce a nice summary of the timings. If set to \f(CW0\fR, performance timings in \fBnnrpd\fR\|(8) are also disabled, although \fBnnrpd\fR always reports statistics on exit and therefore any non-zero value is equivalent for it. The default value is \f(CW600\fR (that is to say performance timings are reported every 10 minutes). .SS "System Tuning" .IX Subsection "System Tuning" The following parameters can be modified to tune the low-level operation of \s-1INN.\s0 In general, you shouldn't need to modify any of them except possibly \fIrlimitnofile\fR unless the server is having difficulty. .IP "\fIbadiocount\fR" 4 .IX Item "badiocount" How many read or write failures until a channel is put to sleep or closed. The default value is \f(CW5\fR. .IP "\fIblockbackoff\fR" 4 .IX Item "blockbackoff" Each time an attempted write returns \s-1EAGAIN\s0 or \s-1EWOULDBLOCK,\s0 \fBinnd\fR\|(8) will wait for an increasing number of seconds before trying it again. This is the multiplier for the sleep time. If you're having trouble with channel feeds not keeping up, it may be good to change this value to \f(CW2\fR or \f(CW3\fR, since then when the channel fills \s-1INN\s0 will try again in a couple of seconds rather than waiting two minutes. The default value is \f(CW120\fR. .IP "\fIchaninacttime\fR" 4 .IX Item "chaninacttime" The time (in seconds) to wait between noticing inactive channels. The default value is \f(CW600\fR. .IP "\fIchanretrytime\fR" 4 .IX Item "chanretrytime" How many seconds to wait before a channel restarts. The default value is \&\f(CW300\fR. .IP "\fIdatamovethreshold\fR" 4 .IX Item "datamovethreshold" The threshold for deciding whether to move already-read data to the top of buffer or extend the buffer. The buffer described here is used for reading \&\s-1NNTP\s0 data. Increasing this value may improve performance, but it should not be increased on Systems with insufficient memory. Permitted values are between \f(CW0\fR and \f(CW1048576\fR (out of range values are treated as \&\f(CW1048576\fR) and the default value is \f(CW16384\fR. .IP "\fIicdsynccount\fR" 4 .IX Item "icdsynccount" How many article writes between updating the \fIactive\fR and \fIhistory\fR files. The default value is \f(CW10\fR. .Sp This is a trade-off between faster speed and more data loss if \fBinnd\fR crashes (or the system crashes, or loses power, etc.). The higher this parameter is, the less frequent syncs are done. It is essentially the frequency of checkpoints: the maximum number of articles that may be orphaned in case of a crash as they wouldn't have been recorded in the \fIhistory\fR file. Besides, the missing updates to the \fIactive\fR file would cause other problems later, such as duplicate article numbers and corresponding errors when storing new articles. (If \fBinnd\fR has crashed, you can fix these errors by rebuilding the \&\fIhistory\fR file and overview with \fBmakehistory\fR\|(8). The \fIactive\fR file will be automatically be renumbered after that operation.) .IP "\fIkeepmmappedthreshold\fR" 4 .IX Item "keepmmappedthreshold" When using buffindexed, retrieving overview data (that is, responding to \&\s-1OVER\s0 or running expireover) causes mmapping of all overview data blocks which include requested overview data for newsgroup. But for high volume newsgroups like control.cancel, this may cause too much mmapping at once leading to system resource problems. To avoid this, if the amount to be mmapped exceeds \fIkeepmmappedthreshold\fR (in \s-1KB\s0), buffindexed mmap's just one overview block (8\ \s-1KB\s0). This parameter is specific to buffindexed overview storage method. The default value is \f(CW1024\fR (1\ \s-1MB\s0). .IP "\fImaxcmdreadsize\fR" 4 .IX Item "maxcmdreadsize" If set to anything other than \f(CW0\fR, maximum buffer size (in bytes) for reading \s-1NNTP\s0 command will have this value. It should not be large on systems which are slow to process and store articles, as that would lead to \fBinnd\fR\|(8) spending a long time on each channel and keeping other channels waiting. The default value is \s-1BUFSIZ\s0 defined in stdio.h (usually between \&\f(CW1024\fR and \f(CW8192\fR in most environments, see \fBsetbuf\fR\|(3)). .IP "\fImaxforks\fR" 4 .IX Item "maxforks" How many times to attempt a \fBfork\fR\|(2) before giving up. The default value is \f(CW10\fR. .IP "\fImaxlisten\fR" 4 .IX Item "maxlisten" How many incoming connections can queue up in the listen backlog for \fBinnd\fR, \fBnnrpd\fR and two overview storage methods (\f(CW\*(C`ovdb\*(C'\fR and \&\f(CW\*(C`ovsqlite\*(C'\fR). The default value is \f(CW128\fR and should be raised in case you notice that some connection requests get dropped. .IP "\fInicekids\fR" 4 .IX Item "nicekids" If set to anything other than \f(CW0\fR, all child processes of \fBinnd\fR\|(8) will have this \fBnice\fR\|(2) value. This is usually used to give all child processes of \fBinnd\fR\|(8) a lower priority (higher nice value) so that \fBinnd\fR\|(8) can get the lion's share of the \s-1CPU\s0 when it needs it. The default value is \f(CW4\fR. .IP "\fInicenewnews\fR" 4 .IX Item "nicenewnews" If set to anything greater than \f(CW0\fR, all \fBnnrpd\fR\|(8) processes that receive and process a \s-1NEWNEWS\s0 command will \fBnice\fR\|(2) themselves to this value (giving other nnrpd processes a higher priority). The default value is \&\f(CW0\fR. Note that this value will be ignored if set to a lower value than \&\fInicennrpd\fR (or \fInicekids\fR if \fBnnrpd\fR\|(8) is spawned from \fBinnd\fR\|(8)). .IP "\fInicennrpd\fR" 4 .IX Item "nicennrpd" If set to anything greater than \f(CW0\fR, all \fBnnrpd\fR\|(8) processes will \fBnice\fR\|(2) themselves to this value. This gives other news processes a higher priority and can help \fBoverchan\fR\|(8) keep up with incoming news (if that's the object, be sure \fBoverchan\fR\|(8) isn't also set to a lower priority via \&\fInicekids\fR). The default value is \f(CW0\fR, which will cause \fBnnrpd\fR\|(8) processes spawned from \fBinnd\fR\|(8) to use the value of \fInicekids\fR, while \&\fBnnrpd\fR\|(8) run as a daemon will use the system default priority. Note that for \fBnnrpd\fR\|(8) processes spawned from \fBinnd\fR\|(8), this value will be ignored if set to a value lower than \fInicekids\fR. .IP "\fIpauseretrytime\fR" 4 .IX Item "pauseretrytime" Wait for this many seconds before noticing inactive channels. Wait for this many seconds before innd processes articles when it's paused or the number of channel write failures exceeds \fIbadiocount\fR. The default value is \f(CW300\fR. .IP "\fIpeertimeout\fR" 4 .IX Item "peertimeout" How long (in seconds) an \fBinnd\fR\|(8) incoming channel may be inactive before innd closes it. The default value is \f(CW3600\fR (an hour). .IP "\fIrlimitnofile\fR" 4 .IX Item "rlimitnofile" The maximum number of file descriptors that \fBinnd\fR\|(8) or \fBinnfeed\fR\|(8) can have open at once. If \fBinnd\fR\|(8) or \fBinnfeed\fR\|(8) attempts to open more file descriptors than this value, it is possible the program may throttle or otherwise malfunction or suffer reduced functionality. The number of open file descriptors is roughly the maximum number of incoming feeds and outgoing batches for \fBinnd\fR\|(8) added to the number of outgoing streams for \fBinnfeed\fR\|(8) and, if you are using the tradindexed overview method, the value of the \&\fIovercachesize\fR parameter. If \fIrlimitnofile\fR is set to a negative value, the default limit of the operating system will be used; this will normally be adequate on systems other than Solaris. Nearly all operating systems have some hard maximum limit beyond which this value cannot be raised, usually either 256, 1024, or 65536. The default value of this parameter is \f(CW\*(C`\-1\*(C'\fR. .Sp Setting this parameter to \f(CW256\fR on Solaris systems is highly recommended for 32\-bit Solaris versions or 32\-bit applications running on 64\-bit Solaris, as well as 64\-bit Solaris versions prior to 11.0. See the Solaris documentation about file descriptors for more details. .Sp Note for expert users building \s-1INN\s0 from sources: if you need using more than \&\f(CW\*(C`FD_SETSIZE\*(C'\fR file descriptors (as defined in the \fIsys/select.h\fR system header, usually defaulting to 1024), you can increase this value for instance to \f(CW4096\fR by rebuilding \s-1INN\s0 with the \f(CW\*(C`\-DLARGE_FD_SETSIZE=4096\*(C'\fR option given to the compiler. .SS "Paths Names" .IX Subsection "Paths Names" .IP "\fIpatharchive\fR" 4 .IX Item "patharchive" Where to store archived news. The default value is \fIpathspool\fR/archive. .IP "\fIpatharticles\fR" 4 .IX Item "patharticles" The path to where the news articles are stored (for storage methods other than \s-1CNFS\s0). The default value is \fIpathspool\fR/articles. .IP "\fIpathbin\fR" 4 .IX Item "pathbin" The path to the news binaries. The default value is \fIpathnews\fR/bin. .IP "\fIpathcontrol\fR" 4 .IX Item "pathcontrol" The path to the files that handle control messages. The code for handling each separate type of control message is located here. Be very careful what you put in this directory with a name ending in \f(CW\*(C`.pl\*(C'\fR, as it can potentially be a severe security risk. The default value is \&\fIpathbin\fR/control. .IP "\fIpathdb\fR" 4 .IX Item "pathdb" The path to the database files used and updated by the server (currently, \&\fIactive\fR, \fIactive.times\fR, \fIhistory\fR and its indices, and \&\fInewsgroups\fR). The default value is \fIpathnews\fR/db. .IP "\fIpathetc\fR" 4 .IX Item "pathetc" The path to the news configuration files. The default value is \&\fIpathnews\fR/etc. .IP "\fIpathfilter\fR" 4 .IX Item "pathfilter" The path to the Perl and Python filters. The default value is \&\fIpathbin\fR/filter. .IP "\fIpathhttp\fR" 4 .IX Item "pathhttp" Where any \s-1HTML\s0 files (such as periodic status reports) are placed. If the news reports should be available in real-time on the web, the files in this directory should be served by a web server. The default value is the value of \fIpathnews\fR/http. .IP "\fIpathincoming\fR" 4 .IX Item "pathincoming" Location where incoming batched news is stored. The default value is \&\fIpathspool\fR/incoming. .IP "\fIpathlog\fR" 4 .IX Item "pathlog" Where the news log files are written. The default value is \&\fIpathnews\fR/log. .IP "\fIpathnews\fR" 4 .IX Item "pathnews" The home directory of the news user and usually the root of the news hierarchy. There is no default; this parameter must be set in \fIinn.conf\fR or \s-1INN\s0 will refuse to start. .IP "\fIpathoutgoing\fR" 4 .IX Item "pathoutgoing" Default location for outgoing feed files. The default value is \&\fIpathspool\fR/outgoing. .IP "\fIpathoverview\fR" 4 .IX Item "pathoverview" The path to news overview files. The default value is \&\fIpathspool\fR/overview. .IP "\fIpathrun\fR" 4 .IX Item "pathrun" The path to files required while the server is running and run-time state information. This includes lock files and the sockets for communicating with \fBinnd\fR\|(8). This directory and the control sockets in it should be protected from unprivileged users other than the news user. The default value is \fIpathnews\fR/run. .IP "\fIpathspool\fR" 4 .IX Item "pathspool" The root of the news spool hierarchy. This used mostly to set the defaults for other parameters, and to determine the path to the backlog directory for \fBinnfeed\fR\|(8). The default value is \fIpathnews\fR/spool. .IP "\fIpathtmp\fR" 4 .IX Item "pathtmp" Where \s-1INN\s0 puts temporary files. For security reasons, this is not the same as the system temporary files directory (\s-1INN\s0 creates a lot of temporary files with predictable names and does not go to particularly great lengths to protect against symlink attacks and the like; this is safe provided that normal users can't write into its temporary directory). The default value is set at configure time and defaults to \&\fIpathnews\fR/tmp. .SH "EXAMPLE" .IX Header "EXAMPLE" Here is a very minimalist example that only sets those parameters that are required. .PP .Vb 5 \& mta: "/usr/lib/sendmail \-oi \-oem %s" \& ovmethod: tradindexed \& pathhost: news.example.com \& pathnews: /usr/local/news \& hismethod: hisv6 .Ve .PP For a more comprehensive example, see the sample \fIinn.conf\fR distributed with \s-1INN\s0 and installed as a starting point; it contains all of the default values for reference. .SH "HISTORY" .IX Header "HISTORY" Written by Rich \f(CW$alz\fR for InterNetNews and since modified, updated, and reorganized by innumerable other people. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBinews\fR\|(1), \fBinnd\fR\|(8), \fBinnwatch\fR\|(8), \fBlibinn_dbz\fR\|(3), \fBlibinn_uwildmat\fR\|(3), \&\fBmakehistory\fR\|(8), \fBnnrpd\fR\|(8), \fBrnews\fR\|(1). .PP Nearly every program in \s-1INN\s0 uses this file to one degree or another. The above are just the major and most frequently mentioned ones.