cfhead.m4 revision 73191
138032Speter#
273191Sgshapiro# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
364565Sgshapiro#	All rights reserved.
438032Speter# Copyright (c) 1983, 1995 Eric P. Allman.  All rights reserved.
538032Speter# Copyright (c) 1988, 1993
638032Speter#	The Regents of the University of California.  All rights reserved.
738032Speter#
838032Speter# By using this file, you agree to the terms and conditions set
938032Speter# forth in the LICENSE file which can be found at the top level of
1038032Speter# the sendmail distribution.
1138032Speter#
1264565Sgshapiro# $FreeBSD: head/contrib/sendmail/cf/m4/cfhead.m4 73191 2001-02-28 00:22:47Z gshapiro $
1338032Speter#
1438032Speter
1538032Speter######################################################################
1638032Speter######################################################################
1738032Speter#####
1838032Speter#####		SENDMAIL CONFIGURATION FILE
1938032Speter#####
2064565Sgshapiroifdef(`unix', `dnl
2164565Sgshapiroifdef(`TEMPFILE', `dnl', `define(`TEMPFILE', maketemp(/tmp/cfXXXXXX))dnl
2238032Spetersyscmd(sh _CF_DIR_`'sh/makeinfo.sh _CF_DIR_ > TEMPFILE)dnl
2338032Speterinclude(TEMPFILE)dnl
2464565Sgshapirosyscmd(rm -f TEMPFILE)dnl')', `dnl')
2538032Speter#####
2638032Speter######################################################################
2738032Speter######################################################################
2838032Speter
2938032Speterdivert(-1)
3038032Speter
3138032Speterchangecom()
3238032Speterundefine(`format')
3338032Speterundefine(`hpux')
3438032Speterifdef(`pushdef', `',
3538032Speter	`errprint(`You need a newer version of M4, at least as new as
3638032SpeterSystem V or GNU')
3738032Speter	include(NoSuchFile)')
3838032Speterdefine(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)')
3938032Speterdefine(`POPDIVERT', `divert(__D__)popdef(`__D__')')
4038032Speterdefine(`OSTYPE',
4138032Speter	`PUSHDIVERT(-1)
4264565Sgshapiro	ifdef(`__OSTYPE__', `errprint(`duplicate OSTYPE'($1)
4364565Sgshapiro)')
4438032Speter	define(`__OSTYPE__', $1)
4538032Speter	define(`_ARG_', $2)
4638032Speter	include(_CF_DIR_`'ostype/$1.m4)POPDIVERT`'')
4764565Sgshapiro## helpful functions
4864565Sgshapirodefine(`lower', `translit(`$1', `ABCDEFGHIJKLMNOPQRSTUVWXYZ', `abcdefghijklmnopqrstuvwx')')
4964565Sgshapirodefine(`strcasecmp', `ifelse(lower($1), lower($2), `1', `0')')
5064565Sgshapiro## new FEATUREs
5164565Sgshapirodefine(`_DNSBL_R_',`')
5264565Sgshapiro## access to further arguments in FEATURE/HACK
5364565Sgshapirodefine(`_ACC_ARG_1_',`$1')
5464565Sgshapirodefine(`_ACC_ARG_2_',`$2')
5564565Sgshapirodefine(`_ACC_ARG_3_',`$3')
5664565Sgshapirodefine(`_ACC_ARG_4_',`$4')
5764565Sgshapirodefine(`_ACC_ARG_5_',`$5')
5864565Sgshapirodefine(`_ACC_ARG_6_',`$6')
5964565Sgshapirodefine(`_ACC_ARG_7_',`$7')
6064565Sgshapirodefine(`_ACC_ARG_8_',`$8')
6164565Sgshapirodefine(`_ACC_ARG_9_',`$9')
6264565Sgshapirodefine(`_ARG1_',`_ACC_ARG_1_(_ARGS_)')
6364565Sgshapirodefine(`_ARG2_',`_ACC_ARG_2_(_ARGS_)')
6464565Sgshapirodefine(`_ARG3_',`_ACC_ARG_3_(_ARGS_)')
6564565Sgshapirodefine(`_ARG4_',`_ACC_ARG_4_(_ARGS_)')
6664565Sgshapirodefine(`_ARG5_',`_ACC_ARG_5_(_ARGS_)')
6764565Sgshapirodefine(`_ARG6_',`_ACC_ARG_6_(_ARGS_)')
6864565Sgshapirodefine(`_ARG7_',`_ACC_ARG_7_(_ARGS_)')
6964565Sgshapirodefine(`_ARG8_',`_ACC_ARG_8_(_ARGS_)')
7064565Sgshapirodefine(`_ARG9_',`_ACC_ARG_9_(_ARGS_)')
7164565Sgshapirodnl define if not yet defined: if `$1' is not defined it will be `$2'
7264565Sgshapirodefine(`_DEFIFNOT',`ifdef(`$1',`',`define(`$1',`$2')')')
7364565Sgshapirodnl ----------------------------------------
7464565Sgshapirodnl add a char $2 to a string $1 if it is not there
7564565Sgshapirodefine(`_ADDCHAR_',`define(`_I_',`eval(index(`$1',`$2') >= 0)')`'ifelse(_I_,`1',`$1',`$1$2')')
7664565Sgshapirodnl ----
7764565Sgshapirodnl delete a char $2 from a string $1 if it is there
7864565Sgshapirodefine(`_DELCHAR_',`define(`_IDX_',`index(`$1',`$2')')`'define(`_I_',`eval(_IDX_ >= 0)')`'ifelse(_I_,`1',`substr(`$1',0,_IDX_)`'substr(`$1',eval(_IDX_+1))',`$1')')
7964565Sgshapirodnl ----
8064565Sgshapirodnl apply a macro to a whole string by recursion (one char at a time)
8164565Sgshapirodnl $1: macro
8264565Sgshapirodnl $2: first argument to macro
8364565Sgshapirodnl $3: list that is split up into characters
8464565Sgshapirodefine(`_AP_',`ifelse(`$3',`',`$2',`_AP_(`$1',$1(`$2',substr(`$3',0,1)),substr(`$3',1))')')
8564565Sgshapirodnl ----
8664565Sgshapirodnl MODIFY_MAILER_FLAGS: append tail of $2 to $1_MF_A/D_
8764565Sgshapirodnl A if head($2) = +
8864565Sgshapirodnl D if head($2) = -
8964565Sgshapirodnl $1_MF_ is set otherwise; set _A/D_ to `'
9064565Sgshapirodefine(`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_,`')')')
9164565Sgshapirodnl ----
9264565Sgshapirodnl actually modify flags:
9364565Sgshapirodnl $1: flags (strings) to modify
9464565Sgshapirodnl $2: name of flags (just first part) to modify
9564565Sgshapirodnl WARNING: the order might be important: if someone adds and delete the
9664565Sgshapirodnl same characters, he does not deserve any better, does he?
9764565Sgshapirodnl this could be coded more efficiently... (do not apply the macro if _MF_A/D_ is undefined)
9864565Sgshapirodefine(`_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_',`'))')')
9964565Sgshapirodnl usage:
10064565Sgshapirodnl MODIFY_MAILER_FLAGS(`LOCAL',`+FlaGs')dnl
10164565Sgshapirodnl in MAILER.m4: _MODMF_(LMF,`LOCAL')
10264565Sgshapirodnl ----------------------------------------
10338032Speterdefine(`MAILER',
10464565Sgshapiro`define(`_M_N_', `ifelse(`$2', `', `$1', `$2')')dnl
10564565Sgshapiroifdef(_MAILER_`'_M_N_`'_, `dnl`'',
10664565Sgshapiro`define(_MAILER_`'_M_N_`'_, `')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')PUSHDIVERT(7)include(_CF_DIR_`'mailer/$1.m4)POPDIVERT`'')')
10764565Sgshapirodefine(`DOMAIN', `PUSHDIVERT(-1)define(`_ARG_', `$2')include(_CF_DIR_`'domain/$1.m4)POPDIVERT`'')
10864565Sgshapirodefine(`FEATURE', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'feature/$1.m4)POPDIVERT`'')
10964565Sgshapirodefine(`HACK', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'hack/$1.m4)POPDIVERT`'')
11064565Sgshapirodefine(`_DPO_',`')
11164565Sgshapirodefine(`DAEMON_OPTIONS', `define(`_DPO_', defn(`_DPO_')
11264565SgshapiroO DaemonPortOptions=`$1')')
11364565Sgshapirodefine(`_MAIL_FILTERS_', `')
11464565Sgshapirodefine(`MAIL_FILTER', `define(`_MAIL_FILTERS_', defn(`_MAIL_FILTERS_')
11564565SgshapiroX`'$1`, '`$2')')
11664565Sgshapirodefine(`INPUT_MAIL_FILTER', `MAIL_FILTER(`$1', `$2')
11764565Sgshapiroifelse(defn(`confINPUT_MAIL_FILTERS')X, `X',
11864565Sgshapiro`define(`confINPUT_MAIL_FILTERS', $1)',
11964565Sgshapiro`define(`confINPUT_MAIL_FILTERS', defn(`confINPUT_MAIL_FILTERS')`, '`$1')')')
12064565Sgshapirodefine(`CF_LEVEL', `9')dnl
12138032Speterdefine(`VERSIONID', ``#####  $1  #####'')
12238032Speterdefine(`LOCAL_RULE_0', `divert(3)')
12338032Speterdefine(`LOCAL_RULE_1',
12438032Speter`divert(9)dnl
12538032Speter#######################################
12638032Speter###  Ruleset 1 -- Sender Rewriting  ###
12738032Speter#######################################
12838032Speter
12964565SgshapiroSsender=1
13038032Speter')
13138032Speterdefine(`LOCAL_RULE_2',
13238032Speter`divert(9)dnl
13338032Speter##########################################
13438032Speter###  Ruleset 2 -- Recipient Rewriting  ###
13538032Speter##########################################
13638032Speter
13764565SgshapiroSrecipient=2
13838032Speter')
13938032Speterdefine(`LOCAL_RULESETS',
14038032Speter`divert(9)
14138032Speter
14238032Speter')
14338032Speterdefine(`LOCAL_RULE_3', `divert(2)')
14438032Speterdefine(`LOCAL_CONFIG', `divert(6)')
14538032Speterdefine(`MAILER_DEFINITIONS', `divert(7)')
14638032Speterdefine(`LOCAL_NET_CONFIG', `define(`_LOCAL_RULES_', 1)divert(1)')
14738032Speterdefine(`UUCPSMTP', `R DOL(*) < @ $1 .UUCP > DOL(*)	DOL(1) < @ $2 > DOL(2)')
14838032Speterdefine(`CONCAT', `$1$2$3$4$5$6$7')
14938032Speterdefine(`DOL', ``$'$1')
15038032Speterdefine(`SITECONFIG',
15138032Speter`CONCAT(D, $3, $2)
15238032Speterdefine(`_CLASS_$3_', `')dnl
15338032Speterifelse($3, U, Cw$2 $2.UUCP, `dnl')
15438032Speterdefine(`SITE', `ifelse(CONCAT($'2`, $3), SU,
15538032Speter		CONCAT(CY, $'1`),
15638032Speter		CONCAT(C, $3, $'1`))')
15738032Spetersinclude(_CF_DIR_`'siteconfig/$1.m4)')
15873191Sgshapirodefine(`EXPOSED_USER', `PUSHDIVERT(5)C{E}$1
15938032SpeterPOPDIVERT`'dnl`'')
16073191Sgshapiroifdef(`_FFR_EXPOSED_USER_FILE', `define(`EXPOSED_USER_FILE', `PUSHDIVERT(5)F{E}$1
16166497SgshapiroPOPDIVERT`'dnl`'')', `dnl')
16273191Sgshapirodefine(`LOCAL_USER', `PUSHDIVERT(5)C{L}$1
16338032SpeterPOPDIVERT`'dnl`'')
16438032Speterdefine(`MASQUERADE_AS', `define(`MASQUERADE_NAME', $1)')
16573191Sgshapirodefine(`MASQUERADE_DOMAIN', `PUSHDIVERT(5)C{M}$1
16638032SpeterPOPDIVERT`'dnl`'')
16773191Sgshapirodefine(`MASQUERADE_EXCEPTION', `PUSHDIVERT(5)C{N}$1
16864565SgshapiroPOPDIVERT`'dnl`'')
16973191Sgshapirodefine(`MASQUERADE_DOMAIN_FILE', `PUSHDIVERT(5)F{M}$1
17038032SpeterPOPDIVERT`'dnl`'')
17173191Sgshapirodefine(`LOCAL_DOMAIN', `PUSHDIVERT(5)C{w}$1
17264565SgshapiroPOPDIVERT`'dnl`'')
17364565Sgshapirodefine(`CANONIFY_DOMAIN', `PUSHDIVERT(5)C{Canonify}$1
17464565SgshapiroPOPDIVERT`'dnl`'')
17564565Sgshapirodefine(`CANONIFY_DOMAIN_FILE', `PUSHDIVERT(5)F{Canonify}$1
17664565SgshapiroPOPDIVERT`'dnl`'')
17773191Sgshapirodefine(`GENERICS_DOMAIN', `PUSHDIVERT(5)C{G}$1
17838032SpeterPOPDIVERT`'dnl`'')
17973191Sgshapirodefine(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)F{G}$1
18038032SpeterPOPDIVERT`'dnl`'')
18164565Sgshapirodefine(`LDAPROUTE_DOMAIN', `PUSHDIVERT(5)C{LDAPRoute}$1
18264565SgshapiroPOPDIVERT`'dnl`'')
18364565Sgshapirodefine(`LDAPROUTE_DOMAIN_FILE', `PUSHDIVERT(5)F{LDAPRoute}$1
18464565SgshapiroPOPDIVERT`'dnl`'')
18564565Sgshapirodefine(`VIRTUSER_DOMAIN', `PUSHDIVERT(5)C{VirtHost}$1
18664565Sgshapirodefine(`_VIRTHOSTS_')
18764565SgshapiroPOPDIVERT`'dnl`'')
18864565Sgshapirodefine(`VIRTUSER_DOMAIN_FILE', `PUSHDIVERT(5)F{VirtHost}$1
18964565Sgshapirodefine(`_VIRTHOSTS_')
19064565SgshapiroPOPDIVERT`'dnl`'')
19173191Sgshapirodefine(`RELAY_DOMAIN', `PUSHDIVERT(5)C{R}$1
19238032SpeterPOPDIVERT`'dnl`'')
19373191Sgshapirodefine(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)F{R}$1
19438032SpeterPOPDIVERT`'dnl`'')
19564565Sgshapirodefine(`TRUST_AUTH_MECH', `PUSHDIVERT(5)C{TrustAuthMech}$1
19664565SgshapiroPOPDIVERT`'dnl`'')
19738032Speterdefine(`_OPTINS', `ifdef(`$1', `$2$1$3')')
19838032Speter
19964565Sgshapiro
20038032Speterm4wrap(`include(_CF_DIR_`m4/proto.m4')')
20138032Speter
20264565Sgshapiro# default location for files
20364565Sgshapiroifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')')
20464565Sgshapiro
20564565Sgshapiro# set our default hashed database type
20664565Sgshapirodefine(`DATABASE_MAP_TYPE', `hash')
20764565Sgshapiro
20838032Speter# set up default values for options
20964565Sgshapirodefine(`ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases')
21038032Speterdefine(`confMAILER_NAME', ``MAILER-DAEMON'')
21164565Sgshapirodefine(`confFROM_LINE', `From $g $d')
21238032Speterdefine(`confOPERATORS', `.:%@!^/[]+')
21338032Speterdefine(`confSMTP_LOGIN_MSG', `$j Sendmail $v/$Z; $b')
21464565Sgshapirodefine(`_REC_AUTH_', `$.$?{auth_type}(authenticated')
21564565Sgshapirodefine(`_REC_FULL_AUTH_', `$.$?{auth_type}(authenticated as ${auth_authen} $?{auth_author}for ${auth_author} $.with ${auth_type}')
21664565Sgshapirodefine(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)')
21764565Sgshapirodefine(`_REC_END_', `for $u; $|;
21864620Sgshapiro	$.$b$?g
21964565Sgshapiro	(envelope-from $g)$.')
22064565Sgshapirodefine(`_REC_TLS_', `(using ${tls_version} with cipher ${cipher} (${cipher_bits} bits) verified ${verify})$.$?u')
22164565Sgshapirodefine(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}')
22264565Sgshapirodefine(`confRECEIVED_HEADER', `_REC_HDR_
22364565Sgshapiro	_REC_AUTH_$?{auth_ssf} (${auth_ssf} bits)$.)
22464565Sgshapiro	_REC_BY_
22564565Sgshapiro	_REC_TLS_
22664565Sgshapiro	_REC_END_')
22738032Speterdefine(`confSEVEN_BIT_INPUT', `False')
22838032Speterdefine(`confEIGHT_BIT_HANDLING', `pass8')
22938032Speterdefine(`confALIAS_WAIT', `10')
23038032Speterdefine(`confMIN_FREE_BLOCKS', `100')
23138032Speterdefine(`confBLANK_SUB', `.')
23238032Speterdefine(`confCON_EXPENSIVE', `False')
23338032Speterdefine(`confDELIVERY_MODE', `background')
23438032Speterdefine(`confTEMP_FILE_MODE', `0600')
23538032Speterdefine(`confMCI_CACHE_SIZE', `2')
23638032Speterdefine(`confMCI_CACHE_TIMEOUT', `5m')
23738032Speterdefine(`confUSE_ERRORS_TO', `False')
23838032Speterdefine(`confLOG_LEVEL', `9')
23938032Speterdefine(`confCHECK_ALIASES', `False')
24038032Speterdefine(`confOLD_STYLE_HEADERS', `True')
24138032Speterdefine(`confPRIVACY_FLAGS', `authwarnings')
24238032Speterdefine(`confSAFE_QUEUE', `True')
24338032Speterdefine(`confTO_QUEUERETURN', `5d')
24438032Speterdefine(`confTO_QUEUEWARN', `4h')
24538032Speterdefine(`confTIME_ZONE', `USE_SYSTEM')
24664565Sgshapirodefine(`confCW_FILE', `MAIL_SETTINGS_DIR`'local-host-names')
24738032Speterdefine(`confMIME_FORMAT_ERRORS', `True')
24838032Speterdefine(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')
24964565Sgshapirodefine(`confCR_FILE', `-o MAIL_SETTINGS_DIR`'relay-domains')
25064565Sgshapirodefine(`confMILTER_MACROS_CONNECT', ``j, _, {daemon_name}, {if_name}, {if_addr}'')
25164565Sgshapirodefine(`confMILTER_MACROS_HELO', ``{tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}'')
25264565Sgshapirodefine(`confMILTER_MACROS_ENVFROM', ``i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}'')
25364565Sgshapirodefine(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'')
25438032Speter
25564565Sgshapiro
25638032Speterdivert(0)dnl
25773191SgshapiroVERSIONID(`$Id: cfhead.m4,v 8.76.4.15 2001/02/14 04:07:20 gshapiro Exp $')
258