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