]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/sendmail/cf/m4/cfhead.m4
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / sendmail / cf / m4 / cfhead.m4
1 #
2 # Copyright (c) 1998-2004, 2009, 2010 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$
13 #
14
15 ######################################################################
16 ######################################################################
17 #####
18 #####           SENDMAIL CONFIGURATION FILE
19 #####
20 ifdef(`__win32__', `dnl', `dnl
21 ifdef(`TEMPFILE', `dnl', `define(`TEMPFILE', maketemp(/tmp/cfXXXXXX))dnl
22 syscmd(sh _CF_DIR_`'sh/makeinfo.sh _CF_DIR_ > TEMPFILE)dnl
23 include(TEMPFILE)dnl
24 syscmd(rm -f TEMPFILE)dnl')')
25 #####
26 ######################################################################
27 #####
28 #####   DO NOT EDIT THIS FILE!  Only edit the source .mc file.
29 #####
30 ######################################################################
31 ######################################################################
32
33 divert(-1)
34
35 changecom(\ 1)
36 undefine(`format')
37 undefine(`hpux')
38 ifdef(`pushdef', `',
39         `errprint(`You need a newer version of M4, at least as new as
40 System V or GNU')
41         include(NoSuchFile)')
42 define(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)')
43 define(`POPDIVERT', `divert(__D__)popdef(`__D__')')
44 define(`OSTYPE',
45         `PUSHDIVERT(-1)
46         ifdef(`__OSTYPE__', `errprint(`duplicate OSTYPE'($1)
47 )')
48         define(`__OSTYPE__', $1)
49         define(`_ARG_', $2)
50         include(_CF_DIR_`'ostype/$1.m4)POPDIVERT`'')
51 ## helpful functions
52 define(`lower', `translit(`$1', `ABCDEFGHIJKLMNOPQRSTUVWXYZ', `abcdefghijklmnopqrstuvwxyz')')
53 define(`strcasecmp', `ifelse(lower($1), lower($2), `1', `0')')
54 ## access to further arguments in FEATURE/HACK
55 define(`_ACC_ARG_1_',`$1')
56 define(`_ACC_ARG_2_',`$2')
57 define(`_ACC_ARG_3_',`$3')
58 define(`_ACC_ARG_4_',`$4')
59 define(`_ACC_ARG_5_',`$5')
60 define(`_ACC_ARG_6_',`$6')
61 define(`_ACC_ARG_7_',`$7')
62 define(`_ACC_ARG_8_',`$8')
63 define(`_ACC_ARG_9_',`$9')
64 define(`_ARG1_',`_ACC_ARG_1_(_ARGS_)')
65 define(`_ARG2_',`_ACC_ARG_2_(_ARGS_)')
66 define(`_ARG3_',`_ACC_ARG_3_(_ARGS_)')
67 define(`_ARG4_',`_ACC_ARG_4_(_ARGS_)')
68 define(`_ARG5_',`_ACC_ARG_5_(_ARGS_)')
69 define(`_ARG6_',`_ACC_ARG_6_(_ARGS_)')
70 define(`_ARG7_',`_ACC_ARG_7_(_ARGS_)')
71 define(`_ARG8_',`_ACC_ARG_8_(_ARGS_)')
72 define(`_ARG9_',`_ACC_ARG_9_(_ARGS_)')
73 dnl define if not yet defined: if `$1' is not defined it will be `$2'
74 define(`_DEFIFNOT',`ifdef(`$1',`',`define(`$1',`$2')')')
75 dnl ----------------------------------------
76 dnl add a char $2 to a string $1 if it is not there
77 define(`_ADDCHAR_',`define(`_I_',`eval(index(`$1',`$2') >= 0)')`'ifelse(_I_,`1',`$1',`$1$2')')
78 dnl ----
79 dnl delete a char $2 from a string $1 if it is there
80 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')')
81 dnl ----
82 dnl apply a macro to a whole string by recursion (one char at a time)
83 dnl $1: macro
84 dnl $2: first argument to macro
85 dnl $3: list that is split up into characters
86 define(`_AP_',`ifelse(`$3',`',`$2',`_AP_(`$1',$1(`$2',substr(`$3',0,1)),substr(`$3',1))')')
87 dnl ----
88 dnl MODIFY_MAILER_FLAGS: append tail of $2 to $1_MF_A/D_
89 dnl A if head($2) = +
90 dnl D if head($2) = -
91 dnl $1_MF_ is set otherwise; set _A/D_ to `'
92 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_,`')')')
93 dnl ----
94 dnl actually modify flags:
95 dnl $1: flags (strings) to modify
96 dnl $2: name of flags (just first part) to modify
97 dnl WARNING: the order might be important: if someone adds and delete the
98 dnl same characters, he does not deserve any better, does he?
99 dnl this could be coded more efficiently... (do not apply the macro if _MF_A/D_ is undefined)
100 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_',`'))')')
101 dnl usage:
102 dnl MODIFY_MAILER_FLAGS(`LOCAL',`+FlaGs')dnl
103 dnl in MAILER.m4: _MODMF_(LMF,`LOCAL')
104 dnl ----------------------------------------
105 define(`MAILER',
106 `define(`_M_N_', `ifelse(`$2', `', `$1', `$2')')dnl
107 ifdef(`_MAILER_DEFINED_', `', `define(`_MAILER_DEFINED_', `1')')dnl
108 ifdef(_MAILER_`'_M_N_`'_,
109 `errprint(`*** ERROR: MAILER('_M_N_`) already included
110 ')',
111 `define(_MAILER_`'_M_N_`'_, `')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')PUSHDIVERT(7)include(_CF_DIR_`'mailer/$1.m4)POPDIVERT`'')')
112 define(`DOMAIN', `PUSHDIVERT(-1)define(`_ARG_', `$2')include(_CF_DIR_`'domain/$1.m4)POPDIVERT`'')
113 define(`FEATURE', `PUSHDIVERT(-1)ifdef(`_MAILER_DEFINED_',`errprint(`*** ERROR: FEATURE() should be before MAILER()
114 ')')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'feature/$1.m4)POPDIVERT`'')
115 define(`HACK', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'hack/$1.m4)POPDIVERT`'')
116 define(`_DPO_',`')
117 define(`DAEMON_OPTIONS', `define(`_DPO_', defn(`_DPO_')
118 O DaemonPortOptions=`$1')')
119 define(`_CPO_',`')
120 define(`CLIENT_OPTIONS', `define(`_CPO_', defn(`_CPO_')
121 O ClientPortOptions=`$1')')
122 define(`_MAIL_FILTERS_', `')
123 define(`_MAIL_FILTERS_DEF', `')
124 define(`MAIL_FILTER', `define(`_MAIL_FILTERS_', defn(`_MAIL_FILTERS_')
125 X`'$1`, '`$2')
126 define(`_MAIL_FILTERS_DEF', defn(`_MAIL_FILTERS_DEF')`X')')
127 define(`INPUT_MAIL_FILTER', `MAIL_FILTER(`$1', `$2')
128 ifelse(defn(`confINPUT_MAIL_FILTERS')X, `X',
129 `define(`confINPUT_MAIL_FILTERS', $1)',
130 `define(`confINPUT_MAIL_FILTERS', defn(`confINPUT_MAIL_FILTERS')`, '`$1')')')
131 define(`_QUEUE_GROUP_', `')
132 define(`QUEUE_GROUP', `define(`_QUEUE_GROUP_', defn(`_QUEUE_GROUP_')
133 Q`'$1`, '`$2')')
134 define(`CF_LEVEL', `10')dnl
135 define(`VERSIONID', ``#####  $1  #####'')
136 define(`LOCAL_RULE_0', `divert(3)')
137 dnl for UUCP...
138 define(`LOCAL_UUCP', `divert(4)')
139 define(`LOCAL_RULE_1',
140 `divert(9)dnl
141 #######################################
142 ###  Ruleset 1 -- Sender Rewriting  ###
143 #######################################
144
145 Ssender=1
146 ')
147 define(`LOCAL_RULE_2',
148 `divert(9)dnl
149 ##########################################
150 ###  Ruleset 2 -- Recipient Rewriting  ###
151 ##########################################
152
153 Srecipient=2
154 ')
155 define(`LOCAL_RULESETS',
156 `divert(9)
157
158 ')
159 define(`LOCAL_SRV_FEATURES',
160 `define(`_LOCAL_SRV_FEATURES_')
161 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_SRV_FEATURES
162 ')')
163 divert(9)
164 SLocal_srv_features')
165 define(`LOCAL_TRY_TLS',
166 `define(`_LOCAL_TRY_TLS_')
167 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TRY_TLS
168 ')')
169 divert(9)
170 SLocal_try_tls')
171 define(`LOCAL_TLS_RCPT',
172 `define(`_LOCAL_TLS_RCPT_')
173 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_RCPT
174 ')')
175 divert(9)
176 SLocal_tls_rcpt')
177 define(`LOCAL_TLS_CLIENT',
178 `define(`_LOCAL_TLS_CLIENT_')
179 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_CLIENT
180 ')')
181 divert(9)
182 SLocal_tls_client')
183 define(`LOCAL_TLS_SERVER',
184 `define(`_LOCAL_TLS_SERVER_')
185 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_SERVER
186 ')')
187 divert(9)
188 SLocal_tls_server')
189 define(`LOCAL_RULE_3', `divert(2)')
190 define(`LOCAL_CONFIG', `divert(6)')
191 define(`MAILER_DEFINITIONS', `divert(7)')
192 define(`LOCAL_DNSBL', `divert(8)')
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 define(`confMILTER_MACROS_EOM', `{msg_id}')
309
310
311 divert(0)dnl
312 VERSIONID(`$Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $')