.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SYMPA_SCENARIO 5" .TH SYMPA_SCENARIO 5 "2020-12-30" "6.2.58" "sympa 6.2.58" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" sympa_scenario \- Authorization scenario .SH "SYNOPSIS" .IX Header "SYNOPSIS" An example \fIdel.auth\fR file: .PP .Vb 2 \& title deletion performed only by list owners, need authentication \& title.es eliminacin reservada slo para el propietario, necesita autentificacin \& \& is_owner([listname],[sender]) smtp \-> request_auth \& is_listmaster([sender]) smtp \-> request_auth \& true() md5,smime \-> do_it .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" .SS "File format" .IX Subsection "File format" Basically, a scenario file is composed of titles on the first lines and a set of rules on the following lines. .PP Rules consist of one or more line in the form: .PP .Vb 1 \& condition authentication_methods \-> action .Ve .PP Some terms of conditions may take one or more arguments. The arguments are variables or literals (see \*(L"Terms of conditions\*(R", \&\*(L"Variables\*(R"). .PP Authentication methods is a comma-separated list of one or more methods (see \*(L"Authentication methods\*(R"). .PP Some actions may have optional modifiers (see \*(L"Actions\*(R"). .PP \fITerms of conditions\fR .IX Subsection "Terms of conditions" .ie n .IP """true"" ""("" "")""" 4 .el .IP "\f(CWtrue\fR \f(CW(\fR \f(CW)\fR" 4 .IX Item "true ( )" Always returns true. .ie n .IP """equal"" ""("" \fIvar1\fR"","" \fIvar2\fR "")""" 4 .el .IP "\f(CWequal\fR \f(CW(\fR \fIvar1\fR\f(CW,\fR \fIvar2\fR \f(CW)\fR" 4 .IX Item "equal ( var1, var2 )" Tests if two arguments are equal. .ie n .IP """is_subscriber"" ""("" \fIlistname\fR"","" \fIvar\fR "")""" 4 .el .IP "\f(CWis_subscriber\fR \f(CW(\fR \fIlistname\fR\f(CW,\fR \fIvar\fR \f(CW)\fR" 4 .IX Item "is_subscriber ( listname, var )" .PD 0 .ie n .IP """is_owner"" ""("" \fIlistname\fR"","" \fIvar\fR "")""" 4 .el .IP "\f(CWis_owner\fR \f(CW(\fR \fIlistname\fR\f(CW,\fR \fIvar\fR \f(CW)\fR" 4 .IX Item "is_owner ( listname, var )" .ie n .IP """is_editor"" ""("" \fIlistname\fR"","" \fIvar\fR "")""" 4 .el .IP "\f(CWis_editor\fR \f(CW(\fR \fIlistname\fR\f(CW,\fR \fIvar\fR \f(CW)\fR" 4 .IX Item "is_editor ( listname, var )" .PD Tests if \fIvar\fR is the subscriber, owner or editor of the list \fIlistname\fR. \&\fIlistname\fR is the variable \f(CW\*(C`[listname]\*(C'\fR or list address, "\fIname\fR\*(L" or \&\*(R"\fIname\fR\f(CW\*(C`@\*(C'\fR\fIdomain\fR". .ie n .IP """is_listmaster"" ""("" \fIvar\fR "")""" 4 .el .IP "\f(CWis_listmaster\fR \f(CW(\fR \fIvar\fR \f(CW)\fR" 4 .IX Item "is_listmaster ( var )" Tests if \fIvar\fR is the listmaster. .ie n .IP """less_than"" ""("" \fIvar1\fR"","" \fIvar2\fR "")""" 4 .el .IP "\f(CWless_than\fR \f(CW(\fR \fIvar1\fR\f(CW,\fR \fIvar2\fR \f(CW)\fR" 4 .IX Item "less_than ( var1, var2 )" Tests if \fIvar1\fR is less than \fIvar2\fR. .ie n .IP """match"" ""("" \fIvar\fR"","" ""/""\fIperl_regexp\fR""/"" "")""" 4 .el .IP "\f(CWmatch\fR \f(CW(\fR \fIvar\fR\f(CW,\fR \f(CW/\fR\fIperl_regexp\fR\f(CW/\fR \f(CW)\fR" 4 .IX Item "match ( var, /perl_regexp/ )" Tests if \fIvar\fR matches with \fIperl_regexp\fR. .Sp \&\fIperl_regexp\fR is a perl regular expression. Don't forget to escape special characters (\f(CW\*(C`^\*(C'\fR, \f(CW\*(C`$\*(C'\fR, \f(CW\*(C`{\*(C'\fR, \f(CW\*(C`(\*(C'\fR, ...): Check \fBperlre\fR\|(1) for regular expression syntax. It can contain the string \f(CW\*(C`[domain]\*(C'\fR (interpreted at run time as the list or robot domain). .Sp Note: Sympa prior to 6.2.32 recognized \f(CW\*(C`[host]\*(C'\fR instead of \f(CW\*(C`[domain]\*(C'\fR. .ie n .IP """newer"" ""("" \fIdate\fR"","" \fIdate\fR "")""" 4 .el .IP "\f(CWnewer\fR \f(CW(\fR \fIdate\fR\f(CW,\fR \fIdate\fR \f(CW)\fR" 4 .IX Item "newer ( date, date )" Returns true if first date is posterior to the second .ie n .IP """older"" ""("" \fIdate\fR"","" \fIdate\fR "")""" 4 .el .IP "\f(CWolder\fR \f(CW(\fR \fIdate\fR\f(CW,\fR \fIdate\fR \f(CW)\fR" 4 .IX Item "older ( date, date )" Returns true if first date is anterior to the second date .Sp \&\fIdate\fR is Unix time or the string "\fIn\fR\f(CW\*(C`y\*(C'\fR\fIn\fR\f(CW\*(C`m\*(C'\fR\fIn\fR\f(CW\*(C`d\*(C'\fR\fIn\fR\f(CW\*(C`h\*(C'\fR\fIn\fR\f(CW\*(C`min\*(C'\fR\fIn\fR\f(CW\*(C`sec\*(C'\fR", where each \fIn\fR is a number. .ie n .IP """search"" ""("" \fInamed_filter_file\fR"","" \fIvar\fR"")""" 4 .el .IP "\f(CWsearch\fR \f(CW(\fR \fInamed_filter_file\fR\f(CW,\fR \fIvar\fR\f(CW)\fR" 4 .IX Item "search ( named_filter_file, var)" Tests if \fIvar\fR is found by named filter. .Sp \&\fInamed_filter_file\fR is a file name ending with \f(CW\*(C`.ldap\*(C'\fR, \f(CW\*(C`.sql\*(C'\fR or \f(CW\*(C`.txt\*(C'\fR. .ie n .IP """verify_netmask"" ""("" \fInetwork_block\fR "")""" 4 .el .IP "\f(CWverify_netmask\fR \f(CW(\fR \fInetwork_block\fR \f(CW)\fR" 4 .IX Item "verify_netmask ( network_block )" Tests if \f(CW\*(C`REMOTE_ADDR\*(C'\fR \s-1CGI\s0 environment variable matches with \&\fInetwork_block\fR. .Sp This allows the user to configure their local network to only be accessible to those that are members of it. .ie n .IP """CustomCondition::""\fIpackage_name\fR ""("" \fIarguments\fR, ... "")""" 4 .el .IP "\f(CWCustomCondition::\fR\fIpackage_name\fR \f(CW(\fR \fIarguments\fR, ... \f(CW)\fR" 4 .IX Item "CustomCondition::package_name ( arguments, ... )" Evaluates custom condition. \&\fIpackage_name\fR is the name of a Perl package in \&\fI\f(CI$SYSCONFDIR\fI/custom_conditions/\fR (lowercase). .PP \fIVariables\fR .IX Subsection "Variables" .ie n .IP """[custom_vars\->""\fIcustom_var_name\fR""]""" 4 .el .IP "\f(CW[custom_vars\->\fR\fIcustom_var_name\fR\f(CW]\fR" 4 .IX Item "[custom_vars->custom_var_name]" Allows you to introduce custom parameters in your scenario. \&\fIcustom_var_name\fR is the name of the custom parameter you want to use. .ie n .IP """[date]""" 4 .el .IP "\f(CW[date]\fR" 4 .IX Item "[date]" Date of reception of the message. .ie n .IP """[domain]""" 4 .el .IP "\f(CW[domain]\fR" 4 .IX Item "[domain]" Mail domain of current list. .Sp Note: This variable was introduced by Sympa 6.2.32. Previous versions used a variable \f(CW\*(C`[conf\->host]\*(C'\fR (obsoleted) instead. .ie n .IP """[env\->""\fIenv_var\fR""]""" 4 .el .IP "\f(CW[env\->\fR\fIenv_var\fR\f(CW]\fR" 4 .IX Item "[env->env_var]" \&\fIenv_var\fR is the name of \s-1CGI\s0 environment variable (note that it is case-sensitive). .ie n .IP """[is_bcc]""" 4 .el .IP "\f(CW[is_bcc]\fR" 4 .IX Item "[is_bcc]" Set to 1 if the list is neither in To: nor Cc: field. .ie n .IP """[listname]""" 4 .el .IP "\f(CW[listname]\fR" 4 .IX Item "[listname]" Name of current list. .ie n .IP """[msg_encrypted]""" 4 .el .IP "\f(CW[msg_encrypted]\fR" 4 .IX Item "[msg_encrypted]" Set to "\f(CW\*(C`smime\*(C'\fR" if the message was S/MIME encrypted. .ie n .IP """[msg_header\->""\fIfield_name\fR""]""" 4 .el .IP "\f(CW[msg_header\->\fR\fIfield_name\fR\f(CW]\fR" 4 .IX Item "[msg_header->field_name]" .PD 0 .ie n .IP """[msg_header\->""\fIfield_name\fR""][""\fIindex\fR""]""" 4 .el .IP "\f(CW[msg_header\->\fR\fIfield_name\fR\f(CW][\fR\fIindex\fR\f(CW]\fR" 4 .IX Item "[msg_header->field_name][index]" .PD Value of message header field, available only when evaluating the authorization scenario for sending messages. It can be used, for example, to require editor validation for multipart messages. Optional \fIindex\fR may be integer (may be less than \f(CW0\fR) to choose particular entry from multiple fields. .ie n .IP """[msg_part\->type]""" 4 .el .IP "\f(CW[msg_part\->type]\fR" 4 .IX Item "[msg_part->type]" .PD 0 .ie n .IP """[msg_part\->body]""" 4 .el .IP "\f(CW[msg_part\->body]\fR" 4 .IX Item "[msg_part->body]" .PD The \s-1MIME\s0 content types and bodies; the body is available for \s-1MIME\s0 parts in text/xxx format only. .ie n .IP """[previous_email]""" 4 .el .IP "\f(CW[previous_email]\fR" 4 .IX Item "[previous_email]" Old email when changing subscription email in preference page. .ie n .IP """[sender]""" 4 .el .IP "\f(CW[sender]\fR" 4 .IX Item "[sender]" The email address of the current user (used on web or mail interface). Default value is \*(L"nobody\*(R". .ie n .IP """[topic]""" 4 .el .IP "\f(CW[topic]\fR" 4 .IX Item "[topic]" Topic of the message. This variable has a value if any of the following \&\f(CW\*(C`[topic_*]\*(C'\fR variables has a value. .ie n .IP """[topic_auto]""" 4 .el .IP "\f(CW[topic_auto]\fR" 4 .IX Item "[topic_auto]" Topic of the message if it has been automatically tagged. .ie n .IP """[topic_editor]""" 4 .el .IP "\f(CW[topic_editor]\fR" 4 .IX Item "[topic_editor]" Topic of the message if it has been tagged by editor. .ie n .IP """[topic_needed]""" 4 .el .IP "\f(CW[topic_needed]\fR" 4 .IX Item "[topic_needed]" The message has not got any topic and message topic are required for the list. .ie n .IP """[topic_sender]""" 4 .el .IP "\f(CW[topic_sender]\fR" 4 .IX Item "[topic_sender]" Topic of the message if it has been tagged by sender. .ie n .IP """[user_attributes\->""\fIuser_attributes_key_word\fR""]""" 4 .el .IP "\f(CW[user_attributes\->\fR\fIuser_attributes_key_word\fR\f(CW]\fR" 4 .IX Item "[user_attributes->user_attributes_key_word]" \&\fIuser_attributes_key_word\fR is one of the names of user attributes provided by the \s-1SSO\s0 system via environment variables. Available only if user authenticated with a \f(CW\*(C`generic_sso\*(C'\fR. .PP \fIAuthentication methods\fR .IX Subsection "Authentication methods" .PP The e\-mail of authenticated user is given by \f(CW\*(C`[sender]\*(C'\fR variable. If it is not given, '\f(CW\*(C`nobody\*(C'\fR' will be set. .ie n .IP """smtp""" 4 .el .IP "\f(CWsmtp\fR" 4 .IX Item "smtp" Default method. No actual authentication, and if any, sender of the message is used. .ie n .IP """dkim""" 4 .el .IP "\f(CWdkim\fR" 4 .IX Item "dkim" Authenticated by \s-1DKIM\s0 signature. .ie n .IP """md5""" 4 .el .IP "\f(CWmd5\fR" 4 .IX Item "md5" Authenticated by web authentication (password), or by authentication key in e\-mail message. .ie n .IP """smime""" 4 .el .IP "\f(CWsmime\fR" 4 .IX Item "smime" Authenticated by S/MIME signature, or \s-1TLS\s0 client certificate. .PP \fIActions\fR .IX Subsection "Actions" .PP An action consists of an action name and optional modifiers. .PP Action names: .ie n .IP """do_it""" 4 .el .IP "\f(CWdo_it\fR" 4 .IX Item "do_it" Allows operation. .ie n .IP """editor""" 4 .el .IP "\f(CWeditor\fR" 4 .IX Item "editor" The message will be forwarded to list editor. .ie n .IP """editorkey""" 4 .el .IP "\f(CWeditorkey\fR" 4 .IX Item "editorkey" The message will be held for moderation by list editor. .ie n .IP """listmaster""" 4 .el .IP "\f(CWlistmaster\fR" 4 .IX Item "listmaster" Same as \f(CW\*(C`do_it\*(C'\fR but makes newly created list be pending. .ie n .IP """owner""" 4 .el .IP "\f(CWowner\fR" 4 .IX Item "owner" The operation is held and waits for approval by list owner. .ie n .IP """reject""" 4 .el .IP "\f(CWreject\fR" 4 .IX Item "reject" Denies operation. .ie n .IP """request_auth""" 4 .el .IP "\f(CWrequest_auth\fR" 4 .IX Item "request_auth" The operation is held and waits for confirmation by the user. .PP Modifiers: .ie n .IP """([email])""" 4 .el .IP "\f(CW([email])\fR" 4 .IX Item "([email])" Only for \f(CW\*(C`request_auth\*(C'\fR action. Sends authentication request to the target user of operation (given as the value of "\f(CW\*(C`[email]\*(C'\fR" variable) instead of original sender. .Sp Note that \f(CW\*(C`[email]\*(C'\fR is a literal and no other variable names can't be used. .ie n .IP ""","" ""notify""" 4 .el .IP "\f(CW,\fR \f(CWnotify\fR" 4 .IX Item ", notify" Only for \f(CW\*(C`do_it\*(C'\fR and \f(CW\*(C`listmaster\*(C'\fR actions. Sends a notification to list owner. .ie n .IP ""","" ""quiet""" 4 .el .IP "\f(CW,\fR \f(CWquiet\fR" 4 .IX Item ", quiet" Sends no notification to the message sender. .ie n .IP """(reason=\*(Aq""\fIreason_key\fR""\*(Aq)""" 4 .el .IP "\f(CW(reason=\*(Aq\fR\fIreason_key\fR\f(CW\*(Aq)\fR" 4 .IX Item "(reason=reason_key)" Only for \f(CW\*(C`reject\*(C'\fR action. Matches a key in \fImail_tt2/authorization_reject.tt2\fR template corresponding to an information message about the reason of the reject of the user. \&\fIreason_key\fR have to be a static string enclosed by \f(CW\*(Aq...\*(Aq\fR. .ie n .IP """(tt2=\*(Aq""\fItpl_name\fR""\*(Aq)""" 4 .el .IP "\f(CW(tt2=\*(Aq\fR\fItpl_name\fR\f(CW\*(Aq)\fR" 4 .IX Item "(tt2=tpl_name)" Only for \f(CW\*(C`reject\*(C'\fR action. Corresponding template (\fItpl_name\fR\f(CW\*(C`.tt2\*(C'\fR) is sent to the sender. \&\fItpl_name\fR have to be a static string enclosed by \f(CW\*(Aq...\*(Aq\fR. .SS "Formal syntax" .IX Subsection "Formal syntax" # Below is the formal syntax definition by modified \s-1BNF.\s0 .PP rule : condition spaces auth_list \*(L"\->\*(R" action .PP # Condition .PP condition : \*(L"!\*(R" condition | \*(L"true\*(R" \*(L"(\*(R" \*(L")\*(R" | \*(L"equal\*(R" \*(L"(\*(R" var \*(L",\*(R" var \*(L")\*(R" | \*(L"is_editor\*(R" \*(L"(\*(R" listname \*(L",\*(R" var \*(L")\*(R" | \*(L"is_listmaster\*(R" \*(L"(\*(R" var \*(L")\*(R" | \*(L"is_owner\*(R" \*(L"(\*(R" listname \*(L",\*(R" var \*(L")\*(R" | \*(L"is_subscriber\*(R" \*(L"(\*(R" listname \*(L",\*(R" var \*(L")\*(R" | \*(L"less_than\*(R" \*(L"(\*(R" var \*(L",\*(R" var \*(L")\*(R" | \*(L"match\*(R" \*(L"(\*(R" var \*(L",\*(R" \*(L"/\*(R" perl_regexp \*(L"/\*(R" \*(L")\*(R" | \*(L"newer\*(R" \*(L"(\*(R" date \*(L",\*(R" date \*(L")\*(R" | \*(L"older\*(R" \*(L"(\*(R" date \*(L",\*(R" date \*(L")\*(R" | \*(L"search\*(R" \*(L"(\*(R" named_filter_file \*(L")\*(R" | \*(L"verify_netmask\*(R" \*(L"(\*(R" network_block \*(L")\*(R" | \*(L"CustomCondition::\*(R" package_name \*(L"(\*(R" var* \*(L")\*(R" .PP var : \*(L"[email]\*(R" | \*(L"[conf\->\*(R" conf_key_word \*(L"]\*(R" | \*(L"[current_date]\*(R" | \*(L"[custom_vars\->\*(R" custom_var_name \*(L"]\*(R" | \*(L"[env\->\*(R" env_var \*(L"]\*(R" | \*(L"[is_bcc]\*(R" | \*(L"[list\->\*(R" list_key_word \*(L"]\*(R" | \*(L"[msg_body]\*(R" | \*(L"[msg_encrypted]\*(R" | \*(L"[msg_header\->\*(R" field_name \*(L"]\*(R" \*(L"[\*(R" index \*(L"]\*(R" | \*(L"[msg_header\->\*(R" field_name \*(L"]\*(R" | \*(L"[msg_part\->type]\*(R" | \*(L"[msg_part\->body]\*(R" | \*(L"[previous_email]\*(R" | \*(L"[sender]\*(R" | \*(L"[subscriber\->\*(R" subscriber_key_word \*(L"]\*(R" | \*(L"[topic]\*(R" | \*(L"[topic_auto]\*(R" | \*(L"[topic_editor]\*(R" | \*(L"[topic_needed]\*(R" | \*(L"[topic_sender]\*(R" | \*(L"[user\->\*(R" user_key_word \*(L"]\*(R" | \*(L"[user_attributes\->\*(R" user_attributes_keyword \*(L"]\*(R" | string .PP listname : \*(L"[listname]\*(R" | listname_string | listname_string \*(L"@\*(R" domain_string .PP date : \*(L"[date]\*(R" | date_expr | integer .PP user_key_word : \*(L"email\*(R" | \*(L"gecos\*(R" | \*(L"lang\*(R" | \*(L"password\*(R" | \*(L"cookie_delay_user\*(R" | additional_user_fields .PP subscriber_key_word : \*(L"email\*(R" | \*(L"date\*(R" | \*(L"bounce\*(R" | \*(L"gecos\*(R" | \*(L"reception\*(R" | \*(L"update_date\*(R" | \*(L"visibility\*(R" | additional_subscriber_fields .PP list_key_word : \*(L"name\*(R" | \*(L"address\*(R" | \*(L"domain\*(R" | \*(L"lang\*(R" | \*(L"max_size\*(R" | \*(L"priority\*(R" | \*(L"reply_to\*(R" | \*(L"status\*(R" | \*(L"subject\*(R" | \*(L"total\*(R" | \*(L"account\*(R" .PP conf_key_word : \*(L"domain\*(R" | \*(L"default_list_priority\*(R" | \*(L"email\*(R" | \*(L"lang\*(R" | \*(L"listmaster\*(R" | \*(L"max_size\*(R" | \*(L"request_priority\*(R" | \*(L"sympa_priority\*(R" .PP # Authentication methods .PP auth_list : auth \*(L",\*(R" auth_list | auth | "" .PP auth : \*(L"smtp\*(R" | \*(L"dkim\*(R" | \*(L"md5\*(R" | \*(L"smime\*(R" .PP # Actions .PP action : \*(L"do_it\*(R" ( \*(L",\*(R" \*(L"quiet\*(R" | \*(L",\*(R" \*(L"notify\*(R" )* | \*(L"editor\*(R" [ \*(L",\*(R" \*(L"quiet\*(R" ] | \*(L"editorkey\*(R" [ \*(L",\*(R" \*(L"quiet\*(R" ] | \*(L"listmaster\*(R" [ \*(L",\*(R" \*(L"notify\*(R" ] | \*(L"owner\*(R" [ \*(L",\*(R" \*(L"quiet\*(R" ] | \*(L"reject\*(R" ( \*(L"(\*(R" \*(L"reason=\*(R" reason_key \*(L")\*(R" | \*(L"(\*(R" \*(L"tt2=\*(R" tpl_name \*(L")\*(R" | \*(L",\*(R" \*(L"quiet\*(R" )* | \*(L"reject(tt2=\*(R" tpl_name \*(L")\*(R" [ \*(L",\*(R" \*(L"quiet\*(R" ] | \*(L"request_auth\*(R" [ \*(L"([email])\*(R" ] .SH "FILES" .IX Header "FILES" .ie n .IP "$EXPLDIR""/""\fIlist path\fR""/scenari""" 4 .el .IP "\f(CW$EXPLDIR\fR\f(CW/\fR\fIlist path\fR\f(CW/scenari\fR" 4 .IX Item "$EXPLDIR/list path/scenari" .PD 0 .ie n .IP "$SYSCONFDIR""/""\fIvirtual host\fR""/scenari""" 4 .el .IP "\f(CW$SYSCONFDIR\fR\f(CW/\fR\fIvirtual host\fR\f(CW/scenari\fR" 4 .IX Item "$SYSCONFDIR/virtual host/scenari" .ie n .IP "$SYSCONFDIR""/scenari""" 4 .el .IP "\f(CW$SYSCONFDIR\fR\f(CW/scenari\fR" 4 .IX Item "$SYSCONFDIR/scenari" .ie n .IP "$DEFAULTDIR""/scenari""" 4 .el .IP "\f(CW$DEFAULTDIR\fR\f(CW/scenari\fR" 4 .IX Item "$DEFAULTDIR/scenari" .PD Path of scenario files: List, robot and site levels, and distribution defaults. .SH "SEE ALSO" .IX Header "SEE ALSO" Sympa::Scenario. .SH "HISTORY" .IX Header "HISTORY" Original contents of this document were partially taken from a chapter \*(L"Authorization scenarios\*(R" in \&\fISympa, Mailing List Management Software \- Reference manual\fR.