Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SYMPA_SCENARIO(5)		  sympa 6.2.76		       SYMPA_SCENARIO(5)

NAME
     sympa_scenario - Authorization scenario

SYNOPSIS
     An example del.auth file:

       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

DESCRIPTION
   File format
     Basically, a scenario file is composed of titles on the first lines and a
     set of rules on the following lines.

     Rules consist of one or more line in the form:

       condition authentication_methods -> action

     Some terms of conditions may take one or more arguments.  The arguments are
     variables or literals (see "Terms of conditions", "Variables").

     Authentication methods is a comma-separated list of one or more methods
     (see "Authentication methods").

     Some actions may have optional modifiers (see "Actions").

     Terms of conditions

     "true" "(" ")"
	 Always returns true.

     "equal" "(" var1"," var2 ")"
	 Tests if two arguments are equal.

     "is_subscriber" "(" listname"," var ")"
     "is_owner" "(" listname"," var ")"
     "is_editor" "(" listname"," var ")"
	 Tests if var is the subscriber, owner or editor of the list listname.
	 listname is the variable "[listname]" or list address, "name" or
	 "name"@"domain".

     "is_listmaster" "(" var ")"
	 Tests if var is the listmaster.

     "less_than" "(" var1"," var2 ")"
	 Tests if var1 is less than var2.

     "match" "(" var"," "/"perl_regexp"/" ")"
	 Tests if var matches with perl_regexp.

	 perl_regexp is a perl regular expression.  Don't forget to escape spe-
	 cial characters ("^", "$", "{", "(", ...): Check perlre(1) for regular
	 expression syntax.  It can contain the string "[domain]" (interpreted
	 at run time as the list or robot domain).

	 Note: Sympa prior to 6.2.32 recognized "[host]" instead of "[domain]".

     "newer" "(" date"," date ")"
	 Returns true if first date is posterior to the second

     "older" "(" date"," date ")"
	 Returns true if first date is anterior to the second date

	 date is Unix time or the string "n"y"n"m"n"d"n"h"n"min"n"sec"", where
	 each n is a number.

     "search" "(" named_filter_file"," var")"
	 Tests if var is found by named filter.

	 named_filter_file is a file name ending with ".ldap", ".sql" or ".txt".

     "verify_netmask" "(" network_block ")"
	 Tests if "REMOTE_ADDR" CGI environment variable matches with net-
	 work_block.

	 This allows the user to configure their local network to only be acces-
	 sible to those that are members of it.

     "CustomCondition::"package_name "(" arguments, ... ")"
	 Evaluates custom condition.  package_name is the name of a Perl package
	 in $SYSCONFDIR/custom_conditions/ (lowercase).

     Variables

     "[custom_vars->"custom_var_name"]"
	 Allows you to introduce custom parameters in your scenario.  cus-
	 tom_var_name is the name of the custom parameter you want to use.

     "[date]"
	 Date of reception of the message.

     "[domain]"
	 Mail domain of current list.

	 Note: This variable was introduced by Sympa 6.2.32.  Previous versions
	 used a variable "[conf->host]" (obsoleted) instead.

     "[env->"env_var"]"
	 env_var is the name of CGI environment variable (note that it is
	 case-sensitive).

     "[is_bcc]"
	 Set to 1 if the list is neither in To: nor Cc: field.

     "[listname]"
	 Name of current list.

     "[msg_encrypted]"
	 Set to ""smime"" if the message was S/MIME encrypted.

     "[msg_header->"field_name"]"
     "[msg_header->"field_name"]["index"]"
	 Value of message header field, available only when evaluating the au-
	 thorization scenario for sending messages.  It can be used, for exam-
	 ple, to require editor validation for multipart messages.  Optional in-
	 dex may be integer (may be less than 0) to choose particular entry from
	 multiple fields.

     "[msg_part->type]"
     "[msg_part->body]"
	 The MIME content types and bodies; the body is available for MIME parts
	 in text/xxx format only.

     "[previous_email]"
	 Old email when changing subscription email in preference page.

     "[sender]"
	 The email address of the current user (used on web or mail interface).
	 Default value is "nobody".

     "[topic]"
	 Topic of the message.	This variable has a value if any of the follow-
	 ing "[topic_*]" variables has a value.

     "[topic_auto]"
	 Topic of the message if it has been automatically tagged.

     "[topic_editor]"
	 Topic of the message if it has been tagged by editor.

     "[topic_needed]"
	 The message has not got any topic and message topic are required for
	 the list.

     "[topic_sender]"
	 Topic of the message if it has been tagged by sender.

     "[user_attributes->"user_attributes_key_word"]"
	 user_attributes_key_word is one of the names of user attributes pro-
	 vided by the SSO system via environment variables.  Available only if
	 user authenticated with a "generic_sso".

     Authentication methods

     The e-mail of authenticated user is given by "[sender]" variable.	If it is
     not given, '"nobody"' will be set.

     "smtp"
	 Default method.  No actual authentication, and if any, sender of the
	 message is used.

     "md5"
	 Authenticated by web authentication (password), or by authentication
	 key in e-mail message.

     "smime"
	 Authenticated by S/MIME signature, or TLS client certificate.

     Note: The "dkim" authentication method for scenarios was obsoleted on Sympa
     6.2.71b.1.  Now it is a synonym of "smtp" method.

     Actions

     An action consists of an action name and optional modifiers.

     Action names:

     "do_it"
	 Allows operation.

     "editor"
	 The message will be forwarded to list editor.

     "editorkey"
	 The message will be held for moderation by list editor.

     "listmaster"
	 Same as "do_it" but makes newly created list be pending.

     "owner"
	 The operation is held and waits for approval by list owner.

     "reject"
	 Denies operation.

     "request_auth"
	 The operation is held and waits for confirmation by the user.

     Modifiers:

     "([email])"
	 Only for "request_auth" action.  Sends authentication request to the
	 target user of operation (given as the value of ""[email]"" variable)
	 instead of original sender.

	 Note that "[email]" is a literal and no other variable names can't be
	 used.

     "," "notify"
	 Only for "do_it" and "listmaster" actions.  Sends a notification to
	 list owner.

     "," "quiet"
	 Sends no notification to the message sender.

     "(reason='"reason_key"')"
	 Only for "reject" action.  Matches a key in mail_tt2/authorization_re-
	 ject.tt2 template corresponding to an information message about the
	 reason of the reject of the user.  reason_key have to be a static
	 string enclosed by '...'.

     "(tt2='"tpl_name"')"
	 Only for "reject" action.  Corresponding template (tpl_name".tt2") is
	 sent to the sender.  tpl_name have to be a static string enclosed by
	 '...'.

   Formal syntax
     # Below is the formal syntax definition by modified BNF.

     rule : condition spaces auth_list "->" action

     # Condition

     condition : "!" condition
	 | "true" "(" ")"
	 | "equal" "(" var "," var ")"
	 | "is_editor" "(" listname "," var ")"
	 | "is_listmaster" "(" var ")"
	 | "is_owner" "(" listname "," var ")"
	 | "is_subscriber" "(" listname "," var ")"
	 | "less_than" "(" var "," var ")"
	 | "match" "(" var "," "/" perl_regexp "/" ")"
	 | "newer" "(" date "," date ")"
	 | "older" "(" date "," date ")"
	 | "search" "(" named_filter_file ")"
	 | "verify_netmask" "(" network_block ")"
	 | "CustomCondition::" package_name "(" var* ")"

     var : "[email]"
	 | "[conf->" conf_key_word "]"
	 | "[current_date]"
	 | "[custom_vars->" custom_var_name "]"
	 | "[env->" env_var "]"
	 | "[is_bcc]"
	 | "[list->" list_key_word "]"
	 | "[msg_body]"
	 | "[msg_encrypted]"
	 | "[msg_header->" field_name "]" "[" index "]"
	 | "[msg_header->" field_name "]"
	 | "[msg_part->type]"
	 | "[msg_part->body]"
	 | "[previous_email]"
	 | "[sender]"
	 | "[subscriber->" subscriber_key_word "]"
	 | "[topic]"
	 | "[topic_auto]"
	 | "[topic_editor]"
	 | "[topic_needed]"
	 | "[topic_sender]"
	 | "[user->" user_key_word "]"
	 | "[user_attributes->" user_attributes_keyword "]"
	 | string

     listname : "[listname]"
	 | listname_string
	 | listname_string "@" domain_string

     date : "[date]"
	 | date_expr
	 | integer

     user_key_word : "email"
	 | "gecos"
	 | "lang"
	 | "password"
	 | "cookie_delay_user"
	 | additional_user_fields

     subscriber_key_word : "email"
	 | "date"
	 | "bounce"
	 | "gecos"
	 | "reception"
	 | "update_date"
	 | "visibility"
	 | additional_subscriber_fields

     list_key_word : "name"
	 | "address"
	 | "domain"
	 | "lang"
	 | "max_size"
	 | "priority"
	 | "reply_to"
	 | "status"
	 | "subject"
	 | "total"
	 | "account"

     conf_key_word : "domain"
	 | "default_list_priority"
	 | "email"
	 | "lang"
	 | "listmaster"
	 | "max_size"
	 | "request_priority"
	 | "sympa_priority"

     # Authentication methods

     auth_list : auth "," auth_list
	 | auth
	 | ""

     auth : "smtp"
	 | "dkim"
	 | "md5"
	 | "smime"

     # Actions

     action : "do_it" ( "," "quiet" | "," "notify" )*
	 | "editor" [ "," "quiet" ]
	 | "editorkey" [ "," "quiet" ]
	 | "listmaster" [ "," "notify" ]
	 | "owner" [ "," "quiet" ]
	 | "reject" (
	       "(" "reason=" reason_key ")"
	     | "(" "tt2=" tpl_name ")"
	     | "," "quiet"
	   )*
	 | "reject(tt2=" tpl_name ")" [ "," "quiet" ]
	 | "request_auth" [ "([email])" ]

FILES
     $EXPLDIR"/"list path"/scenari"
     $SYSCONFDIR"/"virtual host"/scenari"
     $SYSCONFDIR"/scenari"
     $DEFAULTDIR"/scenari"
	 Path of scenario files: List, robot and site levels, and distribution
	 defaults.

SEE ALSO
     Sympa::Scenario.

HISTORY
     Original contents of this document were partially taken from a chapter "Au-
     thorization scenarios" in Sympa, Mailing List Management Software - Refer-
     ence manual.

6.2.76				   2025-02-03		       SYMPA_SCENARIO(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sympa_scenario&sektion=5&manpath=FreeBSD+Ports+15.1.quarterly>

home | help