Imported Upstream version 1.32
This commit is contained in:
		
							parent
							
								
									6a47d71615
								
							
						
					
					
						commit
						db065246e2
					
				
					 28 changed files with 6336 additions and 1832 deletions
				
			
		
							
								
								
									
										167
									
								
								plugins/postfwd.plugins.sample
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								plugins/postfwd.plugins.sample
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,167 @@
 | 
			
		|||
#
 | 
			
		||||
#
 | 
			
		||||
# Example plugin file for postfwd - see http://postfwd.org
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Description:
 | 
			
		||||
#
 | 
			
		||||
# The plugin interface allow you to define your own checks and enhance postfwd's
 | 
			
		||||
# functionality. Feel free to share useful things!
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
# Warning:
 | 
			
		||||
#
 | 
			
		||||
# Check changes carefully, because errors may cause postfwd to break! It is also
 | 
			
		||||
# allowed to override attributes or built-in functions, but be sure that you know
 | 
			
		||||
# what you do because some of them are used internally.
 | 
			
		||||
# Please keep security in mind, when you access sensible ressources and never, ever
 | 
			
		||||
# run postfwd as privileged user! Also never trust your input (especially hostnames,
 | 
			
		||||
# and e-mail addresses).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ITEMS
 | 
			
		||||
# =====
 | 
			
		||||
#
 | 
			
		||||
# Item plugins are perl subroutines which integrate additional attributes to requests
 | 
			
		||||
# before they are evaluated against postfwd's ruleset like any other item of the
 | 
			
		||||
# policy delegation protocol. This allows you to create your own checks.
 | 
			
		||||
#
 | 
			
		||||
# plugin-items can not be used selective. these functions will be executed for every
 | 
			
		||||
# request postfwd receives, so keep performance in mind.
 | 
			
		||||
#
 | 
			
		||||
# SYNOPSIS: %result = postfwd_items_plugin{<name>}(%request)
 | 
			
		||||
#
 | 
			
		||||
# means that your subroutine, called <name>, has access to a hash called %request,
 | 
			
		||||
# which contains all request attributes, like $request{client_name} and must
 | 
			
		||||
# return a value in the following form:
 | 
			
		||||
#
 | 
			
		||||
# save: $result{<item>} = <value>
 | 
			
		||||
#
 | 
			
		||||
# this creates the new item <item> containing <value>, which will be integrated in
 | 
			
		||||
# the policy delegation request and therefore may be used in postfwd's ruleset.
 | 
			
		||||
 | 
			
		||||
# do NOT remove the next line
 | 
			
		||||
%postfwd_items_plugin = (
 | 
			
		||||
 | 
			
		||||
	# EXAMPLES - integrated in postfwd. no need to activate them here.
 | 
			
		||||
	#
 | 
			
		||||
	#	# allows to check postfwd version in ruleset
 | 
			
		||||
        #	"version" => sub {
 | 
			
		||||
        #       	my(%request) = @_;
 | 
			
		||||
	#		my(%result) = (
 | 
			
		||||
        #        		"version" => $NAME." ".$VERSION,
 | 
			
		||||
	#		);
 | 
			
		||||
        #       	return %result;
 | 
			
		||||
	#	},
 | 
			
		||||
	#
 | 
			
		||||
	#	# sender_domain and recipient_domain
 | 
			
		||||
        #	"address_parts" => sub {
 | 
			
		||||
        #       	my(%request) = @_;
 | 
			
		||||
	#		my(%result) = ();
 | 
			
		||||
        #		$request{sender} =~ /@([^@]*)$/;
 | 
			
		||||
        #		$result{sender_domain} = ($1 || '');
 | 
			
		||||
        #		$request{recipient} =~ /@([^@]*)$/;
 | 
			
		||||
	#		$result{recipient_domain} = ($1 || '');
 | 
			
		||||
        #       	return %result;
 | 
			
		||||
	#	},
 | 
			
		||||
	# },
 | 
			
		||||
 | 
			
		||||
# do NOT remove the next line
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# COMPARE
 | 
			
		||||
# =======
 | 
			
		||||
#
 | 
			
		||||
# Compare plugins allow you to define how your new items should be compared to the ruleset.
 | 
			
		||||
# These are optional. If you don't specify one, the default (== for exact match, =~ for PCRE, ...)
 | 
			
		||||
# will be used.
 | 
			
		||||
#
 | 
			
		||||
# SYNOPSIS:  <item> => sub { return &{$postfwd_compare{<type>}}(@_); },
 | 
			
		||||
 | 
			
		||||
# do NOT remove the next line
 | 
			
		||||
%postfwd_compare_plugin = (
 | 
			
		||||
 | 
			
		||||
	# EXAMPLES - integrated in postfwd. no need to activate them here.
 | 
			
		||||
	#
 | 
			
		||||
	#	# CIDR compare
 | 
			
		||||
	#	"client_address"  => sub { return &{$postfwd_compare{cidr}}(@_); },
 | 
			
		||||
	#
 | 
			
		||||
	#	# Numeric compare
 | 
			
		||||
	#	"size"            => sub { return &{$postfwd_compare{numeric}}(@_); },
 | 
			
		||||
	#	"recipient_count" => sub { return &{$postfwd_compare{numeric}}(@_); },
 | 
			
		||||
	#
 | 
			
		||||
	#	# Complex example
 | 
			
		||||
	#	# SYNOPSIS:  <result> = <item>(<operator>, <ruleset value>, <request value>, <request>)
 | 
			
		||||
	#	"numeric" => sub {
 | 
			
		||||
	#		my($cmp,$val,$myitem,%request) = @_;
 | 
			
		||||
	#		my($myresult) = undef;	$myitem ||= "0"; $val ||= "0";
 | 
			
		||||
	#		if ($cmp eq '==') {
 | 
			
		||||
	#			$myresult = ($myitem == $val);
 | 
			
		||||
	#		} elsif ($cmp eq '=<') {
 | 
			
		||||
	#			$myresult = ($myitem <= $val);
 | 
			
		||||
	#		} elsif ($cmp eq '=>') {
 | 
			
		||||
	#			$myresult = ($myitem >= $val);
 | 
			
		||||
	#		} elsif ($cmp eq '!=') {
 | 
			
		||||
	#			$myresult = not($myitem == $val);
 | 
			
		||||
	#		} elsif ($cmp eq '!<') {
 | 
			
		||||
	#			$myresult = not($myitem <= $val);
 | 
			
		||||
	#		} elsif ($cmp eq '!>') {
 | 
			
		||||
	#			$myresult = not($myitem >= $val);
 | 
			
		||||
	#		} else {
 | 
			
		||||
	#			$myresult = ($myitem >= $val);
 | 
			
		||||
	#		};
 | 
			
		||||
	#		return $myresult;
 | 
			
		||||
	#	},
 | 
			
		||||
 | 
			
		||||
# do NOT remove the next line
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# ACTIONS
 | 
			
		||||
# =======
 | 
			
		||||
#
 | 
			
		||||
# Action plugins allow to define new postfwd actions.
 | 
			
		||||
#
 | 
			
		||||
# SYNOPSIS:  (<stop rule parsing>, <next rule index>, <return action>, <logprefix>, <request>) =
 | 
			
		||||
#			<action> (<current rule index>, <current time>, <command name>, <argument>, <logprefix>, <request>)
 | 
			
		||||
 | 
			
		||||
# do NOT remove the next line
 | 
			
		||||
%postfwd_actions_plugin = (
 | 
			
		||||
 | 
			
		||||
	# EXAMPLES - integrated in postfwd. no need to activate them here.
 | 
			
		||||
	#
 | 
			
		||||
	#	# note(<logstring>) command
 | 
			
		||||
	#	"note"  => sub {
 | 
			
		||||
	#		my($index,$now,$mycmd,$myarg,$myline,%request) = @_;
 | 
			
		||||
	#		my($myaction) = $default_action; my($stop) = 0;
 | 
			
		||||
	#		mylogs 'info', "[RULES] ".$myline." - note: ".$myarg if $myarg;
 | 
			
		||||
	#		return ($stop,$index,$myaction,$myline,%request);
 | 
			
		||||
	#	},
 | 
			
		||||
	#
 | 
			
		||||
	#	# skips next <myarg> rules
 | 
			
		||||
        #	"skip" => sub {
 | 
			
		||||
	#		my($index,$now,$mycmd,$myarg,$myline,%request) = @_;
 | 
			
		||||
	#		my($myaction) = $default_action; my($stop) = 0;
 | 
			
		||||
	#		$index += $myarg if ( $myarg and not(($index + $myarg) > $#Rules) );
 | 
			
		||||
	#		return ($stop,$index,$myaction,$myline,%request);
 | 
			
		||||
        #	},
 | 
			
		||||
	#
 | 
			
		||||
	#	# dumps current request contents to syslog
 | 
			
		||||
        #	"dumprequest" => sub {
 | 
			
		||||
	#		my($index,$now,$mycmd,$myarg,$myline,%request) = @_;
 | 
			
		||||
	#		my($myaction) = $default_action; my($stop) = 0;
 | 
			
		||||
	#		map { mylogs 'info', "[DUMP] rule=$index, Attribute: $_=$request{$_}" } (keys %request);
 | 
			
		||||
	#		return ($stop,$index,$myaction,$myline,%request);
 | 
			
		||||
        #	},
 | 
			
		||||
 | 
			
		||||
# do NOT remove the next line
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
# do NOT remove the next line
 | 
			
		||||
1;
 | 
			
		||||
 | 
			
		||||
## EOF postfwd.plugins
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue