cfhead.m4 revision 64565
1#
2# Copyright (c) 1998-2000 Sendmail, Inc. and its suppliers.
3#	All rights reserved.
4# Copyright (c) 1983, 1995 Eric P. Allman.  All rights reserved.
5# Copyright (c) 1988, 1993
6#	The Regents of the University of California.  All rights reserved.
7#
8# By using this file, you agree to the terms and conditions set
9# forth in the LICENSE file which can be found at the top level of
10# the sendmail distribution.
11#
12# $FreeBSD: head/contrib/sendmail/cf/m4/cfhead.m4 64565 2000-08-12 22:19:16Z gshapiro $
13#
14
15######################################################################
16######################################################################
17#####
18#####		SENDMAIL CONFIGURATION FILE
19#####
20ifdef(`unix', `dnl
21ifdef(`TEMPFILE', `dnl', `define(`TEMPFILE', maketemp(/tmp/cfXXXXXX))dnl
22syscmd(sh _CF_DIR_`'sh/makeinfo.sh _CF_DIR_ > TEMPFILE)dnl
23include(TEMPFILE)dnl
24syscmd(rm -f TEMPFILE)dnl')', `dnl')
25#####
26######################################################################
27######################################################################
28
29divert(-1)
30
31changecom()
32undefine(`format')
33undefine(`hpux')
34ifdef(`pushdef', `',
35	`errprint(`You need a newer version of M4, at least as new as
36System V or GNU')
37	include(NoSuchFile)')
38define(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)')
39define(`POPDIVERT', `divert(__D__)popdef(`__D__')')
40define(`OSTYPE',
41	`PUSHDIVERT(-1)
42	ifdef(`__OSTYPE__', `errprint(`duplicate OSTYPE'($1)
43)')
44	define(`__OSTYPE__', $1)
45	define(`_ARG_', $2)
46	include(_CF_DIR_`'ostype/$1.m4)POPDIVERT`'')
47## helpful functions
48define(`lower', `translit(`$1', `ABCDEFGHIJKLMNOPQRSTUVWXYZ', `abcdefghijklmnopqrstuvwx')')
49define(`strcasecmp', `ifelse(lower($1), lower($2), `1', `0')')
50## new FEATUREs
51define(`_DNSBL_R_',`')
52## access to further arguments in FEATURE/HACK
53define(`_ACC_ARG_1_',`$1')
54define(`_ACC_ARG_2_',`$2')
55define(`_ACC_ARG_3_',`$3')
56define(`_ACC_ARG_4_',`$4')
57define(`_ACC_ARG_5_',`$5')
58define(`_ACC_ARG_6_',`$6')
59define(`_ACC_ARG_7_',`$7')
60define(`_ACC_ARG_8_',`$8')
61define(`_ACC_ARG_9_',`$9')
62define(`_ARG1_',`_ACC_ARG_1_(_ARGS_)')
63define(`_ARG2_',`_ACC_ARG_2_(_ARGS_)')
64define(`_ARG3_',`_ACC_ARG_3_(_ARGS_)')
65define(`_ARG4_',`_ACC_ARG_4_(_ARGS_)')
66define(`_ARG5_',`_ACC_ARG_5_(_ARGS_)')
67define(`_ARG6_',`_ACC_ARG_6_(_ARGS_)')
68define(`_ARG7_',`_ACC_ARG_7_(_ARGS_)')
69define(`_ARG8_',`_ACC_ARG_8_(_ARGS_)')
70define(`_ARG9_',`_ACC_ARG_9_(_ARGS_)')
71dnl define if not yet defined: if `$1' is not defined it will be `$2'
72define(`_DEFIFNOT',`ifdef(`$1',`',`define(`$1',`$2')')')
73dnl ----------------------------------------
74dnl add a char $2 to a string $1 if it is not there
75define(`_ADDCHAR_',`define(`_I_',`eval(index(`$1',`$2') >= 0)')`'ifelse(_I_,`1',`$1',`$1$2')')
76dnl ----
77dnl delete a char $2 from a string $1 if it is there
78define(`_DELCHAR_',`define(`_IDX_',`index(`$1',`$2')')`'define(`_I_',`eval(_IDX_ >= 0)')`'ifelse(_I_,`1',`substr(`$1',0,_IDX_)`'substr(`$1',eval(_IDX_+1))',`$1')')
79dnl ----
80dnl apply a macro to a whole string by recursion (one char at a time)
81dnl $1: macro
82dnl $2: first argument to macro
83dnl $3: list that is split up into characters
84define(`_AP_',`ifelse(`$3',`',`$2',`_AP_(`$1',$1(`$2',substr(`$3',0,1)),substr(`$3',1))')')
85dnl ----
86dnl MODIFY_MAILER_FLAGS: append tail of $2 to $1_MF_A/D_
87dnl A if head($2) = +
88dnl D if head($2) = -
89dnl $1_MF_ is set otherwise; set _A/D_ to `'
90define(`MODIFY_MAILER_FLAGS',`define(`_hd_',`substr(`$2',0,1)')define(`_tl_',`substr(`$2',1)')`'ifelse(_hd_,`+',`ifdef($1`'_MF_A_, `define($1`'_MF_A_,$1_MF_A_`'_tl_)', `define($1`'_MF_A_, _tl_)')',_hd_,`-',`ifdef($1`'_MF_D_, `define($1`'_MF_D_,$1_MF_D_`'_tl_)', `define($1`'_MF_D_,_tl_)')',`define($1`'_MF_,`$2')define($1`'_MF_A_,`')define($1`'_MF_D_,`')')')
91dnl ----
92dnl actually modify flags:
93dnl $1: flags (strings) to modify
94dnl $2: name of flags (just first part) to modify
95dnl WARNING: the order might be important: if someone adds and delete the
96dnl same characters, he does not deserve any better, does he?
97dnl this could be coded more efficiently... (do not apply the macro if _MF_A/D_ is undefined)
98define(`_MODMF_',`ifdef($2`'_MF_,`$2_MF_',`_AP_(`_ADDCHAR_',_AP_(`_DELCHAR_',$1,ifdef($2`'_MF_D_,`$2_MF_D_',`')),ifdef($2`'_MF_A_,`$2_MF_A_',`'))')')
99dnl usage:
100dnl MODIFY_MAILER_FLAGS(`LOCAL',`+FlaGs')dnl
101dnl in MAILER.m4: _MODMF_(LMF,`LOCAL')
102dnl ----------------------------------------
103define(`MAILER',
104`define(`_M_N_', `ifelse(`$2', `', `$1', `$2')')dnl
105ifdef(_MAILER_`'_M_N_`'_, `dnl`'',
106`define(_MAILER_`'_M_N_`'_, `')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')PUSHDIVERT(7)include(_CF_DIR_`'mailer/$1.m4)POPDIVERT`'')')
107define(`DOMAIN', `PUSHDIVERT(-1)define(`_ARG_', `$2')include(_CF_DIR_`'domain/$1.m4)POPDIVERT`'')
108define(`FEATURE', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'feature/$1.m4)POPDIVERT`'')
109define(`HACK', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'hack/$1.m4)POPDIVERT`'')
110define(`_DPO_',`')
111define(`DAEMON_OPTIONS', `define(`_DPO_', defn(`_DPO_')
112O DaemonPortOptions=`$1')')
113define(`_MAIL_FILTERS_', `')
114define(`MAIL_FILTER', `define(`_MAIL_FILTERS_', defn(`_MAIL_FILTERS_')
115X`'$1`, '`$2')')
116define(`INPUT_MAIL_FILTER', `MAIL_FILTER(`$1', `$2')
117ifelse(defn(`confINPUT_MAIL_FILTERS')X, `X',
118`define(`confINPUT_MAIL_FILTERS', $1)',
119`define(`confINPUT_MAIL_FILTERS', defn(`confINPUT_MAIL_FILTERS')`, '`$1')')')
120define(`CF_LEVEL', `9')dnl
121define(`VERSIONID', ``#####  $1  #####'')
122define(`LOCAL_RULE_0', `divert(3)')
123define(`LOCAL_RULE_1',
124`divert(9)dnl
125#######################################
126###  Ruleset 1 -- Sender Rewriting  ###
127#######################################
128
129Ssender=1
130')
131define(`LOCAL_RULE_2',
132`divert(9)dnl
133##########################################
134###  Ruleset 2 -- Recipient Rewriting  ###
135##########################################
136
137Srecipient=2
138')
139define(`LOCAL_RULESETS',
140`divert(9)
141
142')
143define(`LOCAL_RULE_3', `divert(2)')
144define(`LOCAL_CONFIG', `divert(6)')
145define(`MAILER_DEFINITIONS', `divert(7)')
146define(`LOCAL_NET_CONFIG', `define(`_LOCAL_RULES_', 1)divert(1)')
147define(`UUCPSMTP', `R DOL(*) < @ $1 .UUCP > DOL(*)	DOL(1) < @ $2 > DOL(2)')
148define(`CONCAT', `$1$2$3$4$5$6$7')
149define(`DOL', ``$'$1')
150define(`SITECONFIG',
151`CONCAT(D, $3, $2)
152define(`_CLASS_$3_', `')dnl
153ifelse($3, U, Cw$2 $2.UUCP, `dnl')
154define(`SITE', `ifelse(CONCAT($'2`, $3), SU,
155		CONCAT(CY, $'1`),
156		CONCAT(C, $3, $'1`))')
157sinclude(_CF_DIR_`'siteconfig/$1.m4)')
158define(`EXPOSED_USER', `PUSHDIVERT(5)CE$1
159POPDIVERT`'dnl`'')
160define(`LOCAL_USER', `PUSHDIVERT(5)CL$1
161POPDIVERT`'dnl`'')
162define(`MASQUERADE_AS', `define(`MASQUERADE_NAME', $1)')
163define(`MASQUERADE_DOMAIN', `PUSHDIVERT(5)CM$1
164POPDIVERT`'dnl`'')
165define(`MASQUERADE_EXCEPTION', `PUSHDIVERT(5)CN$1
166POPDIVERT`'dnl`'')
167define(`MASQUERADE_DOMAIN_FILE', `PUSHDIVERT(5)FM$1
168POPDIVERT`'dnl`'')
169define(`LOCAL_DOMAIN', `PUSHDIVERT(5)Cw$1
170POPDIVERT`'dnl`'')
171define(`CANONIFY_DOMAIN', `PUSHDIVERT(5)C{Canonify}$1
172POPDIVERT`'dnl`'')
173define(`CANONIFY_DOMAIN_FILE', `PUSHDIVERT(5)F{Canonify}$1
174POPDIVERT`'dnl`'')
175define(`GENERICS_DOMAIN', `PUSHDIVERT(5)CG$1
176POPDIVERT`'dnl`'')
177define(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)FG$1
178POPDIVERT`'dnl`'')
179define(`LDAPROUTE_DOMAIN', `PUSHDIVERT(5)C{LDAPRoute}$1
180POPDIVERT`'dnl`'')
181define(`LDAPROUTE_DOMAIN_FILE', `PUSHDIVERT(5)F{LDAPRoute}$1
182POPDIVERT`'dnl`'')
183define(`VIRTUSER_DOMAIN', `PUSHDIVERT(5)C{VirtHost}$1
184define(`_VIRTHOSTS_')
185POPDIVERT`'dnl`'')
186define(`VIRTUSER_DOMAIN_FILE', `PUSHDIVERT(5)F{VirtHost}$1
187define(`_VIRTHOSTS_')
188POPDIVERT`'dnl`'')
189define(`RELAY_DOMAIN', `PUSHDIVERT(5)CR$1
190POPDIVERT`'dnl`'')
191define(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)FR$1
192POPDIVERT`'dnl`'')
193define(`TRUST_AUTH_MECH', `PUSHDIVERT(5)C{TrustAuthMech}$1
194POPDIVERT`'dnl`'')
195define(`_OPTINS', `ifdef(`$1', `$2$1$3')')
196
197
198m4wrap(`include(_CF_DIR_`m4/proto.m4')')
199
200# default location for files
201ifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')')
202
203# set our default hashed database type
204define(`DATABASE_MAP_TYPE', `hash')
205
206# set up default values for options
207define(`ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases')
208define(`confMAILER_NAME', ``MAILER-DAEMON'')
209define(`confFROM_LINE', `From $g $d')
210define(`confOPERATORS', `.:%@!^/[]+')
211define(`confSMTP_LOGIN_MSG', `$j Sendmail $v/$Z; $b')
212define(`_REC_AUTH_', `$.$?{auth_type}(authenticated')
213define(`_REC_FULL_AUTH_', `$.$?{auth_type}(authenticated as ${auth_authen} $?{auth_author}for ${auth_author} $.with ${auth_type}')
214define(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)')
215define(`_REC_END_', `for $u; $|;
216	$.$b?g
217	(envelope-from $g)$.')
218define(`_REC_TLS_', `(using ${tls_version} with cipher ${cipher} (${cipher_bits} bits) verified ${verify})$.$?u')
219define(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}')
220define(`confRECEIVED_HEADER', `_REC_HDR_
221	_REC_AUTH_$?{auth_ssf} (${auth_ssf} bits)$.)
222	_REC_BY_
223	_REC_TLS_
224	_REC_END_')
225define(`confSEVEN_BIT_INPUT', `False')
226define(`confEIGHT_BIT_HANDLING', `pass8')
227define(`confALIAS_WAIT', `10')
228define(`confMIN_FREE_BLOCKS', `100')
229define(`confBLANK_SUB', `.')
230define(`confCON_EXPENSIVE', `False')
231define(`confDELIVERY_MODE', `background')
232define(`confTEMP_FILE_MODE', `0600')
233define(`confMCI_CACHE_SIZE', `2')
234define(`confMCI_CACHE_TIMEOUT', `5m')
235define(`confUSE_ERRORS_TO', `False')
236define(`confLOG_LEVEL', `9')
237define(`confCHECK_ALIASES', `False')
238define(`confOLD_STYLE_HEADERS', `True')
239define(`confPRIVACY_FLAGS', `authwarnings')
240define(`confSAFE_QUEUE', `True')
241define(`confTO_QUEUERETURN', `5d')
242define(`confTO_QUEUEWARN', `4h')
243define(`confTIME_ZONE', `USE_SYSTEM')
244define(`confCW_FILE', `MAIL_SETTINGS_DIR`'local-host-names')
245define(`confMIME_FORMAT_ERRORS', `True')
246define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')
247define(`confCR_FILE', `-o MAIL_SETTINGS_DIR`'relay-domains')
248define(`confMILTER_MACROS_CONNECT', ``j, _, {daemon_name}, {if_name}, {if_addr}'')
249define(`confMILTER_MACROS_HELO', ``{tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}'')
250define(`confMILTER_MACROS_ENVFROM', ``i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}'')
251define(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'')
252
253
254divert(0)dnl
255VERSIONID(`$Id: cfhead.m4,v 8.76.4.9 2000/07/11 23:50:30 geir Exp $')
256