This comes directly from SmartList/etc/rc.request (i.e., it is an unmodified installation file).
Consider this recipe:
# # Is it an archive retrieval command? #
:0 HB w * 9876543210^0 ^^(.+$)*Subject:[ ]*(([(<]no(ne| subject\ ( ((file transmission|given))?)[>)])?\ $(.+$)*(^[ ]*)+)?(archives?:?([ ]|$)|\ ((send|get)(me)?|gimme|retrieve|mail|ls|dir(ectory)?|list|show|\ search|[fe]?grep|find|maxfiles|version)([ ]+[^ ]*)?$) * 1^0 B ?? ^^([ ]|$)*\ ((archives?:?($|[ ]+)|\ ((send|get)(me)?|gimme|retrieve|mail|ls|dir(ectory)?|\ list|show|search|[fe]?grep|find|maxfiles|version|help|info)\ ([ ].*)?$)([ ]|$)*)+\ ([^ a-z].*$(.*$(.*$(.*$(.*$)?)?)?)?)?^^ { :0 W * 9876543210^0 !restrict_archive ?? y * 2^0 ? formail -rt -R To: "From " -X "From " | \ multigram -b1 -m -l$submit_threshold -L$domain \ -x$listaddr -x$listreq accept accept2 | arch_retrieve
:0 E fhw | formail -A "X-Diagnostic: Not on the accept list" }
As I remember, this is supposed to be a complete recipe; so where is the closing parenthesis for
9876543210^0 ^^(.+$)*Subject:[ ]*____(____([(<]no(ne| subject\
the marked left paren supposed to go?
Ditto for
# # Is it an unsubscription request? #
:0 EHB * 9876543210^0 ^^(.+$)*Subject:[ ]*____(____[(<]no(ne| subject\
and
# # Is it a subscription request? #
:0 EHB * 9876543210^0 ^^(.+$)*Subject:[ ]*____(____[(<]no(ne| subject\
and
# # Is it an info or help request? Send back the help.txt and the # optional info.txt file. # We do the same on a complete empty mail (except for perhaps a signature). #
:0 EHB * 3^0 ^^(.+$)*Subject:[ ]*\ ____(____([(<]no(ne| subject( ((file transmission|given))?)[>)])?$\ (.+$)*(^[ ]*)+)?[a-z,. ]*(help|info(rmation)?)> * 1^0 ^^(.+$)*Subject:[ ]*\ ____(____[(<]no(ne| subject( ((file transmission|given))?)[>)])?$
As I remember, this is supposed to be a complete recipe; so where is the closing parenthesis for
9876543210^0 ^^(.+$)*Subject:[ ]*____(____([(<]no(ne| subject\
the marked left paren supposed to go?
I think it matches the right paren marked here:
$(.+$)*(^[ ]*)+____)____?(archives?:?([ ]|$)|\
Here's a structured view of that RE, where I've replaced literal parens and angle brackets with X:
(.+$)*Subject:[ ]* ( ([XX]no(ne| subject( (Xfile transmission|given))?)[XX])?$ (.+$)* (^[ ]*)+ )? ( archives?:?([ ]|$)| ((send|get)(me)?|gimme|retrieve|mail|ls|dir(ectory)?|list|show|search|[fe]?grep|find|maxfiles|version) ([ ]+[^ ]*)?$ )
-cary
smartlist@lists.rwth-aachen.de