8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / cmd / sendmail / cf / m4 / cfhead.m4
blob98314c6c08840dcb69aa454b538ccb09ad007e18
2 # Copyright (c) 1998-2004, 2009 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.
8 # Copyright 1993, 1997-2006 Sun Microsystems, Inc.  All rights reserved.
9 # Use is subject to license terms.
11 # By using this file, you agree to the terms and conditions set
12 # forth in the LICENSE file which can be found at the top level of
13 # the sendmail distribution.
17 ######################################################################
18 ######################################################################
19 #####
20 #####           SENDMAIL CONFIGURATION FILE
21 #####
22 ifdef(`SUN_HIDE_INTERNAL_DETAILS',,
23 ifdef(`__win32__', `dnl', `dnl
24 ifdef(`TEMPFILE', `dnl', `define(`TEMPFILE', maketemp(/tmp/cfXXXXXX))dnl
25 syscmd(sh _CF_DIR_`'sh/makeinfo.sh _CF_DIR_ > TEMPFILE)dnl
26 include(TEMPFILE)dnl
27 syscmd(rm -f TEMPFILE)dnl')')
28 #####
29 )dnl
30 ######################################################################
31 #####
32 #####   DO NOT EDIT THIS FILE!  Only edit the source .mc file.
33 #####
34 ######################################################################
35 ######################################################################
37 divert(-1)
39 changecom(\x01)
40 undefine(`format')
41 undefine(`hpux')
42 ifdef(`pushdef', `',
43         `errprint(`You need a newer version of M4, at least as new as
44 System V or GNU')
45         include(NoSuchFile)')
46 define(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)')
47 define(`POPDIVERT', `divert(__D__)popdef(`__D__')')
48 define(`OSTYPE',
49         `PUSHDIVERT(-1)
50         ifdef(`__OSTYPE__', `errprint(`duplicate OSTYPE'($1)
51 )')
52         define(`__OSTYPE__', $1)
53         define(`_ARG_', $2)
54         include(_CF_DIR_`'ostype/$1.m4)POPDIVERT`'')
55 ## helpful functions
56 define(`lower', `translit(`$1', `ABCDEFGHIJKLMNOPQRSTUVWXYZ', `abcdefghijklmnopqrstuvwxyz')')
57 define(`strcasecmp', `ifelse(lower($1), lower($2), `1', `0')')
58 ## access to further arguments in FEATURE/HACK
59 define(`_ACC_ARG_1_',`$1')
60 define(`_ACC_ARG_2_',`$2')
61 define(`_ACC_ARG_3_',`$3')
62 define(`_ACC_ARG_4_',`$4')
63 define(`_ACC_ARG_5_',`$5')
64 define(`_ACC_ARG_6_',`$6')
65 define(`_ACC_ARG_7_',`$7')
66 define(`_ACC_ARG_8_',`$8')
67 define(`_ACC_ARG_9_',`$9')
68 define(`_ARG1_',`_ACC_ARG_1_(_ARGS_)')
69 define(`_ARG2_',`_ACC_ARG_2_(_ARGS_)')
70 define(`_ARG3_',`_ACC_ARG_3_(_ARGS_)')
71 define(`_ARG4_',`_ACC_ARG_4_(_ARGS_)')
72 define(`_ARG5_',`_ACC_ARG_5_(_ARGS_)')
73 define(`_ARG6_',`_ACC_ARG_6_(_ARGS_)')
74 define(`_ARG7_',`_ACC_ARG_7_(_ARGS_)')
75 define(`_ARG8_',`_ACC_ARG_8_(_ARGS_)')
76 define(`_ARG9_',`_ACC_ARG_9_(_ARGS_)')
77 dnl define if not yet defined: if `$1' is not defined it will be `$2'
78 define(`_DEFIFNOT',`ifdef(`$1',`',`define(`$1',`$2')')')
79 dnl ----------------------------------------
80 dnl add a char $2 to a string $1 if it is not there
81 define(`_ADDCHAR_',`define(`_I_',`eval(index(`$1',`$2') >= 0)')`'ifelse(_I_,`1',`$1',`$1$2')')
82 dnl ----
83 dnl delete a char $2 from a string $1 if it is there
84 define(`_DELCHAR_',`define(`_IDX_',`index(`$1',`$2')')`'define(`_I_',`eval(_IDX_ >= 0)')`'ifelse(_I_,`1',`substr(`$1',0,_IDX_)`'substr(`$1',eval(_IDX_+1))',`$1')')
85 dnl ----
86 dnl apply a macro to a whole string by recursion (one char at a time)
87 dnl $1: macro
88 dnl $2: first argument to macro
89 dnl $3: list that is split up into characters
90 define(`_AP_',`ifelse(`$3',`',`$2',`_AP_(`$1',$1(`$2',substr(`$3',0,1)),substr(`$3',1))')')
91 dnl ----
92 dnl MODIFY_MAILER_FLAGS: append tail of $2 to $1_MF_A/D_
93 dnl A if head($2) = +
94 dnl D if head($2) = -
95 dnl $1_MF_ is set otherwise; set _A/D_ to `'
96 define(`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_,`')')')
97 dnl ----
98 dnl actually modify flags:
99 dnl $1: flags (strings) to modify
100 dnl $2: name of flags (just first part) to modify
101 dnl WARNING: the order might be important: if someone adds and delete the
102 dnl same characters, he does not deserve any better, does he?
103 dnl this could be coded more efficiently... (do not apply the macro if _MF_A/D_ is undefined)
104 define(`_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_',`'))')')
105 dnl usage:
106 dnl MODIFY_MAILER_FLAGS(`LOCAL',`+FlaGs')dnl
107 dnl in MAILER.m4: _MODMF_(LMF,`LOCAL')
108 dnl ----------------------------------------
109 define(`MAILER',
110 `define(`_M_N_', `ifelse(`$2', `', `$1', `$2')')dnl
111 ifdef(`_MAILER_DEFINED_', `', `define(`_MAILER_DEFINED_', `1')')dnl
112 ifdef(_MAILER_`'_M_N_`'_,
113 `errprint(`*** ERROR: MAILER('_M_N_`) already included
114 ')',
115 `define(_MAILER_`'_M_N_`'_, `')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')PUSHDIVERT(7)include(_CF_DIR_`'mailer/$1.m4)POPDIVERT`'')')
116 define(`DOMAIN', `PUSHDIVERT(-1)define(`_ARG_', `$2')include(_CF_DIR_`'domain/$1.m4)POPDIVERT`'')
117 define(`FEATURE', `PUSHDIVERT(-1)ifdef(`_MAILER_DEFINED_',`errprint(`*** ERROR: FEATURE() should be before MAILER()
118 ')')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'feature/$1.m4)POPDIVERT`'')
119 define(`HACK', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'hack/$1.m4)POPDIVERT`'')
120 define(`_DPO_',`')
121 define(`DAEMON_OPTIONS', `define(`_DPO_', defn(`_DPO_')
122 O DaemonPortOptions=`$1')')
123 define(`_CPO_',`')
124 define(`CLIENT_OPTIONS', `define(`_CPO_', defn(`_CPO_')
125 O ClientPortOptions=`$1')')
126 define(`_MAIL_FILTERS_', `')
127 define(`_MAIL_FILTERS_DEF', `')
128 define(`MAIL_FILTER', `define(`_MAIL_FILTERS_', defn(`_MAIL_FILTERS_')
129 X`'$1`, '`$2')
130 define(`_MAIL_FILTERS_DEF', defn(`_MAIL_FILTERS_DEF')`X')')
131 define(`INPUT_MAIL_FILTER', `MAIL_FILTER(`$1', `$2')
132 ifelse(defn(`confINPUT_MAIL_FILTERS')X, `X',
133 `define(`confINPUT_MAIL_FILTERS', $1)',
134 `define(`confINPUT_MAIL_FILTERS', defn(`confINPUT_MAIL_FILTERS')`, '`$1')')')
135 define(`_QUEUE_GROUP_', `')
136 define(`QUEUE_GROUP', `define(`_QUEUE_GROUP_', defn(`_QUEUE_GROUP_')
137 Q`'$1`, '`$2')')
138 define(`CF_LEVEL', `10')dnl
139 define(`VERSIONID', ``#####  $1  #####'')
140 define(`LOCAL_RULE_0', `divert(3)')
141 dnl for UUCP...
142 define(`LOCAL_UUCP', `divert(4)')
143 define(`LOCAL_RULE_1',
144 `divert(9)dnl
145 #######################################
146 ###  Ruleset 1 -- Sender Rewriting  ###
147 #######################################
149 Ssender=1
151 define(`LOCAL_RULE_2',
152 `divert(9)dnl
153 ##########################################
154 ###  Ruleset 2 -- Recipient Rewriting  ###
155 ##########################################
157 Srecipient=2
159 define(`LOCAL_RULESETS',
160 `divert(9)
163 define(`LOCAL_SRV_FEATURES',
164 `define(`_LOCAL_SRV_FEATURES_')
165 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_SRV_FEATURES
166 ')')
167 divert(9)
168 SLocal_srv_features')
169 define(`LOCAL_TRY_TLS',
170 `define(`_LOCAL_TRY_TLS_')
171 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TRY_TLS
172 ')')
173 divert(9)
174 SLocal_try_tls')
175 define(`LOCAL_TLS_RCPT',
176 `define(`_LOCAL_TLS_RCPT_')
177 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_RCPT
178 ')')
179 divert(9)
180 SLocal_tls_rcpt')
181 define(`LOCAL_TLS_CLIENT',
182 `define(`_LOCAL_TLS_CLIENT_')
183 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_CLIENT
184 ')')
185 divert(9)
186 SLocal_tls_client')
187 define(`LOCAL_TLS_SERVER',
188 `define(`_LOCAL_TLS_SERVER_')
189 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_SERVER
190 ')')
191 divert(9)
192 SLocal_tls_server')
193 define(`LOCAL_RULE_3', `divert(2)')
194 define(`LOCAL_CONFIG', `divert(6)')
195 define(`MAILER_DEFINITIONS', `divert(7)')
196 define(`LOCAL_NET_CONFIG', `define(`_LOCAL_RULES_', 1)divert(1)')
197 define(`UUCPSMTP', `R DOL(*) < @ $1 .UUCP > DOL(*)      DOL(1) < @ $2 > DOL(2)')
198 define(`CONCAT', `$1$2$3$4$5$6$7')
199 define(`DOL', ``$'$1')
200 define(`SITECONFIG',
201 `CONCAT(D, $3, $2)
202 define(`_CLASS_$3_', `')dnl
203 ifelse($3, U, C{w}$2 $2.UUCP, `dnl')
204 define(`SITE', `ifelse(CONCAT($'2`, $3), SU,
205                 CONCAT(CY, $'1`),
206                 CONCAT(C, $3, $'1`))')
207 sinclude(_CF_DIR_`'siteconfig/$1.m4)')
208 define(`EXPOSED_USER', `PUSHDIVERT(5)C{E}$1
209 POPDIVERT`'dnl`'')
210 define(`EXPOSED_USER_FILE', `PUSHDIVERT(5)F{E}$1 
211 POPDIVERT`'dnl`'')
212 define(`LOCAL_USER', `PUSHDIVERT(5)C{L}$1
213 POPDIVERT`'dnl`'')
214 define(`LOCAL_USER_FILE', `PUSHDIVERT(5)F{L}$1
215 POPDIVERT`'dnl`'')
216 define(`MASQUERADE_AS', `define(`MASQUERADE_NAME', $1)')
217 define(`MASQUERADE_DOMAIN', `PUSHDIVERT(5)C{M}$1
218 POPDIVERT`'dnl`'')
219 define(`MASQUERADE_EXCEPTION', `PUSHDIVERT(5)C{N}$1
220 POPDIVERT`'dnl`'')
221 define(`MASQUERADE_DOMAIN_FILE', `PUSHDIVERT(5)F{M}$1
222 POPDIVERT`'dnl`'')
223 define(`MASQUERADE_EXCEPTION_FILE', `PUSHDIVERT(5)F{N}$1
224 POPDIVERT`'dnl`'')
225 define(`LOCAL_DOMAIN', `PUSHDIVERT(5)C{w}$1
226 POPDIVERT`'dnl`'')
227 define(`CANONIFY_DOMAIN', `PUSHDIVERT(5)C{Canonify}$1
228 POPDIVERT`'dnl`'')
229 define(`CANONIFY_DOMAIN_FILE', `PUSHDIVERT(5)F{Canonify}$1
230 POPDIVERT`'dnl`'')
231 define(`GENERICS_DOMAIN', `PUSHDIVERT(5)C{G}$1
232 POPDIVERT`'dnl`'')
233 define(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)F{G}$1
234 POPDIVERT`'dnl`'')
235 define(`LDAPROUTE_DOMAIN', `PUSHDIVERT(5)C{LDAPRoute}$1
236 POPDIVERT`'dnl`'')
237 define(`LDAPROUTE_DOMAIN_FILE', `PUSHDIVERT(5)F{LDAPRoute}$1
238 POPDIVERT`'dnl`'')
239 define(`LDAPROUTE_EQUIVALENT', `PUSHDIVERT(5)C{LDAPRouteEquiv}$1
240 POPDIVERT`'dnl`'')
241 define(`LDAPROUTE_EQUIVALENT_FILE', `PUSHDIVERT(5)F{LDAPRouteEquiv}$1
242 POPDIVERT`'dnl`'')
243 define(`VIRTUSER_DOMAIN', `PUSHDIVERT(5)C{VirtHost}$1
244 define(`_VIRTHOSTS_')
245 POPDIVERT`'dnl`'')
246 define(`VIRTUSER_DOMAIN_FILE', `PUSHDIVERT(5)F{VirtHost}$1
247 define(`_VIRTHOSTS_')
248 POPDIVERT`'dnl`'')
249 define(`RELAY_DOMAIN', `PUSHDIVERT(5)C{R}$1
250 POPDIVERT`'dnl`'')
251 define(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)F{R}$1
252 POPDIVERT`'dnl`'')
253 define(`TRUST_AUTH_MECH', `_DEFIFNOT(`_USE_AUTH_',`1')PUSHDIVERT(5)C{TrustAuthMech}$1
254 POPDIVERT`'dnl`'')
255 define(`_OPTINS', `ifdef(`$1', `$2$1$3')')
258 m4wrap(`include(_CF_DIR_`m4/proto.m4')')
260 # default location for files
261 ifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')')
263 # set our default hashed database type
264 define(`DATABASE_MAP_TYPE', `hash')
266 # set up default values for options
267 define(`ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases')
268 define(`confMAILER_NAME', ``MAILER-DAEMON'')
269 define(`confFROM_LINE', `From $g $d')
270 define(`confOPERATORS', `.:%@!^/[]+')
271 define(`confSMTP_LOGIN_MSG', `$j Sendmail $v/$Z; $b')
272 define(`_REC_AUTH_', `$.$?{auth_type}(authenticated')
273 define(`_REC_FULL_AUTH_', `$.$?{auth_type}(user=${auth_authen} $?{auth_author}author=${auth_author} $.mech=${auth_type}')
274 define(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)')
275 define(`_REC_END_', `for $u; $|;
276         $.$b')
277 define(`_REC_TLS_', `(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u')
278 define(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}')
279 define(`confRECEIVED_HEADER', `_REC_HDR_
280         _REC_AUTH_$?{auth_ssf} bits=${auth_ssf}$.)
281         _REC_BY_
282         _REC_TLS_
283         _REC_END_')
284 define(`confSEVEN_BIT_INPUT', `False')
285 define(`confALIAS_WAIT', `10')
286 define(`confMIN_FREE_BLOCKS', `100')
287 define(`confBLANK_SUB', `.')
288 define(`confCON_EXPENSIVE', `False')
289 define(`confDELIVERY_MODE', `background')
290 define(`confTEMP_FILE_MODE', `0600')
291 define(`confMCI_CACHE_SIZE', `2')
292 define(`confMCI_CACHE_TIMEOUT', `5m')
293 define(`confUSE_ERRORS_TO', `False')
294 define(`confLOG_LEVEL', `9')
295 define(`confCHECK_ALIASES', `False')
296 define(`confOLD_STYLE_HEADERS', `True')
297 define(`confPRIVACY_FLAGS', `authwarnings')
298 define(`confSAFE_QUEUE', `True')
299 define(`confTO_QUEUERETURN', `5d')
300 define(`confTO_QUEUEWARN', `4h')
301 define(`confTIME_ZONE', `USE_SYSTEM')
302 define(`confCW_FILE', `MAIL_SETTINGS_DIR`'local-host-names')
303 define(`confMIME_FORMAT_ERRORS', `True')
304 define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')
305 define(`confCR_FILE', `-o MAIL_SETTINGS_DIR`'relay-domains')
306 define(`confMILTER_MACROS_CONNECT', ``j, _, {daemon_name}, {if_name}, {if_addr}'')
307 define(`confMILTER_MACROS_HELO', ``{tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}'')
308 define(`confMILTER_MACROS_ENVFROM', ``i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}'')
309 define(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'')
310 define(`confMILTER_MACROS_EOM', `{msg_id}')
313 divert(0)dnl
314 VERSIONID(`$Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $')