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