2866b9166b610e0599963d3702d3ec7913832364
[ezmlm] / ezmlm.5
1 .TH ezmlm 5
2 .SH NAME
3 ezmlm \- format of ezmlm directory
4 .SH OVERVIEW
5 An
6 .B ezmlm
7 directory,
8 .IR dir ,
9 stores information about an
10 .B ezmlm
11 mailing list.
12 .B ezmlm-make
13 creates
14 .IR dir ;
15 .B ezmlm-sub
16 and
17 .B ezmlm-unsub
18 manipulate the subscriber list stored under
19 .IR dir ;
20 .B ezmlm-manage
21 handles administrative requests automatically;
22 .B ezmlm-send
23 sends a message to all subscribers listed in
24 .IR dir .
25 .SH SUBSCRIBERS
26 .I dir\fB/subscribers
27 is a directory containing the subscriber list.
28 .B ezmlm-manage
29 allows automatic subscription if
30 .I dir\fB/public
31 exists.
32
33 The list is hashed into 53 files, named
34 .B @
35 through
36 .B t
37 in ASCII.
38 A nonexistent file is treated as an empty file.
39
40 Each file contains a series of addresses.
41 An address can be any string of non-NUL characters up to 400 bytes long.
42 Each address is preceded by the letter T and followed by a NUL.
43
44 For reliability,
45 when an address is added to or removed from the mailing list,
46 the relevant file is recreated under a temporary name
47 inside
48 .I dir\fB/subscribers
49 and then moved into place.
50
51 .I dir\fB/key
52 is a binary file.
53 .B ezmlm-manage
54 uses
55 .I dir\fB/key
56 to create confirmation numbers.
57 Anyone who can guess the contents of
58 .I dir\fB/key
59 can forge subscription requests.
60 .B ezmlm-make
61 does not put much effort into making
62 .I dir\fB/key
63 difficult to guess;
64 for better security, you should add some random garbage to
65 .IR dir\fB/key .
66 .SH ARCHIVE
67 .I dir\fB/archive
68 is a directory containing messages previously sent to subscribers.
69 .B ezmlm-send
70 archives all new messages if
71 .I dir\fB/archived
72 exists.
73
74 Messages sent to the mailing list are numbered from 1 upwards,
75 whether or not they are archived.
76 .I dir\fB/num
77 is the number of messages sent so far.
78
79 .I dir\fB/archive
80 has subdirectories,
81 each subdirectory storing up to 100 messages.
82 Message number 100m+n, with n between 0 and 99, is stored in
83 .IR dir\fB/archive/\fIm\fB/\fIn .
84 For example, message number 15307 is stored in
85 .IR dir\fB/archive/153/07 .
86
87 .B ezmlm-manage
88 will ignore message files without the owner-execute bit set.
89 .B ezmlm-send
90 turns on the owner-execute bit after safely writing the message to disk.
91 .SH BOUNCES
92 .I dir\fB/bounce
93 is a directory containing bounce messages.
94 .B ezmlm-return
95 stores several types of files here.
96 .SH "DELIVERY INSTRUCTIONS"
97 .B ezmlm-make
98 sets up four files to control mailing list deliveries.
99 Each file is a series of delivery instructions in
100 .B dot-qmail
101 format.
102
103 .I dir\fB/editor
104 handles incoming mailing list submissions.
105 .B ezmlm-make
106 sets up
107 .I dir\fB/editor
108 to invoke
109 .B ezmlm-send
110 to immediately forward each message to all subscribers
111 and then to run
112 .BR ezmlm-warn .
113
114 .I dir\fB/owner
115 handles incoming messages for the mailing list's owner.
116 .B ezmlm-make
117 sets up
118 .I dir\fB/owner
119 to store messages in
120 .I dir\fB/Mailbox
121 and then to run
122 .BR ezmlm-warn .
123
124 .I dir\fB/bouncer
125 handles incoming bounce messages.
126 .B ezmlm-make
127 sets up
128 .I dir\fB/bouncer
129 to invoke
130 .B ezmlm-return
131 and then
132 .BR ezmlm-warn .
133
134 .I dir\fB/manager
135 handles incoming administrative requests.
136 .B ezmlm-make
137 sets up
138 .I dir\fB/manager
139 to invoke
140 .B ezmlm-manage
141 and then
142 .BR ezmlm-warn .
143 .SH TEXT
144 .I dir\fB/text
145 is a directory
146 containing files sent out by
147 .B ezmlm-manage
148 in response to administrative requests:
149 .TP 15
150 .B top
151 Introducing
152 .BR ezmlm .
153 This is placed at the top of each response.
154 .TP
155 .B bottom
156 Explaining how to use
157 .BR ezmlm .
158 This is placed at the bottom of each response.
159 .TP
160 .B sub-confirm
161 Explaining how to confirm a subscription request.
162 .TP
163 .B sub-ok
164 Acknowledging successful subscription.
165 .TP
166 .B sub-nop
167 Acknowledging a subscription request for an address already
168 on the mailing list.
169 .TP
170 .B sub-bad
171 Rejecting a bad subscription confirmation number.
172 .TP
173 .B unsub-confirm
174 Explaining how to confirm an unsubscription request,
175 and explaining how to figure out the subscription address.
176 .TP
177 .B unsub-ok
178 Acknowledging successful unsubscription.
179 .TP
180 .B unsub-nop
181 Acknowledging an unsubscription request for an address not
182 on the mailing list.
183 .TP
184 .B unsub-bad
185 Rejecting a bad unsubscription confirmation number.
186 .TP
187 .B get-bad
188 Rejecting a bad archive retrieval request.
189 .TP
190 .B bounce-warn
191 Pointing out that messages have bounced.
192 .TP
193 .B bounce-probe
194 Pointing out that a warning message has bounced.
195 .TP
196 .B bounce-num
197 Explaining that
198 .B ezmlm-return
199 has kept a list of bounced message numbers.
200 .TP
201 .B bounce-bottom
202 Separating the bounce message.
203 .PP
204 .B ezmlm-manage
205 replaces the line
206 .B !A
207 in any of these files
208 with the name of the subscription address.
209 It replaces the line
210 .B !R
211 in
212 .B sub-confirm
213 and
214 .B unsub-confirm
215 with the address that the subscriber must reply to.
216 .SH "OUTGOING MESSAGE EDITING"
217 .I dir\fB/headerremove
218 is a list of bad header field names,
219 one per line.
220 .B ezmlm-send
221 removes these header fields from all outgoing messages.
222 .B ezmlm-make
223 sets up
224 .I dir\fB/headerremove
225 to remove
226 .BR Return-Path ,
227 .BR Return-Receipt-To ,
228 and
229 .B Return-Path
230 fields.
231
232 .I dir\fB/headeradd
233 is a list of new header fields.
234 .B ezmlm-send
235 adds these fields to every outgoing message.
236 .B ezmlm-make
237 sets up
238 .I dir\fB/headeradd
239 with no new fields.
240 .SH MISCELLANY
241 The first line of
242 .I dir\fB/mailinglist
243 is a line of text.
244 .B ezmlm-send
245 creates a new
246 .B Mailing-List
247 field, showing the contents of
248 .IR dir\fB/mailinglist ,
249 in every outgoing message.
250
251 The first lines of
252 .I dir\fB/outlocal
253 and
254 .I dir\fB/outhost
255 give the outgoing name of the mailing list.
256 These are used by
257 .B ezmlm-manage
258 and
259 .B ezmlm-send
260 to construct sender addresses for outgoing messages.
261
262 The first lines of
263 .I dir\fB/inlocal
264 and
265 .I dir\fB/inhost
266 give the incoming name of the mailing list.
267 These are used by
268 .B ezmlm-manage
269 to parse incoming envelopes.
270 Normally
271 .I inlocal
272 and
273 .I inhost
274 are the same as
275 .I outlocal
276 and
277 .IR outhost ,
278 but sometimes they are different,
279 with
280 .I outlocal\fB@\fIouthost
281 forwarded to
282 .IR inlocal\fB@\fIinhost .
283
284 If
285 .I dir\fB/sublist
286 exists,
287 this mailing list is a sublist,
288 redistributing messages from a parent mailing list.
289 The first line of
290 .I dir\fB/sublist
291 is the name of the parent list.
292 This affects the behavior of
293 .BR ezmlm-send .
294
295 .I dir\fB/lock
296 is an empty file.
297 Any program that reads or writes the subscriber list,
298 or adds messages to the archive,
299 locks
300 .IR dir\fB/lock .
301
302 .I dir\fB/Log
303 is an advisory log of subscription and unsubscription actions.
304 .B WARNING:
305 .B Log
306 is not protected against system crashes.
307 Log entries may be missing or corrupted if the system goes down.
308 .SH "SEE ALSO"
309 ezmlm-list(1),
310 ezmlm-make(1),
311 ezmlm-manage(1),
312 ezmlm-return(1),
313 ezmlm-send(1),
314 ezmlm-sub(1),
315 ezmlm-unsub(1),
316 ezmlm-warn(1),
317 dot-qmail(5)