The introduction of the "Safe= Yes" keyword in 1.7f and the requirement
from some user groups to allow people with traditionally reserved userids
(such as 'root' or 'postmaster') to contribute to mailing lists made it
necessary to give the list owner better control over the list of filtered
addresses. This will also give list owners opting for "Safe= No" (or
faced with badly broken gateways) the ability to immediately react to
mailing loops, rather than waiting for the postmaster to issue a SERVE
OFF command (note that the SERVE OFF command is still honoured for all
lists and remains outside the control of the list owners).
This is implemented by a new list header keyword, "Filter=", which is
checked when a user attempts to post to a list and also by the SUBSCRIBE
command (but not by the ADD command). The first word of this keyword is
either "Only", "Also" or "Safe", and it is followed by a list of patterns
such as 'X400MAIL@*' or '*@*.XYZ.EDU' (without the quotes). If "Also" is
specified, your filter is used in addition to the standard LISTSERV
filter; this is useful to register additional looping mailers, to prevent
users with a broken mail systems from subscribing until they fix it, or
to ban anonymous posters. LISTSERV has two built-in filters, a "minimal"
one which is normally used for all lists and a "safe" one (similar to the
one used by 1.7e) which is used for lists running with "Safe= No". If
your list has "Safe= Yes" (which is the default when running with LMail
or XMAILER R2.10), you can tell LISTSERV to use the "safe" filter anyway
by coding "Filter= Safe,..." (you can add extra addresses if you want,
but you don't have to). There is no option to use the minimal filter with
unsafe lists, as this would quickly lead to mailing loops.
If "Filter= Only" is used, the addresses you specify are the only ones
which LISTSERV prevents from posting to the list; you should not used
this option unless you also code "Safe= Yes", and you will want to ask
your LISTSERV maintainer for permission. In fact, this option has been
added mostly for LISTSERV maintainers with very specific problems to
solve. The minimal filter is very small and you should never need to
override it.
Messages sent to the LISTSERV userid for execution are always checked
with the minimal filter, as people with userids such as 'root' would
otherwise not be allowed to subscribe to lists which were set up to allow
them. This may cause some extra traffic while LISTSERV and various
gateways engage in ping-pong wars, but after 10 iterations the gateways
will be served off and this will stop.
Note that LISTSERV extracts as many e-mail addresses as it can from the
userid being checked and runs them all through the filter. For instance
if your list receives mail from [log in to unmask], LISTSERV
will check [log in to unmask], [log in to unmask] and
'mailer@searn' (via the 'internet.' tag). Generally speaking, userids
intercepted by the 1.7e filter will not pass the safe 1.7f filter.
Release 1.7f will introduce a limited syntax check for list header
keywords. For now keywords are only checked individually (that is,
"Default-Topics= XYZ" will be accepted even though you have "Topics=A,B"
and it is thus not a valid topic). There are 43 keywords and describing
all the invalid combinations is very difficult - especially when taking
conditional default values into account, such as "Safe=" whose default
value depends on the type of mailer you use. Furthermore some keywords
are pretty difficult to check. For instance, "Prime=" cannot be checked
without duplicating the code which implements it and generating all sorts
of error messages instead of skipping incorrect entries; "Peers=" would
requires a lookup in the network tables, which doesn't really bring much
assurance as the typical error is not an incorrect nodeid but a mismatch
among the various peers. The goal is to catch the most common errors, not
to develop an expert system :-) For now, 24 keywords are fully checked
(that is counting a few keywords which can genuinely have any value -
password, list title, etc) and 3 are partially checked. There should be a
half-dozen of other keywords by the time 1.7f goes out, depending on how
much time I have. Here is a sample error report:
-------------------------------------------------------------------------
Date: Mon, 18 Jan 1993 02:45:39 +0100
From: Revised List Processor (1.7e) <[log in to unmask]>
Subject: Command: PUT L201 LIST
To: Eric Thomas <[log in to unmask]>
The following problems have been detected in the list header:
> Default-Options= XYZ,...
Error: Invalid delivery option - "XYZ".
> NATEBOOK= NO
Warning: There is no keyword by that name - check the spelling.
> Filter= YES,...
Error: Invalid parameter value. Choose one from the following (without the
quotes): "Also", "Only" or "Safe".
> Auto-Delete= ...,X
Warning: Extraneous parameter - only one is allowed for this keyword.
> Digest= ...,X1/401,...
Error: Invalid directory specification - incorrect syntax or directory does not
exist.
> Sizelim= XYZ
Error: Value must be numeric.
> Validate= ZLL
Error: Invalid parameter value. Choose one from the following (without the
quotes): "All commands" or "Store only".
PUT operation rejected, old list remains unchanged.
-------------------------------------------------------------------------
Eric
|