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