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