Home | History | Annotate | Line # | Download | only in global
      1 /*	$NetBSD: input_transp.c,v 1.1.1.1 2009/06/23 10:08:46 tron Exp $	*/
      2 
      3 /*++
      4 /* NAME
      5 /*	input_transp 3
      6 /* SUMMARY
      7 /*	receive transparency control
      8 /* SYNOPSIS
      9 /*	#include <input_transp.h>
     10 /*
     11 /*	int	input_transp_mask(param_name, pattern)
     12 /*	const char *param_name;
     13 /*	const char *pattern;
     14 /*
     15 /*	int	input_transp_cleanup(cleanup_flags, transp_mask)
     16 /*	int	cleanup_flags;
     17 /*	int	transp_mask;
     18 /* DESCRIPTION
     19 /*	This module controls how much processing happens before mail is
     20 /*	written to the Postfix queue. Each transparency option is either
     21 /*	implemented by a client of the cleanup service, or is passed
     22 /*	along in a client request to the cleanup service. This eliminates
     23 /*	the need to configure multiple cleanup service instances.
     24 /*
     25 /*	input_transp_mask() takes a comma-separated list of names and
     26 /*	computes the corresponding mask. The following names are
     27 /*	recognized in \fBpattern\fR, with the corresponding bit mask
     28 /*	given in parentheses:
     29 /* .IP "no_unknown_recipient_checks (INPUT_TRANSP_UNKNOWN_RCPT)"
     30 /*	Do not try to reject unknown recipients.
     31 /* .IP "no_address_mappings (INPUT_TRANSP_ADDRESS_MAPPING)"
     32 /*	Disable canonical address mapping, virtual alias map expansion,
     33 /*	address masquerading, and automatic BCC recipients.
     34 /* .IP "no_header_body_checks (INPUT_TRANSP_HEADER_BODY)"
     35 /*	Disable header/body_checks.
     36 /* .IP "no_milters (INPUT_TRANSP_MILTER)"
     37 /*	Disable Milter applications.
     38 /*
     39 /*	input_transp_cleanup() takes a bunch of cleanup processing
     40 /*	flags and updates them according to the settings in the
     41 /*	specified input transparency mask.
     42 /* DIAGNOSTICS
     43 /*	Panic: inappropriate use.
     44 /* LICENSE
     45 /* .ad
     46 /* .fi
     47 /*	The Secure Mailer license must be distributed with this software.
     48 /* AUTHOR(S)
     49 /*	Wietse Venema
     50 /*	IBM T.J. Watson Research
     51 /*	P.O. Box 704
     52 /*	Yorktown Heights, NY 10598, USA
     53 /*--*/
     54 
     55 /* System library. */
     56 
     57 #include <sys_defs.h>
     58 
     59 /* Utility library. */
     60 
     61 #include <name_mask.h>
     62 #include <msg.h>
     63 
     64 /* Global library. */
     65 
     66 #include <mail_params.h>
     67 #include <cleanup_user.h>
     68 #include <input_transp.h>
     69 
     70 /* input_transp_mask - compute mail receive transparency mask */
     71 
     72 int     input_transp_mask(const char *param_name, const char *pattern)
     73 {
     74     static const NAME_MASK table[] = {
     75 	"no_unknown_recipient_checks", INPUT_TRANSP_UNKNOWN_RCPT,
     76 	"no_address_mappings", INPUT_TRANSP_ADDRESS_MAPPING,
     77 	"no_header_body_checks", INPUT_TRANSP_HEADER_BODY,
     78 	"no_milters", INPUT_TRANSP_MILTER,
     79 	0,
     80     };
     81 
     82     return (name_mask(param_name, table, pattern));
     83 }
     84 
     85 /* input_transp_cleanup - adjust cleanup options */
     86 
     87 int     input_transp_cleanup(int cleanup_flags, int transp_mask)
     88 {
     89     const char *myname = "input_transp_cleanup";
     90 
     91     if (msg_verbose)
     92 	msg_info("before %s: cleanup flags = %s",
     93 		 myname, cleanup_strflags(cleanup_flags));
     94     if (transp_mask & INPUT_TRANSP_ADDRESS_MAPPING)
     95 	cleanup_flags &= ~(CLEANUP_FLAG_BCC_OK | CLEANUP_FLAG_MAP_OK);
     96     if (transp_mask & INPUT_TRANSP_HEADER_BODY)
     97 	cleanup_flags &= ~CLEANUP_FLAG_FILTER;
     98     if (transp_mask & INPUT_TRANSP_MILTER)
     99 	cleanup_flags &= ~CLEANUP_FLAG_MILTER;
    100     if (msg_verbose)
    101 	msg_info("after %s: cleanup flags = %s",
    102 		 myname, cleanup_strflags(cleanup_flags));
    103     return (cleanup_flags);
    104 }
    105