Import ezmlm-idx 0.40
[ezmlm] / ezmlm-check.sh
1
2 # [should have a bin/sh line and EZPATH/QMPATH added above by make]
3 #
4 # script to diagnose ezmlm lists
5 # call as is for environment only, or as ezmlm-check 'DIR' for more info
6
7 listsubscribers=yes
8 if [ "$1" = '-S' ] ; then
9 listsubscribers=no
10 shift
11 else
12 if [ "$1" = '-s' ] ; then
13 shift
14 fi
15 fi
16
17 QINJECT="${QMPATH}/bin/qmail-inject"
18 EZLIST="${EZPATH}/ezmlm-list"
19 MYNAME='ezmlm-check'
20 MYDTLINE="Delivered-To: ${MYNAME}"
21 FATAL="${MYNAME}: fatal:"
22 EZERR="??? ERROR:"
23 EZWARN="!!! Warning:"
24 # This should be a ``grep'' that does regexps. Needs to recognize ^ and $.
25 GREP='grep'
26 CAT='cat'
27 CUT='cut'
28 ECHO='echo'
29 # Needed to isolate some lines in the DIR/editor ... files
30 HEAD='head'
31 TAIL='tail'
32 # needed to count characters in $USER
33 WC='wc'
34 # should mark executables with '*' and list one file per line
35 LS='ls -F1'
36 # should list links as: "... symlink -> file"
37 LLS='ls -l'
38 if [ ! -x "$QINJECT" ]; then
39 ${ECHO} "$FATAL edit script to for path to qmail-inject"
40 exit 100
41 fi
42
43 if [ -z "$SENDER" ] ; then
44 RCP="${CAT}"
45 else
46 RCP="$QINJECT"
47 if ${CAT} - | ${GREP} "${MYDTLINE}" >/dev/null 2>&1
48 then
49 ${ECHO} "FATAL this message is looping: it already has my Delivered-To line (#5.4.6)"
50 exit 100
51 fi
52 fi
53
54 if [ ! -z "$1" -a ! -d "$1" ]; then
55 ${ECHO} "$FATAL $1 is not a directory"; exit 100
56 fi
57
58 # reset variables
59 GET=''; DIGEST=''; FLAGARCH=''; FLAGIND=''; INLOCAL=''; INLOCALOK=''; INHOST=''
60 MANAGE=''; OUTLOCAL=''; OUTHOST=''; SPEC=''; SRESTRICT=''; STORE=''; REMOTE=''
61 MODSUB=''; MODPOST=''; SPEC=''
62
63 (
64 ${ECHO} "Delivered-To: ezmlm-check"
65 ${ECHO} "To: $SENDER"
66 ${ECHO} "Subject: ${MYNAME} results"
67 ${ECHO}
68 ${ECHO} "Important environment variables:"
69 ${ECHO}
70 ${ECHO} "SENDER ='$SENDER'"
71 ${ECHO} "NEWSENDER ='$NEWSENDER'"
72 ${ECHO} "RECIPIENT ='$RECIPIENT'"
73 ${ECHO} "USER ='$USER'"
74 ${ECHO} "DEFAULT ='$DEFAULT'"
75 ${ECHO} "LOCAL ='$LOCAL'"
76 ${ECHO} "HOST ='$HOST'"
77 ${ECHO} "---------------------------------------------------"
78 if [ ! -z "$1" ]; then
79 ${ECHO} "Checking basic list setup:"
80 ${ECHO}
81 if [ ! -r "$1/mailinglist" ]; then
82 ${ECHO} "$EZERR $1/mailinglist does not exist"
83 fi
84 if [ -e "$1/num" ]; then
85 if [ ! -w "$1/num" ]; then
86 ${ECHO} "$EZERR $1/num is not writable to $USER"
87 else
88 NUM=`${CAT} "$1/num" | ${HEAD} -1`
89 ${ECHO} "... latest message was message # $NUM"
90 fi
91 else
92 ${ECHO} "... no num. This must be a new list ..."
93 fi
94 ${ECHO}
95 if [ -e "$1/lock" -a ! -w "$1/lock" ]; then
96 ${ECHO} "$EZERR User $USER does not have write premission to $1/lock"
97 fi
98 if [ -e "$1/lockbounce" -a ! -w "$1/lockbounce" ]; then
99 ${ECHO} "$EZERR User $USER does not have write premission to $1/lockbounce"
100 fi
101 if [ ! -r "$1/inlocal" ]; then
102 ${ECHO} "$EZERR $1/inlocal does not exist"
103 elif [ ! -r "$1/inhost" ]; then
104 ${ECHO} "$EZERR $1/inhost does not exist"
105 else
106 INLOCAL=`${CAT} "$1/inlocal"| ${HEAD} -1`
107 INHOST=`${CAT} "$1/inhost"| ${HEAD} -1`
108 if [ -z "$HOST" ]; then
109 ${ECHO} "$EZERR HOST is empty. Likely running from the command"
110 ${ECHO} " line. Run from $1/editor to check if HOST matches"
111 ${ECHO} " $1/inhost and LOCAL matches $1/inlocal."
112 ${ECHO} " Mismatches here are the most common setup error."
113 ${ECHO}
114 else
115 if [ "$HOST" != "$INHOST" ]; then
116 ${ECHO} "$EZERR HOST does not match $1/inhost"
117 else
118 ${ECHO} "... $1/inhost OK"
119 fi
120 if ${ECHO} "$LOCAL" | ${GREP} -G "^$INLOCAL" >/dev/null 2>&1
121 then
122 ${ECHO} "... $1/inlocal OK"
123 else
124 ${ECHO} \
125 "$EZERR LOCAL does not begin with contents of $1/inlocal"
126 fi
127 fi
128 fi
129 if [ ! -r "$1/outlocal" ]; then
130 ${ECHO} "$EZERR $1/outlocal does not exist"
131 else
132 OUTLOCAL=`${CAT} "$1/outlocal"| ${HEAD} -1`
133 fi
134 if [ ! -r "$1/outhost" ]; then
135 ${ECHO} "$EZERR $1/outhost does not exist"
136 else
137 OUTHOST=`${CAT} "$1/outhost"| ${HEAD} -1`
138 fi
139 ${ECHO} "... The list is named ${OUTLOCAL}@${OUTHOST}"
140 if [ "$OUTHOST" != "$INHOST" ]; then
141 HOSTMATCH='1';
142 ${ECHO}
143 ${ECHO} "??? $1/inhost and $1/outhost do not"
144 ${ECHO} " match. This is very unusual ..."
145 fi
146 if ${ECHO} "$INLOCAL" | ${GREP} "^${USER}" >/dev/null ; then
147 USERSTART='1'; INLOCALOK='1'
148 fi
149 if [ -z "$USERSTART" ]; then
150 ${ECHO}
151 ${ECHO} "??? $1/inlocal does not start with the user name."
152 ${ECHO} " This is an error, unless $INLOCAL starts with"
153 ${ECHO} " an alias of \"$USER\"."
154 fi
155 if [ "$INLOCAL" = "$OUTLOCAL" ]; then
156 ${ECHO} "... $1/inlocal matches $1/outlocal"
157 ${ECHO} " suggesting that this is a regular user-owned list."
158 CHARS=`${ECHO} " $USER" | ${WC} -c`
159 LIST=`${ECHO} "$OUTLOCAL" | cut -c$CHARS-`
160 else
161 if ${ECHO} "$INLOCAL" | ${GREP} "$OUTLOCAL$" >/dev/null ; then
162 if [ ! -z "$USERSTART" ]; then
163 ${ECHO} "... It appears that $OUTHOST is a virtual domain"
164 ${ECHO} " controlled by $USER."
165 LIST="$OUTLOCAL"
166 if [ ! -z "$HOSTMATCH" ]; then
167 ${ECHO} " This part of the setup appears correct."
168 fi
169 else
170 ${ECHO}
171 ${ECHO} "$EZWARN $1/inlocal ends with the contents"
172 ${ECHO} " of $1/outlocal, but does not start with"
173 ${ECHO} " $USER. If this message persists when you"
174 ${ECHO} " run this program from $1/editor,"
175 ${ECHO} " there is a setup error."
176 fi
177 else
178 ${ECHO}
179 ${ECHO} "$EZWARN $1/inlocal does not end with the contents"
180 ${ECHO} " of $1/outlocal. This is almost always wrong."
181 fi
182 fi
183 if [ ! -r "$1/editor" ]; then
184 ${ECHO} "$EZERR $1/editor does not exist"
185 else
186 ${ECHO}
187 ${ECHO} "$1/editor:"
188 ${ECHO} "============================"
189 ${CAT} "$1/editor"
190 ${ECHO} "============================"
191 ${ECHO}
192 fi
193 if [ ! -r "$1/manager" ]; then
194 ${ECHO} "$EZERR $1/manager does not exist"
195 else
196 ${ECHO} "$1/manager:"
197 ${ECHO} "============================"
198 ${CAT} "$1/manager"
199 ${ECHO} "============================"
200 ${ECHO}
201 fi
202 if [ ! -r "$1/bouncer" ]; then
203 ${ECHO} "$EZERR $1/bouncer does not exist"
204 else
205 ${ECHO} "$1/bouncer:"
206 ${ECHO} "============================"
207 ${CAT} "$1/bouncer"
208 ${ECHO} "============================"
209 ${ECHO}
210 fi
211 if [ ! -r "$1/owner" ]; then
212 ${ECHO} "$EZERR $1/owner does not exist"
213 else
214 ${ECHO} "$1/owner:"
215 ${ECHO} "============================"
216 ${CAT} "$1/owner"
217 ${ECHO} "============================"
218 ${ECHO}
219 OWNER=`${GREP} "@" < $1/owner`
220 fi
221 if [ ! -r "$1/headeradd" ]; then
222 ${ECHO} "$EZERR $1/headeradd does not exist"
223 else
224 ${ECHO} "$1/headeradd:"
225 ${ECHO} "============================"
226 ${CAT} "$1/headeradd"
227 ${ECHO} "============================"
228 ${ECHO}
229 fi
230 if [ ! -r "$1/headerremove" ]; then
231 ${ECHO} "$EZERR $1/headerremove does not exist"
232 else
233 ${ECHO} "$1/headerremove:"
234 ${ECHO} "============================"
235 ${CAT} "$1/headerremove"
236 ${ECHO} "============================"
237 ${ECHO}
238 fi
239 ${ECHO} "---------------------------------------------------"
240 ${ECHO} "Checking standard options:"
241 ${ECHO}
242 if [ -r "$1/public" ]; then
243 ${ECHO} "... public"
244 else
245 ${ECHO} "... not public"
246 fi
247 if [ -r "$1/archived" ]; then
248 FLAGARCH='1'
249 ${ECHO} "... archived"
250 else
251 ${ECHO} "... not archived"
252 fi
253 if [ -r "$1/indexed" ]; then
254 FLAGARCH='1'
255 FLAGIND='1'
256 ${ECHO} "... indexed"
257 else
258 ${ECHO} "... not indexed"
259 fi
260 if [ ! -z "$FLAGARCH" ]; then
261 if [ ! -d "$1/archive" ]; then
262 ${ECHO} "$EZERR $1/archive is not a directory"
263 else
264 if [ ! -z "$NUM" -a ! -r "$1/archive/0/index" \
265 -a ! -z "$FLAGIND" ]; then
266 ${ECHO} "$EZWARN list is archived, but there is no index."
267 ${ECHO} " Please run ezmlm-idx!"
268 fi
269 fi
270 fi
271 if [ ! -d "$1/bounce" ]; then
272 ${ECHO} "$EZERR $1/bounce is not a directory"
273 fi
274 if [ -r "$1/prefix" ]; then
275 PREFIX=`${HEAD} -1 "$1/prefix"`
276 ${ECHO} "... using $1/prefix as subject prefix: $PREFIX"
277 ${ECHO}
278 fi
279 if [ -r "$1/sublist" ]; then
280 ${ECHO} "... this is a sublist for:"
281 ${HEAD} -1 < "$1/sublist"
282 else
283 ${ECHO} "... not a sublist"
284 fi
285 if [ ! -d "$1/text" ]; then
286 ${ECHO} "$EZERR $1/text is not a directory"
287 fi
288 ${ECHO} "... Contents of $1/text not checked"
289 ${ECHO}
290 if [ ! -z "$OWNER" ]; then
291 ${ECHO} "... Mail to owner goes to: $OWNER"
292 else
293 ${ECHO} "$EZWARN Mail to owner seems not to be forwarded."
294 ${ECHO} " Remember to check the mailbox once in a while!"
295 fi
296 ${ECHO}
297 ${ECHO} "--------------------------------------------------"
298 ${ECHO}
299 ${ECHO} "... Links should be:"
300 ${ECHO} " ~/.qmail-{list} -> $1/editor"
301 ${ECHO} " ~/.qmail-{list}-default -> $1/manager"
302 ${ECHO} " ~/.qmail-{list}-owner -> $1/owner"
303 ${ECHO} " ~/.qmail-{list}-return-default -> $1/bouncer"
304 if [ ! -z "$LIST" -a ! -z "$INLOCALOK" ]; then
305 ${ECHO}
306 ${ECHO} " As far as I can see, '{list}' should be '$LIST'."
307 ${ECHO} " If so and if .qmail files should be in $HOME ..."
308 BN="$HOME/.qmail-$LIST"
309 FN="$BN"
310 if ${LLS} "$FN" 2>/dev/null | ${GREP} "$1/editor$" >/dev/null ; then
311 ${ECHO} " $FN is OK"
312 else
313 ${ECHO} "??? $FN is BAD"
314 fi
315 FN="$BN-default"
316 if ${LLS} "$FN" | ${GREP} "$1/manager$" >/dev/null ; then
317 ${ECHO} " $FN OK"
318 else
319 ${ECHO} "??? $FN is BAD"
320 fi
321 FN="$BN-owner"
322 if ${LLS} "$FN" | ${GREP} "$1/owner$" >/dev/null ; then
323 ${ECHO} " $FN is OK"
324 else
325 ${ECHO} "??? $FN is BAD"
326 fi
327 FN="$BN-return-default"
328 if ${LLS} "$FN" | ${GREP} "$1/bouncer$" >/dev/null ; then
329 ${ECHO} " $FN is OK"
330 else
331 ${ECHO} "??? $FN is BAD"
332 fi
333 fi
334 ${ECHO} "--------------------------------------------------"
335 ${ECHO} "Checking subscribers:"
336 ${ECHO}
337 if [ ! -d "$1/subscribers" ]; then
338 ${ECHO} "$EZERR $1/subscribers is not a directory"
339 else
340 if [ ! -x "$EZLIST" ]; then
341 ${ECHO} "$EZLIST is not available for listing"
342 else
343 if [ "$listsubscribers" = "yes" ] ; then
344 ${ECHO} "... Subscribers are:"
345 if ${EZLIST} "$1" | ${GREP} '@' ; then
346 :
347 else
348 ${ECHO} "$EZWARN no subscribers!"
349 fi
350 else
351 if ${EZLIST} "$1" | ${GREP} '@' >/dev/null 2>&1 ; then
352 ${ECHO} "... There are subscribers."
353 else
354 ${ECHO} "$EZWARN no subscribers!"
355 fi
356 fi
357 fi
358 fi
359 ${ECHO}
360 ${ECHO} "--------------------------------------------------"
361 ${ECHO} "Checking for digest:"
362 ${ECHO}
363 if ${GREP} 'ezmlm-tstdig' < $1/editor >/dev/null 2>&1 ; then
364 if ${GREP} -1 'ezmlm-tstdig' < $1/editor \
365 | ${TAIL} -1 | ${GREP} 'ezmlm-get' >/dev/null; then
366 ${ECHO} "... integrated digest via $1/editor"
367 DIGEST='1'
368 ${ECHO}
369 fi
370 fi
371 if [ -z "$DIGEST" ]; then
372 ${ECHO} "... no digest via $1/editor"
373 else
374 ${ECHO} "... links should be:"
375 ${ECHO} " ~/.qmail-{list}-digest-return-default -> $1/bouncer"
376 ${ECHO} " ~/.qmail-{list}-digest-owner -> $1/owner"
377 if [ ! -z "$LIST" -a ! -z "$INLOCALOK" ]; then
378 ${ECHO}
379 ${ECHO} " As far as I can see, '{list}' should be '$LIST'."
380 ${ECHO} " If so and if .qmail files should be in $HOME ..."
381 BN="$HOME/.qmail-$LIST"
382 FN="$BN-digest-return-default"
383 if ${LLS} "$FN" 2>/dev/null | \
384 ${GREP} "$1/bouncer$" >/dev/null ; then
385 ${ECHO} " $FN is OK"
386 else
387 ${ECHO} "??? $FN is BAD"
388 fi
389 FN="$BN-digest-owner"
390 if ${LLS} "$FN" 2>/dev/null | \
391 ${GREP} "$1/owner$" >/dev/null ; then
392 ${ECHO} " $FN is OK"
393 else
394 ${ECHO} "??? $FN is BAD"
395 fi
396 fi
397 fi
398 if [ -d "$1/digest" ]; then
399 if [ ! -d "$1/digest/subscribers" ]; then
400 ${ECHO} "$EZERR $1/digest exists, but $1/digest/subscribers"
401 ${ECHO} "$EZERR is not a directory"
402 ${ECHO}
403 else
404 if [ ! -x "$EZLIST" ]; then
405 ${ECHO} "$EZLIST is not available for listing"
406 else
407 if [ "$listsubscribers" = "yes" ] ; then
408 ${ECHO}
409 ${ECHO} "... Digest subscribers are:"
410 if ${EZLIST} "$1" | ${GREP} '@' ; then
411 :
412 else
413 ${ECHO} "$EZWARN no subscribers!"
414 fi
415 else
416 if ${EZLIST} "$1" | ${GREP} '@' >/dev/null 2>&1 ; then
417 ${ECHO} "... There are digest subscribers."
418 else
419 ${ECHO} "$EZWARN no subscribers!"
420 fi
421 fi
422 fi
423 ${ECHO}
424 fi
425 fi
426 ${ECHO} "---------------------------------------------------"
427 ${ECHO} "Checking for subscription moderation/remote admin:"
428 ${ECHO}
429 if [ -r "$1/remote" ]; then
430 FLAGMOD='1'
431 ${ECHO} "... set up for remote administration"
432 REMOTE=`${CAT} "$1/remote"| ${HEAD} -1`
433 if ${ECHO} "$REMOTE" | ${GREP} -G "^/" >/dev/null 2>&1
434 then
435 MODDIR="$REMOTE"
436 else
437 MODDIR="$1/mod"
438 fi
439 REMOTE='1'
440 else
441 ${ECHO} "... no remote admin"
442 fi
443 if [ -r "$1/modsub" ]; then
444 FLAGMOD='1'
445 ${ECHO} "... subscription moderated"
446 MODSUB=`${CAT} "$1/modsub"| ${HEAD} -1`
447 if ${ECHO} "$MODSUB" | ${GREP} -G "^/" >/dev/null 2>&1
448 then
449 MODDIR="$MODSUB"
450 elif [ -z "$MODDIR" ]; then
451 MODDIR="$1/mod"
452 fi
453 else
454 ${ECHO} "... no subscription moderation"
455 fi
456 if [ "$FLAGMOD" = '1' ]; then
457 ${ECHO}
458 ${ECHO} "Mods/remote admins stored based in $MODDIR:"
459 ${ECHO}
460 if [ ! -d "$MODDIR" ]; then
461 ${ECHO} "$EZERR moderator dir $MODDIR doesn't exist!"
462 elif [ -e "$MODDIR/lock" -a ! -w "$MODDIR/lock" ]; then
463 ${ECHO} "$EZERR $MODDIR/lock is not writable to user $USER"
464 elif [ ! -x "$EZLIST" ]; then
465 ${ECHO} "${EZLIST} not available for listing"
466 else
467 if ${EZLIST} "$MODDIR" | ${GREP} '@' ; then
468 :
469 else
470 ${ECHO} "$EZERR no subscription moderators/remote admins!"
471 fi
472 fi
473 ${ECHO}
474 fi
475 ${ECHO} "---------------------------------------------------"
476 ${ECHO} "Checking for message moderation:"
477 ${ECHO}
478 if ${GREP} 'ezmlm-gate' < "$1/editor" > /dev/null 2>&1; then
479 GATE='1'
480 fi
481 if ${GREP} 'ezmlm-store' < "$1/editor" > /dev/null 2>&1; then
482 STORE='1'
483 fi
484 FLAGMOD=''
485 if [ -r "$1/modpost" ]; then
486 FLAGMOD='1'
487 MODPOST=`${CAT} "$1/modpost" | ${HEAD} -1`
488 if ${ECHO} "$MODPOST" | ${GREP} -G "^/" >/dev/null 2>&1
489 then
490 MODDIR="$MODPOST"
491 else
492 MODDIR="$1/mod"
493 fi
494 fi
495 if [ "$STORE" = '1' -a -z "$FLAGMOD" ]; then
496 ${ECHO} "??? it looks from $1/editor like the list is set up"
497 ${ECHO} " for message moderation. However, since $1/modpost"
498 ${ECHO} " doesn't exist, ezmlm-store posts them directly. If"
499 ${ECHO} " this is not intended, please create $1/modpost."
500 ${ECHO}
501 FLAGMOD='1'
502 MODDIR="$1/mod"
503 elif [ -z "$STORE" -a -z "$GATE" -a "$FLAGMOD" = '1' ]; then
504 ${ECHO} "??? $1/modpost exists, leading me to think you'd like"
505 ${ECHO} " message moderation, but I can't find any call to"
506 ${ECHO} " ezmlm-store in $1/editor."
507 ${ECHO}
508 elif [ -z "$STORE" -a "$GATE" = '1' ]; then
509 if [ -z "$FLAGMOD" ]; then
510 ${ECHO} "??? The list is set up with ezmlm-gate in $1/editor."
511 ${ECHO} " However, since $1/modpost does not exist all"
512 ${ECHO} " messages will be accepted!"
513 FLAGMOD='1'
514 MODDIR="$1/mod"
515 else
516 ${ECHO} "... The list is set up with ezmlm-gate in $1/editor."
517 ${ECHO} " Since $1/modpost exists, subscriber messages"
518 ${ECHO} " will be accepted and others will be send for"
519 ${ECHO} " moderation."
520 fi
521 fi
522 if [ "$FLAGMOD" = '1' ]; then
523 ${ECHO} "... message moderated"
524 ${ECHO}
525 ${ECHO} "Message moderators based in $MODDIR:"
526 ${ECHO}
527 if [ ! -d "$MODDIR" ]; then
528 ${ECHO} "$EZERR moderator dir $MODDIR doesn't exist!"
529 elif [ -e "$MODDIR/lock" -a ! -w "$MODDIR/lock" ]; then
530 ${ECHO} "$EZERR $MODDIR/lock is not writable to user $USER"
531 elif [ ! -x "$EZLIST" ]; then
532 ${ECHO} "${EZLIST} not available for listing"
533 else
534 if ${EZLIST} "$MODDIR" | ${GREP} '@' ; then
535 :
536 else
537 ${ECHO} "$EZERR no message moderators!"
538 fi
539 fi
540 ${ECHO}
541 MT="120"
542 if [ -r "$1/modtime" ]; then
543 MODTIME=`${CAT} "$1/modtime" | ${HEAD} -1`
544 if [ "$MODTIME" -eq 0 ]; then
545 MT="120"
546 elif [ "$MODTIME" -lt 24 ]; then
547 MT="24"
548 elif [ "$MODTIME" -gt 240 ]; then
549 MT="240"
550 else
551 MT="${MODTIME}"
552 fi
553 fi
554 ${ECHO} "... Messages awaiting moderation time out after $MT hours"
555 if [ ! -d "$1/mod/pending" ]; then
556 ${ECHO} "$EZERR $MODDIR/pending is not a directory"
557 else
558 MODNUM=`${LS} "$1/mod/pending" | ${GREP} -c '*'`
559 ${ECHO} "... there are $MODNUM messages awaiting moderator action"
560 fi
561 if [ ! -d "$1/mod/accepted" ]; then
562 ${ECHO} "$EZERR $MODDIR/accepted is not a directory"
563 fi
564 if [ ! -d "$1/mod/rejected" ]; then
565 ${ECHO} "$EZERR $MODDIR/rejected is not a directory"
566 fi
567 if [ ! -r "$1/moderator" ]; then
568 ${ECHO} "$EZERR $1/moderator is not readable to user $USER"
569 else
570 if ${GREP} 'ezmlm-moderate' < "$1/moderator" >/dev/null 2>&1
571 then
572 :
573 else
574 ${ECHO} "$EZERR $1/moderator lacks ezmlm-moderate entry"
575 fi
576 ${ECHO}
577 ${ECHO} "$1/moderator:"
578 ${ECHO} "============================"
579 ${CAT} "$1/moderator"
580 ${ECHO} "============================"
581 ${ECHO}
582 fi
583 ${ECHO}
584 ${ECHO} "... Links should be:"
585 ${ECHO} " ~/.qmail-{list}-accept-default -> $1/moderator"
586 ${ECHO} " ~/.qmail-{list}-reject-default -> $1/moderator"
587 ${ECHO}
588 if [ ! -z "$LIST" -a ! -z "$INLOCALOK" ]; then
589 ${ECHO}
590 ${ECHO} " As far as I can see, '{list}' should be '$LIST'."
591 ${ECHO} " If so and if .qmail files should be in $HOME ..."
592 BN="$HOME/.qmail-$LIST"
593 FN="$BN-accept-default"
594 if ${LLS} "$FN" 2>/dev/null | \
595 ${GREP} "$1/moderator$" >/dev/null ; then
596 ${ECHO} " $FN is OK"
597 else
598 ${ECHO} "??? $FN is BAD"
599 fi
600 FN="$BN-reject-default"
601 if ${LLS} "$FN" 2>/dev/null | \
602 ${GREP} "$1/moderator$" >/dev/null ; then
603 ${ECHO} " $FN is OK"
604 else
605 ${ECHO} "??? $FN is BAD"
606 fi
607 fi
608 else
609 ${ECHO} "... no message moderation"
610 fi
611 ${ECHO}
612 ${ECHO} "---------------------------------------------------"
613 ${ECHO} "Checking for SENDER checks:"
614 ${ECHO}
615 if ${GREP} 'ezmlm-issubn -n' < "$1/editor" >/dev/null 2>&1 ; then
616 ${ECHO} "... Some type of blacklisting in use"
617 SRESTRICT='1'
618 fi
619 if ${GREP} 'ezmlm-issubn' < "$1/editor" |\
620 ${GREP} -v -- '-n' >/dev/null 2>&1 ; then
621 ${ECHO} "... Some type of SENDER check in use for posts"
622 SRESTRICT='1'
623 fi
624 if [ -z "$SRESTRICT" ]; then
625 ${ECHO} "... no SENDER restrictions found for posts"
626 fi
627 ${ECHO}
628 GET=` ${GREP} 'ezmlm-get' < "$1/manager" | \
629 ${CUT} -d' ' -f2- | ${CUT} -d\' -f1`
630 if ${ECHO} "$GET" | ${GREP} 's' >/dev/null ; then
631 ${ECHO} "... Only subscribers may access the archive"
632 else
633 ${ECHO} "... no SENDER restrictions for archive access"
634 fi
635 ${ECHO}
636 ${ECHO} "---------------------------------------------------"
637 ${ECHO} "Checking for special options:"
638 ${ECHO}
639 MANAGE=` ${GREP} 'ezmlm-manage' < "$1/manager" | \
640 ${CUT} -d' ' -f2- | ${CUT} -d\' -f1`
641 if ${ECHO} "$MANAGE" | ${GREP} 'e' >/dev/null ; then
642 ${ECHO} "... remote editing of $1/text/ files enabled"
643 SPEC='1'
644 fi
645 if ${ECHO} "$MANAGE" | ${GREP} 'l' >/dev/null ; then
646 ${ECHO} "... remote listing of subscribers enabled"
647 SPEC='1'
648 fi
649 if [ "$SPEC" = '1' -a -z "$REMOTE" ] ; then
650 ${ECHO} \
651 "$EZERR but remote admin is not enabled, so this will not work!"
652 fi
653 ${ECHO} "---------------------------------------------------"
654 fi
655 ${ECHO}
656 ${ECHO} "EXT ='$EXT'"
657 ${ECHO} "EXT1 ='$EXT1'"
658 ${ECHO} "EXT2 ='$EXT2'"
659 ${ECHO} "EXT3 ='$EXT3'"
660 ${ECHO} "EXT4 ='$EXT4'"
661 ${ECHO} "DTLINE = $DTLINE"
662 ${ECHO} "RPLINE = $RPLINE"
663 ${ECHO} "UFLINE = $UFLINE"
664 ${ECHO} "---------------------------------------------------"
665 ${ECHO}
666 ${ECHO} "Hope that helps!"
667 ) | "$RCP" || exit 100
668
669 exit 99
670