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