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