1# 2# Copyright (c) 1998-2001 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# 13 14###################################################################### 15###################################################################### 16##### 17##### SENDMAIL CONFIGURATION FILE 18##### 19ifdef(`unix', `dnl 20ifdef(`TEMPFILE', `dnl', `define(`TEMPFILE', maketemp(/tmp/cfXXXXXX))dnl 21syscmd(sh _CF_DIR_`'sh/makeinfo.sh _CF_DIR_ > TEMPFILE)dnl 22include(TEMPFILE)dnl 23syscmd(rm -f TEMPFILE)dnl')', `dnl') 24##### 25###################################################################### 26###################################################################### 27 28divert(-1) 29 30changecom() 31undefine(`format') 32undefine(`hpux') 33ifdef(`pushdef', `', 34 `errprint(`You need a newer version of M4, at least as new as 35System V or GNU') 36 include(NoSuchFile)') 37define(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)') 38define(`POPDIVERT', `divert(__D__)popdef(`__D__')') 39define(`OSTYPE', 40 `PUSHDIVERT(-1) 41 ifdef(`__OSTYPE__', `errprint(`duplicate OSTYPE'($1) 42)') 43 define(`__OSTYPE__', $1) 44 define(`_ARG_', $2) 45 include(_CF_DIR_`'ostype/$1.m4)POPDIVERT`'') 46## helpful functions 47define(`lower', `translit(`$1', `ABCDEFGHIJKLMNOPQRSTUVWXYZ', `abcdefghijklmnopqrstuvwx')') 48define(`strcasecmp', `ifelse(lower($1), lower($2), `1', `0')') 49## new FEATUREs 50define(`_DNSBL_R_',`') 51## access to further arguments in FEATURE/HACK 52define(`_ACC_ARG_1_',`$1') 53define(`_ACC_ARG_2_',`$2') 54define(`_ACC_ARG_3_',`$3') 55define(`_ACC_ARG_4_',`$4') 56define(`_ACC_ARG_5_',`$5') 57define(`_ACC_ARG_6_',`$6') 58define(`_ACC_ARG_7_',`$7') 59define(`_ACC_ARG_8_',`$8') 60define(`_ACC_ARG_9_',`$9') 61define(`_ARG1_',`_ACC_ARG_1_(_ARGS_)') 62define(`_ARG2_',`_ACC_ARG_2_(_ARGS_)') 63define(`_ARG3_',`_ACC_ARG_3_(_ARGS_)') 64define(`_ARG4_',`_ACC_ARG_4_(_ARGS_)') 65define(`_ARG5_',`_ACC_ARG_5_(_ARGS_)') 66define(`_ARG6_',`_ACC_ARG_6_(_ARGS_)') 67define(`_ARG7_',`_ACC_ARG_7_(_ARGS_)') 68define(`_ARG8_',`_ACC_ARG_8_(_ARGS_)') 69define(`_ARG9_',`_ACC_ARG_9_(_ARGS_)') 70dnl define if not yet defined: if `$1' is not defined it will be `$2' 71define(`_DEFIFNOT',`ifdef(`$1',`',`define(`$1',`$2')')') 72dnl ---------------------------------------- 73dnl add a char $2 to a string $1 if it is not there 74define(`_ADDCHAR_',`define(`_I_',`eval(index(`$1',`$2') >= 0)')`'ifelse(_I_,`1',`$1',`$1$2')') 75dnl ---- 76dnl delete a char $2 from a string $1 if it is there 77define(`_DELCHAR_',`define(`_IDX_',`index(`$1',`$2')')`'define(`_I_',`eval(_IDX_ >= 0)')`'ifelse(_I_,`1',`substr(`$1',0,_IDX_)`'substr(`$1',eval(_IDX_+1))',`$1')') 78dnl ---- 79dnl apply a macro to a whole string by recursion (one char at a time) 80dnl $1: macro 81dnl $2: first argument to macro 82dnl $3: list that is split up into characters 83define(`_AP_',`ifelse(`$3',`',`$2',`_AP_(`$1',$1(`$2',substr(`$3',0,1)),substr(`$3',1))')') 84dnl ---- 85dnl MODIFY_MAILER_FLAGS: append tail of $2 to $1_MF_A/D_ 86dnl A if head($2) = + 87dnl D if head($2) = - 88dnl $1_MF_ is set otherwise; set _A/D_ to `' 89define(`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_,`')')') 90dnl ---- 91dnl actually modify flags: 92dnl $1: flags (strings) to modify 93dnl $2: name of flags (just first part) to modify 94dnl WARNING: the order might be important: if someone adds and delete the 95dnl same characters, he does not deserve any better, does he? 96dnl this could be coded more efficiently... (do not apply the macro if _MF_A/D_ is undefined) 97define(`_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_',`'))')') 98dnl usage: 99dnl MODIFY_MAILER_FLAGS(`LOCAL',`+FlaGs')dnl 100dnl in MAILER.m4: _MODMF_(LMF,`LOCAL') 101dnl ---------------------------------------- 102define(`MAILER', 103`define(`_M_N_', `ifelse(`$2', `', `$1', `$2')')dnl 104ifdef(_MAILER_`'_M_N_`'_, `dnl`'', 105`define(_MAILER_`'_M_N_`'_, `')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')PUSHDIVERT(7)include(_CF_DIR_`'mailer/$1.m4)POPDIVERT`'')') 106define(`DOMAIN', `PUSHDIVERT(-1)define(`_ARG_', `$2')include(_CF_DIR_`'domain/$1.m4)POPDIVERT`'') 107define(`FEATURE', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'feature/$1.m4)POPDIVERT`'') 108define(`HACK', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'hack/$1.m4)POPDIVERT`'') 109define(`_DPO_',`') 110define(`DAEMON_OPTIONS', `define(`_DPO_', defn(`_DPO_') 111O DaemonPortOptions=`$1')') 112define(`_MAIL_FILTERS_', `') 113define(`MAIL_FILTER', `define(`_MAIL_FILTERS_', defn(`_MAIL_FILTERS_') 114X`'$1`, '`$2')') 115define(`INPUT_MAIL_FILTER', `MAIL_FILTER(`$1', `$2') 116ifelse(defn(`confINPUT_MAIL_FILTERS')X, `X', 117`define(`confINPUT_MAIL_FILTERS', $1)', 118`define(`confINPUT_MAIL_FILTERS', defn(`confINPUT_MAIL_FILTERS')`, '`$1')')') 119define(`CF_LEVEL', `9')dnl 120define(`VERSIONID', ``##### $1 #####'') 121define(`LOCAL_RULE_0', `divert(3)') 122define(`LOCAL_RULE_1', 123`divert(9)dnl 124####################################### 125### Ruleset 1 -- Sender Rewriting ### 126####################################### 127 128Ssender=1 129') 130define(`LOCAL_RULE_2', 131`divert(9)dnl 132########################################## 133### Ruleset 2 -- Recipient Rewriting ### 134########################################## 135 136Srecipient=2 137') 138define(`LOCAL_RULESETS', 139`divert(9) 140 141') 142define(`LOCAL_RULE_3', `divert(2)') 143define(`LOCAL_CONFIG', `divert(6)') 144define(`MAILER_DEFINITIONS', `divert(7)') 145define(`LOCAL_NET_CONFIG', `define(`_LOCAL_RULES_', 1)divert(1)') 146define(`UUCPSMTP', `R DOL(*) < @ $1 .UUCP > DOL(*) DOL(1) < @ $2 > DOL(2)') 147define(`CONCAT', `$1$2$3$4$5$6$7') 148define(`DOL', ``$'$1') 149define(`SITECONFIG', 150`CONCAT(D, $3, $2) 151define(`_CLASS_$3_', `')dnl 152ifelse($3, U, Cw$2 $2.UUCP, `dnl') 153define(`SITE', `ifelse(CONCAT($'2`, $3), SU, 154 CONCAT(CY, $'1`), 155 CONCAT(C, $3, $'1`))') 156sinclude(_CF_DIR_`'siteconfig/$1.m4)') 157define(`EXPOSED_USER', `PUSHDIVERT(5)C{E}$1 158POPDIVERT`'dnl`'') 159ifdef(`_FFR_EXPOSED_USER_FILE', `define(`EXPOSED_USER_FILE', `PUSHDIVERT(5)F{E}$1 160POPDIVERT`'dnl`'')', `dnl') 161define(`LOCAL_USER', `PUSHDIVERT(5)C{L}$1 162POPDIVERT`'dnl`'') 163define(`MASQUERADE_AS', `define(`MASQUERADE_NAME', $1)') 164define(`MASQUERADE_DOMAIN', `PUSHDIVERT(5)C{M}$1 165POPDIVERT`'dnl`'') 166define(`MASQUERADE_EXCEPTION', `PUSHDIVERT(5)C{N}$1 167POPDIVERT`'dnl`'') 168define(`MASQUERADE_DOMAIN_FILE', `PUSHDIVERT(5)F{M}$1 169POPDIVERT`'dnl`'') 170define(`LOCAL_DOMAIN', `PUSHDIVERT(5)C{w}$1 171POPDIVERT`'dnl`'') 172define(`CANONIFY_DOMAIN', `PUSHDIVERT(5)C{Canonify}$1 173POPDIVERT`'dnl`'') 174define(`CANONIFY_DOMAIN_FILE', `PUSHDIVERT(5)F{Canonify}$1 175POPDIVERT`'dnl`'') 176define(`GENERICS_DOMAIN', `PUSHDIVERT(5)C{G}$1 177POPDIVERT`'dnl`'') 178define(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)F{G}$1 179POPDIVERT`'dnl`'') 180define(`LDAPROUTE_DOMAIN', `PUSHDIVERT(5)C{LDAPRoute}$1 181POPDIVERT`'dnl`'') 182define(`LDAPROUTE_DOMAIN_FILE', `PUSHDIVERT(5)F{LDAPRoute}$1 183POPDIVERT`'dnl`'') 184define(`VIRTUSER_DOMAIN', `PUSHDIVERT(5)C{VirtHost}$1 185define(`_VIRTHOSTS_') 186POPDIVERT`'dnl`'') 187define(`VIRTUSER_DOMAIN_FILE', `PUSHDIVERT(5)F{VirtHost}$1 188define(`_VIRTHOSTS_') 189POPDIVERT`'dnl`'') 190define(`RELAY_DOMAIN', `PUSHDIVERT(5)C{R}$1 191POPDIVERT`'dnl`'') 192define(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)F{R}$1 193POPDIVERT`'dnl`'') 194define(`TRUST_AUTH_MECH', `PUSHDIVERT(5)C{TrustAuthMech}$1 195POPDIVERT`'dnl`'') 196define(`_OPTINS', `ifdef(`$1', `$2$1$3')') 197 198 199m4wrap(`include(_CF_DIR_`m4/proto.m4')') 200 201# default location for files 202ifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')') 203 204# set our default hashed database type 205define(`DATABASE_MAP_TYPE', `hash') 206 207# set up default values for options 208define(`ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases') 209define(`confMAILER_NAME', ``MAILER-DAEMON'') 210define(`confFROM_LINE', `From $g $d') 211define(`confOPERATORS', `.:%@!^/[]+') 212define(`confSMTP_LOGIN_MSG', `$j Sendmail $v/$Z; $b') 213define(`_REC_AUTH_', `$.$?{auth_type}(authenticated') 214define(`_REC_FULL_AUTH_', `$.$?{auth_type}(authenticated as ${auth_authen} $?{auth_author}for ${auth_author} $.with ${auth_type}') 215define(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)') 216define(`_REC_END_', `for $u; $|; 217 $.$b') 218define(`_REC_TLS_', `(using ${tls_version} with cipher ${cipher} (${cipher_bits} bits) verified ${verify})$.$?u') 219define(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}') 220define(`confRECEIVED_HEADER', `_REC_HDR_ 221 _REC_AUTH_$?{auth_ssf} (${auth_ssf} bits)$.) 222 _REC_BY_ 223 _REC_TLS_ 224 _REC_END_') 225define(`confSEVEN_BIT_INPUT', `False') 226define(`confALIAS_WAIT', `10') 227define(`confMIN_FREE_BLOCKS', `100') 228define(`confBLANK_SUB', `.') 229define(`confCON_EXPENSIVE', `False') 230define(`confDELIVERY_MODE', `background') 231define(`confTEMP_FILE_MODE', `0600') 232define(`confMCI_CACHE_SIZE', `2') 233define(`confMCI_CACHE_TIMEOUT', `5m') 234define(`confUSE_ERRORS_TO', `False') 235define(`confLOG_LEVEL', `9') 236define(`confCHECK_ALIASES', `False') 237define(`confOLD_STYLE_HEADERS', `True') 238define(`confPRIVACY_FLAGS', `authwarnings') 239define(`confSAFE_QUEUE', `True') 240define(`confTO_QUEUERETURN', `5d') 241define(`confTO_QUEUEWARN', `4h') 242define(`confTIME_ZONE', `USE_SYSTEM') 243define(`confCW_FILE', `MAIL_SETTINGS_DIR`'local-host-names') 244define(`confMIME_FORMAT_ERRORS', `True') 245define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward') 246define(`confCR_FILE', `-o MAIL_SETTINGS_DIR`'relay-domains') 247define(`confMILTER_MACROS_CONNECT', ``j, _, {daemon_name}, {if_name}, {if_addr}'') 248define(`confMILTER_MACROS_HELO', ``{tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}'') 249define(`confMILTER_MACROS_ENVFROM', ``i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}'') 250define(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'') 251 252 253divert(0)dnl 254VERSIONID(`$Id: cfhead.m4,v 8.76.4.16 2001/03/06 22:56:36 ca Exp $') 255