1EXPIRE.CTL(5) InterNetNews Documentation EXPIRE.CTL(5)
2
3
4
6 expire.ctl - Configuration file for article expiration
7
9 The file pathetc/expire.ctl is the default configuration file for
10 expire and expireover, which read it at start-up. It serves two
11 purposes: it defines how long history entries for expired or rejected
12 articles are remembered, and it determines how long articles stored on
13 the server are retained.
14
15 Normally, if all of the storage methods used by the server are self-
16 expiring (such as CNFS), all lines except the "/remember/" setting
17 (described below) are ignored. This can be changed with the -N option
18 to expire or expireover.
19
20 Blank lines and lines beginning with a number sign ("#") are ignored.
21 All other lines should be in one of two formats. The order of the file
22 is significant, and the last matching entry will be used.
23
24 The first format specifies how long to keep history entries for
25 articles that aren't present in the news spool. These are articles
26 that have either already expired, or articles which the server rejected
27 (when remembertrash is set to true in inn.conf). There should be one
28 and only one line in this format, which looks like:
29
30 /remember/:<days>
31
32 where <days> is a decimal number that specifies the minimum number of
33 days a history record for a given message-ID is retained (from its
34 original posting time), regardless of whether the article is present in
35 the spool. (History entries for articles still present in the spool
36 are always retained.)
37
38 The primary reason to retain a record of old articles is in case a peer
39 offers old articles that were previously accepted but have already
40 expired. Without a history record for such articles, the server would
41 accept the article again and readers would see duplicate articles.
42 Articles older than a certain number of days won't be accepted by the
43 server at all (see artcutoff in inn.conf(5) and the -c flag in
44 innd(8)), and this setting should probably match that time period to
45 ensure that the server never accepts duplicates. As the default value
46 for artcutoff is 10 days, it means that "/remember/" should be set to
47 11 days in order to take into account articles whose posting date is
48 one day into the future.
49
50 Most of the lines in this file will be in the second format, which
51 consists of either four or five colon-separated fields:
52
53 <pattern>:<flag>:<min>:<default>:<max>
54
55 if groupbaseexpiry is true in inn.conf (the default), and otherwise:
56
57 <classnum>:<min>:<default>:<max>
58
59 All lines must be in the correct format given the current setting of
60 groupbaseexpiry, and therefore the two formats cannot co-exist in the
61 same file.
62
63 Normally, a rule matches a newsgroup through the combination of the
64 <pattern> and <flag> fields. <pattern> is a uwildmat(3)-style pattern,
65 specifying the newsgroups to which the line is applied. Note that the
66 last matching entry will be used, so general patterns (such as defaults
67 for all groups where <pattern> is "*") should appear at the beginning
68 of the file before more specific settings.
69
70 The <flag> field can be used to further limit newsgroups to which the
71 line applies, and should be chosen from the following set:
72
73 M Only moderated groups
74 U Only unmoderated groups
75 A All groups
76 X Remove the article from all groups it appears in
77
78 One of "M", "U", or "A" must be specified. "X" should be used in
79 combination with one of the other letters, not by itself.
80
81 An expiration policy is applied to every article in a newsgroup it
82 matches. There is no way to set an expiration policy for articles
83 crossposted to groups you don't carry that's different than other
84 articles in the same group. Normally, articles are not completely
85 deleted until they expire out of every group to which they were posted,
86 but if an article is expired following a rule where <flag> contains
87 "X", it is deleted out of all newsgroups to which it was posted
88 immediately.
89
90 If groupbaseexpiry is instead set to false, there is no <pattern> and
91 <flag> field and the above does not apply. Instead, there is a single
92 <classnum> field, which is either a number matching the storage class
93 number specified in storage.conf or "*" to specify a default for all
94 storage classes. All articles stored in a storage class will be
95 expired following the instructions in the line with a matching
96 <classnum>, and when articles are expired, they're always removed from
97 all groups to which they were posted.
98
99 The remaining three fields are the same in either format, and are used
100 to determine how long an article should be kept from its original
101 arrival time (unless the -p flag is passed to expire(8) or
102 expireover(8), in which case its original posting time is used). Each
103 field should be either a decimal number of days (fractions like 8.5 are
104 allowed, but remember that articles are only removed when expire or
105 expireover is run, normally once a day by news.daily) or the word
106 "never".
107
108 The middle field, <default>, will be used as the expiration period for
109 most articles. The other two fields, <min> and <max>, only come into
110 play if the article requests a particular expiration date with an
111 Expires: header. Articles with an Expires: header will be expired at
112 the date given in that header, subject to the constraints that they
113 will be retained at least <min> days and no longer than <max> days.
114
115 If <min> is set to "never", no article matching that line will ever be
116 expired. If <default> is set to "never", no article matching that line
117 without an explicit Expires: header will ever be expired. If <max> is
118 set to "never", Expires: headers will be honored no matter how far into
119 the future they are.
120
121 One should think of the fields as a lower bound, the default, and an
122 upper bound. Since most articles do not have an Expires: header, the
123 second field is the most important and most commonly applied.
124
125 Articles that do not match any expiration rule will not be expired, but
126 this is considered an error and will result in a warning. There should
127 always be a default line (a line with a <pattern> of "*" and <flag> of
128 "A", or a line with a <classnum> of "*"), which can explicitly state
129 that articles should never expire by default if that's the desired
130 configuration. The default line should generally be the first line of
131 the file (except for "/remember/") so that other expiration rules can
132 override it.
133
134 It is often useful to honor the Expires: header in articles, especially
135 those in moderated groups. To do this, set <min> to zero, <default> to
136 whatever normal expiration you wish, and <max> to "never" or some large
137 number, like 365 days for a maximum article life of a year.
138
139 To ignore any Expires: header, set all three fields to the same value.
140
142 When groupbaseexpiry is true (the default):
143
144 # Keep expired article history for 11 days, matching artcutoff plus one.
145 /remember/:11
146
147 # Most articles stay for two weeks, ignoring Expires: headers.
148 *:A:14:14:14
149
150 # Accept Expires: headers in moderated groups for up to a year and
151 # retain moderated groups for a bit longer.
152 *:M:1:30:365
153
154 # Keep local groups for a long time and local project groups forever.
155 example.*:A:1:90:90
156 example.project.*:A:never:never:never
157
158 When groupbaseexpiry is false, for class-based expiration:
159
160 # Keep expired article history for 11 days, matching artcutoff plus one.
161 /remember/:11
162
163 # Set a default expiration of seven days and honour Expires: headers
164 # within reasonable limits.
165 *:1:7:35
166
167 # Class 0 is retained for two weeks and honor Expires: headers
168 # within reasonable limits.
169 0:1:14:65
170
172 Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews. Converted
173 to POD by Russ Allbery <eagle@eyrie.org>.
174
175 $Id: expire.ctl.pod 9767 2014-12-07 21:13:43Z iulius $
176
178 expire(8), expireover(8), inn.conf(5), innd(8), news.daily(8),
179 storage.conf(5), uwildmat(3).
180
181
182
183INN 2.6.3 2015-09-12 EXPIRE.CTL(5)