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