]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/sendmail/cf/m4/cfhead.m4
Merge sendmail 8.16.1 to HEAD: See contrib/sendmail/RELEASE_NOTES for details
[FreeBSD/FreeBSD.git] / contrib / sendmail / cf / m4 / cfhead.m4
1 #
2 # Copyright (c) 1998-2004, 2009, 2010 Proofpoint, 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(`_NO_MAKEINFO_', `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 ifdef(`_NO_MAKEINFO_',, `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 Use a "token" for this error message to make them unique?
77 dnl Note: this is not a documented option. To enable it, use:
78 dnl define(`_USETMPFTOKEN_', `1')dnl
79 ifdef(`_USETMPFTOKEN_', `
80 define(_TMPFMSG_, `"451 Temporary system failure $1. Please try again later."')
81 ', `dnl
82 define(_TMPFMSG_, `"451 Temporary system failure. Please try again later."')
83 ')
84 dnl ----------------------------------------
85 dnl add a char $2 to a string $1 if it is not there
86 define(`_ADDCHAR_',`define(`_I_',`eval(index(`$1',`$2') >= 0)')`'ifelse(_I_,`1',`$1',`$1$2')')
87 dnl ----
88 dnl delete a char $2 from a string $1 if it is there
89 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')')
90 dnl ----
91 dnl apply a macro to a whole string by recursion (one char at a time)
92 dnl $1: macro
93 dnl $2: first argument to macro
94 dnl $3: list that is split up into characters
95 define(`_AP_',`ifelse(`$3',`',`$2',`_AP_(`$1',$1(`$2',substr(`$3',0,1)),substr(`$3',1))')')
96 dnl ----
97 dnl MODIFY_MAILER_FLAGS: append tail of $2 to $1_MF_A/D_
98 dnl A if head($2) = +
99 dnl D if head($2) = -
100 dnl $1_MF_ is set otherwise; set _A/D_ to `'
101 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_,`')')')
102 dnl ----
103 dnl actually modify flags:
104 dnl $1: flags (strings) to modify
105 dnl $2: name of flags (just first part) to modify
106 dnl WARNING: the order might be important: if someone adds and delete the
107 dnl same characters, he does not deserve any better, does he?
108 dnl this could be coded more efficiently... (do not apply the macro if _MF_A/D_ is undefined)
109 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_',`'))')')
110 dnl usage:
111 dnl MODIFY_MAILER_FLAGS(`LOCAL',`+FlaGs')dnl
112 dnl in MAILER.m4: _MODMF_(LMF,`LOCAL')
113 dnl ----------------------------------------
114 define(`MAILER',
115 `define(`_M_N_', `ifelse(`$2', `', `$1', `$2')')dnl
116 ifdef(`_MAILER_DEFINED_', `', `define(`_MAILER_DEFINED_', `1')')dnl
117 ifdef(_MAILER_`'_M_N_`'_,
118 `errprint(`*** ERROR: MAILER('_M_N_`) already included
119 ')',
120 `define(_MAILER_`'_M_N_`'_, `')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')PUSHDIVERT(7)include(_CF_DIR_`'mailer/$1.m4)POPDIVERT`'')')
121 define(`DOMAIN', `PUSHDIVERT(-1)define(`_ARG_', `$2')include(_CF_DIR_`'domain/$1.m4)POPDIVERT`'')
122 define(`FEATURE', `PUSHDIVERT(-1)ifdef(`_MAILER_DEFINED_',`errprint(`*** ERROR: FEATURE() should be before MAILER()
123 ')')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'feature/$1.m4)POPDIVERT`'')
124 define(`HACK', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'hack/$1.m4)POPDIVERT`'')
125 define(`_DPO_',`')
126 define(`DAEMON_OPTIONS', `define(`_DPO_', defn(`_DPO_')
127 O DaemonPortOptions=`$1')')
128 define(`_CPO_',`')
129 define(`CLIENT_OPTIONS', `define(`_CPO_', defn(`_CPO_')
130 O ClientPortOptions=`$1')')
131 define(`_MAIL_FILTERS_', `')
132 define(`_MAIL_FILTERS_DEF', `')
133 define(`MAIL_FILTER', `define(`_MAIL_FILTERS_', defn(`_MAIL_FILTERS_')
134 X`'$1`, '`$2')
135 define(`_MAIL_FILTERS_DEF', defn(`_MAIL_FILTERS_DEF')`X')')
136 define(`INPUT_MAIL_FILTER', `MAIL_FILTER(`$1', `$2')
137 ifelse(defn(`confINPUT_MAIL_FILTERS')X, `X',
138 `define(`confINPUT_MAIL_FILTERS', $1)',
139 `define(`confINPUT_MAIL_FILTERS', defn(`confINPUT_MAIL_FILTERS')`, '`$1')')')
140 define(`_QUEUE_GROUP_', `')
141 define(`QUEUE_GROUP', `define(`_QUEUE_GROUP_', defn(`_QUEUE_GROUP_')
142 Q`'$1`, '`$2')')
143 define(`CF_LEVEL', `10')dnl
144 define(`VERSIONID', ``#####  $1  #####'')
145 define(`LOCAL_RULE_0', `divert(3)')
146 dnl for UUCP...
147 define(`LOCAL_UUCP', `divert(4)')
148 define(`LOCAL_RULE_1',
149 `divert(9)dnl
150 #######################################
151 ###  Ruleset 1 -- Sender Rewriting  ###
152 #######################################
153
154 Ssender=1
155 ')
156 define(`LOCAL_RULE_2',
157 `divert(9)dnl
158 ##########################################
159 ###  Ruleset 2 -- Recipient Rewriting  ###
160 ##########################################
161
162 Srecipient=2
163 ')
164 define(`LOCAL_RULESETS',
165 `divert(9)
166
167 ')
168 define(`LOCAL_SRV_FEATURES',
169 `define(`_LOCAL_SRV_FEATURES_')
170 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_SRV_FEATURES
171 ')')
172 divert(9)
173 SLocal_srv_features')
174 define(`LOCAL_TRY_TLS',
175 `define(`_LOCAL_TRY_TLS_')
176 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TRY_TLS
177 ')')
178 divert(9)
179 SLocal_try_tls')
180 define(`LOCAL_TLS_RCPT',
181 `define(`_LOCAL_TLS_RCPT_')
182 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_RCPT
183 ')')
184 divert(9)
185 SLocal_tls_rcpt')
186 define(`LOCAL_TLS_CLIENT',
187 `define(`_LOCAL_TLS_CLIENT_')
188 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_CLIENT
189 ')')
190 divert(9)
191 SLocal_tls_client')
192 define(`LOCAL_TLS_SERVER',
193 `define(`_LOCAL_TLS_SERVER_')
194 ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_SERVER
195 ')')
196 divert(9)
197 SLocal_tls_server')
198 define(`LOCAL_RULE_3', `divert(2)')
199 define(`LOCAL_CONFIG', `divert(6)')
200 define(`MAILER_DEFINITIONS', `divert(7)')
201 define(`LOCAL_DNSBL', `divert(8)')
202 define(`LOCAL_NET_CONFIG', `define(`_LOCAL_RULES_', 1)divert(1)')
203 define(`UUCPSMTP', `R DOL(*) < @ $1 .UUCP > DOL(*)      DOL(1) < @ $2 > DOL(2)')
204 define(`CONCAT', `$1$2$3$4$5$6$7')
205 define(`DOL', ``$'$1')
206 define(`SITECONFIG',
207 `CONCAT(D, $3, $2)
208 define(`_CLASS_$3_', `')dnl
209 ifelse($3, U, C{w}$2 $2.UUCP, `dnl')
210 define(`SITE', `ifelse(CONCAT($'2`, $3), SU,
211                 CONCAT(CY, $'1`),
212                 CONCAT(C, $3, $'1`))')
213 sinclude(_CF_DIR_`'siteconfig/$1.m4)')
214 define(`EXPOSED_USER', `PUSHDIVERT(5)C{E}$1
215 POPDIVERT`'dnl`'')
216 define(`EXPOSED_USER_FILE', `PUSHDIVERT(5)F{E}$1 
217 POPDIVERT`'dnl`'')
218 define(`LOCAL_USER', `PUSHDIVERT(5)C{L}$1
219 POPDIVERT`'dnl`'')
220 define(`LOCAL_USER_FILE', `PUSHDIVERT(5)F{L}$1
221 POPDIVERT`'dnl`'')
222 define(`MASQUERADE_AS', `define(`MASQUERADE_NAME', $1)')
223 define(`MASQUERADE_DOMAIN', `PUSHDIVERT(5)C{M}$1
224 POPDIVERT`'dnl`'')
225 define(`MASQUERADE_EXCEPTION', `PUSHDIVERT(5)C{N}$1
226 POPDIVERT`'dnl`'')
227 define(`MASQUERADE_DOMAIN_FILE', `PUSHDIVERT(5)F{M}$1
228 POPDIVERT`'dnl`'')
229 define(`MASQUERADE_EXCEPTION_FILE', `PUSHDIVERT(5)F{N}$1
230 POPDIVERT`'dnl`'')
231 define(`LOCAL_DOMAIN', `PUSHDIVERT(5)C{w}$1
232 POPDIVERT`'dnl`'')
233 define(`CANONIFY_DOMAIN', `PUSHDIVERT(5)C{Canonify}$1
234 POPDIVERT`'dnl`'')
235 define(`CANONIFY_DOMAIN_FILE', `PUSHDIVERT(5)F{Canonify}$1
236 POPDIVERT`'dnl`'')
237 define(`GENERICS_DOMAIN', `PUSHDIVERT(5)C{G}$1
238 POPDIVERT`'dnl`'')
239 define(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)F{G}$1
240 POPDIVERT`'dnl`'')
241 define(`LDAPROUTE_DOMAIN', `PUSHDIVERT(5)C{LDAPRoute}$1
242 POPDIVERT`'dnl`'')
243 define(`LDAPROUTE_DOMAIN_FILE', `PUSHDIVERT(5)F{LDAPRoute}$1
244 POPDIVERT`'dnl`'')
245 define(`LDAPROUTE_EQUIVALENT', `PUSHDIVERT(5)C{LDAPRouteEquiv}$1
246 POPDIVERT`'dnl`'')
247 define(`LDAPROUTE_EQUIVALENT_FILE', `PUSHDIVERT(5)F{LDAPRouteEquiv}$1
248 POPDIVERT`'dnl`'')
249 define(`VIRTUSER_DOMAIN', `PUSHDIVERT(5)C{VirtHost}$1
250 define(`_VIRTHOSTS_')
251 POPDIVERT`'dnl`'')
252 define(`VIRTUSER_DOMAIN_FILE', `PUSHDIVERT(5)F{VirtHost}$1
253 define(`_VIRTHOSTS_')
254 POPDIVERT`'dnl`'')
255 define(`RELAY_DOMAIN', `PUSHDIVERT(5)C{R}$1
256 POPDIVERT`'dnl`'')
257 define(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)F{R}$1
258 POPDIVERT`'dnl`'')
259 define(`TRUST_AUTH_MECH', `_DEFIFNOT(`_USE_AUTH_',`1')PUSHDIVERT(5)C{TrustAuthMech}$1
260 POPDIVERT`'dnl`'')
261 define(`_OPTINS', `ifdef(`$1', `$2$1$3')')
262
263
264 m4wrap(`include(_CF_DIR_`m4/proto.m4')')
265
266 # default location for files
267 ifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')')
268
269 # set our default hashed database type
270 define(`DATABASE_MAP_TYPE', `hash')
271
272 # set up default values for options
273 define(`ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases')
274 define(`confMAILER_NAME', ``MAILER-DAEMON'')
275 define(`confFROM_LINE', `From $g $d')
276 define(`confOPERATORS', `.:%@!^/[]+')
277 define(`confSMTP_LOGIN_MSG', `$j Sendmail $v/$Z; $b')
278 define(`_REC_AUTH_', `$.$?{auth_type}(authenticated')
279 define(`_REC_FULL_AUTH_', `$.$?{auth_type}(user=${auth_authen} $?{auth_author}author=${auth_author} $.mech=${auth_type}')
280 define(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)')
281 define(`_REC_END_', `for $u; $|;
282         $.$b$?g
283         (envelope-from $g)$.')
284 define(`_REC_TLS_', `(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u')
285 define(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}')
286 define(`confRECEIVED_HEADER', `_REC_HDR_
287         _REC_AUTH_$?{auth_ssf} bits=${auth_ssf}$.)
288         _REC_BY_
289         _REC_TLS_
290         _REC_END_')
291 define(`confSEVEN_BIT_INPUT', `False')
292 define(`confALIAS_WAIT', `10')
293 define(`confMIN_FREE_BLOCKS', `100')
294 define(`confBLANK_SUB', `.')
295 define(`confCON_EXPENSIVE', `False')
296 define(`confDELIVERY_MODE', `background')
297 define(`confTEMP_FILE_MODE', `0600')
298 define(`confMCI_CACHE_SIZE', `2')
299 define(`confMCI_CACHE_TIMEOUT', `5m')
300 define(`confUSE_ERRORS_TO', `False')
301 define(`confLOG_LEVEL', `9')
302 define(`confCHECK_ALIASES', `False')
303 define(`confOLD_STYLE_HEADERS', `True')
304 define(`confPRIVACY_FLAGS', `authwarnings')
305 define(`confSAFE_QUEUE', `True')
306 define(`confTO_QUEUERETURN', `5d')
307 define(`confTO_QUEUEWARN', `4h')
308 define(`confTIME_ZONE', `USE_SYSTEM')
309 define(`confCW_FILE', `MAIL_SETTINGS_DIR`'local-host-names')
310 define(`confMIME_FORMAT_ERRORS', `True')
311 define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')
312 define(`confCR_FILE', `-o MAIL_SETTINGS_DIR`'relay-domains')
313 define(`confMILTER_MACROS_CONNECT', ``j, _, {daemon_name}, {if_name}, {if_addr}'')
314 define(`confMILTER_MACROS_HELO', ``{tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}'')
315 define(`confMILTER_MACROS_ENVFROM', ``i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}'')
316 define(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'')
317 define(`confMILTER_MACROS_EOM', `{msg_id}')
318
319
320 divert(0)dnl
321 VERSIONID(`$Id: cfhead.m4,v 8.122 2013-11-22 20:51:13 ca Exp $')