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
	   special 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
	   network_block.

	   This	allows the user	to configure their local network to only be
	   accessible 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.
	   custom_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
	   authorization scenario for sending messages.	 It can	be used, for
	   example, to require editor validation for multipart messages.
	   Optional index 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
	   following "[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
	   provided 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_reject.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
       "Authorization scenarios" in Sympa, Mailing List	Management Software -
       Reference 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.0>

home | help