Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most
[dragonfly.git] / contrib / sendmail / cf / m4 / cfhead.m4
1 #
2 # Copyright (c) 1998-2002 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: 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 $
14 #
15
16 ######################################################################
17 ######################################################################
18 #####
19 #####           SENDMAIL CONFIGURATION FILE
20 #####
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
24 include(TEMPFILE)dnl
25 syscmd(rm -f TEMPFILE)dnl')')
26 #####
27 ######################################################################
28 #####
29 #####   DO NOT EDIT THIS FILE!  Only edit the source .mc file.
30 #####
31 ######################################################################
32 ######################################################################
33
34 divert(-1)
35
36 changecom(\ 1)
37 undefine(`format')
38 undefine(`hpux')
39 ifdef(`pushdef', `',
40         `errprint(`You need a newer version of M4, at least as new as
41 System V or GNU')
42         include(NoSuchFile)')
43 define(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)')
44 define(`POPDIVERT', `divert(__D__)popdef(`__D__')')
45 define(`OSTYPE',
46         `PUSHDIVERT(-1)
47         ifdef(`__OSTYPE__', `errprint(`duplicate OSTYPE'($1)
48 )')
49         define(`__OSTYPE__', $1)
50         define(`_ARG_', $2)
51         include(_CF_DIR_`'ostype/$1.m4)POPDIVERT`'')
52 ## helpful functions
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')')
79 dnl ----
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')')
82 dnl ----
83 dnl apply a macro to a whole string by recursion (one char at a time)
84 dnl $1: macro
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))')')
88 dnl ----
89 dnl MODIFY_MAILER_FLAGS: append tail of $2 to $1_MF_A/D_
90 dnl A if head($2) = +
91 dnl D if head($2) = -
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_,`')')')
94 dnl ----
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_',`'))')')
102 dnl usage:
103 dnl MODIFY_MAILER_FLAGS(`LOCAL',`+FlaGs')dnl
104 dnl in MAILER.m4: _MODMF_(LMF,`LOCAL')
105 dnl ----------------------------------------
106 define(`MAILER',
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
111 ')',
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`'')
117 define(`_DPO_',`')
118 define(`DAEMON_OPTIONS', `define(`_DPO_', defn(`_DPO_')
119 O DaemonPortOptions=`$1')')
120 define(`_CPO_',`')
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_')
126 X`'$1`, '`$2')
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_')
134 Q`'$1`, '`$2')')
135 define(`CF_LEVEL', `10')dnl
136 define(`VERSIONID', ``#####  $1  #####'')
137 define(`LOCAL_RULE_0', `divert(3)')
138 dnl for UUCP...
139 define(`LOCAL_UUCP', `divert(4)')
140 define(`LOCAL_RULE_1',
141 `divert(9)dnl
142 #######################################
143 ###  Ruleset 1 -- Sender Rewriting  ###
144 #######################################
145
146 Ssender=1
147 ')
148 define(`LOCAL_RULE_2',
149 `divert(9)dnl
150 ##########################################
151 ###  Ruleset 2 -- Recipient Rewriting  ###
152 ##########################################
153
154 Srecipient=2
155 ')
156 define(`LOCAL_RULESETS',
157 `divert(9)
158
159 ')
160 define(`LOCAL_SRV_FEATURES',
161 `define(`_LOCAL_SRV_FEATURES_')
162 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_SRV_FEATURES
163 ')')
164 divert(9)
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
169 ')')
170 divert(9)
171 SLocal_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
175 ')')
176 divert(9)
177 SLocal_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
181 ')')
182 divert(9)
183 SLocal_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
187 ')')
188 divert(9)
189 SLocal_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')
197 define(`SITECONFIG',
198 `CONCAT(D, $3, $2)
199 define(`_CLASS_$3_', `')dnl
200 ifelse($3, U, C{w}$2 $2.UUCP, `dnl')
201 define(`SITE', `ifelse(CONCAT($'2`, $3), SU,
202                 CONCAT(CY, $'1`),
203                 CONCAT(C, $3, $'1`))')
204 sinclude(_CF_DIR_`'siteconfig/$1.m4)')
205 define(`EXPOSED_USER', `PUSHDIVERT(5)C{E}$1
206 POPDIVERT`'dnl`'')
207 define(`EXPOSED_USER_FILE', `PUSHDIVERT(5)F{E}$1 
208 POPDIVERT`'dnl`'')
209 define(`LOCAL_USER', `PUSHDIVERT(5)C{L}$1
210 POPDIVERT`'dnl`'')
211 define(`LOCAL_USER_FILE', `PUSHDIVERT(5)F{L}$1
212 POPDIVERT`'dnl`'')
213 define(`MASQUERADE_AS', `define(`MASQUERADE_NAME', $1)')
214 define(`MASQUERADE_DOMAIN', `PUSHDIVERT(5)C{M}$1
215 POPDIVERT`'dnl`'')
216 define(`MASQUERADE_EXCEPTION', `PUSHDIVERT(5)C{N}$1
217 POPDIVERT`'dnl`'')
218 define(`MASQUERADE_DOMAIN_FILE', `PUSHDIVERT(5)F{M}$1
219 POPDIVERT`'dnl`'')
220 define(`MASQUERADE_EXCEPTION_FILE', `PUSHDIVERT(5)F{N}$1
221 POPDIVERT`'dnl`'')
222 define(`LOCAL_DOMAIN', `PUSHDIVERT(5)C{w}$1
223 POPDIVERT`'dnl`'')
224 define(`CANONIFY_DOMAIN', `PUSHDIVERT(5)C{Canonify}$1
225 POPDIVERT`'dnl`'')
226 define(`CANONIFY_DOMAIN_FILE', `PUSHDIVERT(5)F{Canonify}$1
227 POPDIVERT`'dnl`'')
228 define(`GENERICS_DOMAIN', `PUSHDIVERT(5)C{G}$1
229 POPDIVERT`'dnl`'')
230 define(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)F{G}$1
231 POPDIVERT`'dnl`'')
232 define(`LDAPROUTE_DOMAIN', `PUSHDIVERT(5)C{LDAPRoute}$1
233 POPDIVERT`'dnl`'')
234 define(`LDAPROUTE_DOMAIN_FILE', `PUSHDIVERT(5)F{LDAPRoute}$1
235 POPDIVERT`'dnl`'')
236 define(`LDAPROUTE_EQUIVALENT', `PUSHDIVERT(5)C{LDAPRouteEquiv}$1
237 POPDIVERT`'dnl`'')
238 define(`LDAPROUTE_EQUIVALENT_FILE', `PUSHDIVERT(5)F{LDAPRouteEquiv}$1
239 POPDIVERT`'dnl`'')
240 define(`VIRTUSER_DOMAIN', `PUSHDIVERT(5)C{VirtHost}$1
241 define(`_VIRTHOSTS_')
242 POPDIVERT`'dnl`'')
243 define(`VIRTUSER_DOMAIN_FILE', `PUSHDIVERT(5)F{VirtHost}$1
244 define(`_VIRTHOSTS_')
245 POPDIVERT`'dnl`'')
246 define(`RELAY_DOMAIN', `PUSHDIVERT(5)C{R}$1
247 POPDIVERT`'dnl`'')
248 define(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)F{R}$1
249 POPDIVERT`'dnl`'')
250 define(`TRUST_AUTH_MECH', `_DEFIFNOT(`_USE_AUTH_',`1')PUSHDIVERT(5)C{TrustAuthMech}$1
251 POPDIVERT`'dnl`'')
252 define(`_OPTINS', `ifdef(`$1', `$2$1$3')')
253
254
255 m4wrap(`include(_CF_DIR_`m4/proto.m4')')
256
257 # default location for files
258 ifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')')
259
260 # set our default hashed database type
261 define(`DATABASE_MAP_TYPE', `hash')
262
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; $|;
273         $.$b$?g
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}$.)
279         _REC_BY_
280         _REC_TLS_
281         _REC_END_')
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}'')
308
309
310 divert(0)dnl
311 VERSIONID(`$Id: cfhead.m4,v 8.108.2.2 2003/03/11 21:24:20 ca Exp $')