1N/A#
1N/A# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers.
1N/A# All rights reserved.
1N/A# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
1N/A# Copyright (c) 1988, 1993
1N/A# The Regents of the University of California. All rights reserved.
1N/A#
1N/A# Copyright 1993, 1997-2006 Sun Microsystems, Inc. All rights reserved.
1N/A# Use is subject to license terms.
1N/A#
1N/A# By using this file, you agree to the terms and conditions set
1N/A# forth in the LICENSE file which can be found at the top level of
1N/A# the sendmail distribution.
1N/A#
1N/A#
1N/A
1N/A######################################################################
1N/A######################################################################
1N/A#####
1N/A##### SENDMAIL CONFIGURATION FILE
1N/A#####
1N/Aifdef(`SUN_HIDE_INTERNAL_DETAILS',,
1N/Aifdef(`__win32__', `dnl', `dnl
1N/Aifdef(`TEMPFILE', `dnl', `define(`TEMPFILE', maketemp(/tmp/cfXXXXXX))dnl
1N/Asyscmd(sh _CF_DIR_`'sh/makeinfo.sh _CF_DIR_ > TEMPFILE)dnl
1N/Ainclude(TEMPFILE)dnl
1N/Asyscmd(rm -f TEMPFILE)dnl')')
1N/A#####
1N/A)dnl
1N/A######################################################################
1N/A#####
1N/A##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
1N/A#####
1N/A######################################################################
1N/A######################################################################
1N/A
1N/Adivert(-1)
1N/A
1N/Achangecom()
1N/Aundefine(`format')
1N/Aundefine(`hpux')
1N/Aifdef(`pushdef', `',
1N/A `errprint(`You need a newer version of M4, at least as new as
1N/ASystem V or GNU')
1N/A include(NoSuchFile)')
1N/Adefine(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)')
1N/Adefine(`POPDIVERT', `divert(__D__)popdef(`__D__')')
1N/Adefine(`OSTYPE',
1N/A `PUSHDIVERT(-1)
1N/A ifdef(`__OSTYPE__', `errprint(`duplicate OSTYPE'($1)
1N/A)')
1N/A define(`__OSTYPE__', $1)
1N/A define(`_ARG_', $2)
1N/A include(_CF_DIR_`'ostype/$1.m4)POPDIVERT`'')
1N/A## helpful functions
1N/Adefine(`lower', `translit(`$1', `ABCDEFGHIJKLMNOPQRSTUVWXYZ', `abcdefghijklmnopqrstuvwxyz')')
1N/Adefine(`strcasecmp', `ifelse(lower($1), lower($2), `1', `0')')
1N/A## access to further arguments in FEATURE/HACK
1N/Adefine(`_ACC_ARG_1_',`$1')
1N/Adefine(`_ACC_ARG_2_',`$2')
1N/Adefine(`_ACC_ARG_3_',`$3')
1N/Adefine(`_ACC_ARG_4_',`$4')
1N/Adefine(`_ACC_ARG_5_',`$5')
1N/Adefine(`_ACC_ARG_6_',`$6')
1N/Adefine(`_ACC_ARG_7_',`$7')
1N/Adefine(`_ACC_ARG_8_',`$8')
1N/Adefine(`_ACC_ARG_9_',`$9')
1N/Adefine(`_ARG1_',`_ACC_ARG_1_(_ARGS_)')
1N/Adefine(`_ARG2_',`_ACC_ARG_2_(_ARGS_)')
1N/Adefine(`_ARG3_',`_ACC_ARG_3_(_ARGS_)')
1N/Adefine(`_ARG4_',`_ACC_ARG_4_(_ARGS_)')
1N/Adefine(`_ARG5_',`_ACC_ARG_5_(_ARGS_)')
1N/Adefine(`_ARG6_',`_ACC_ARG_6_(_ARGS_)')
1N/Adefine(`_ARG7_',`_ACC_ARG_7_(_ARGS_)')
1N/Adefine(`_ARG8_',`_ACC_ARG_8_(_ARGS_)')
1N/Adefine(`_ARG9_',`_ACC_ARG_9_(_ARGS_)')
1N/Adnl define if not yet defined: if `$1' is not defined it will be `$2'
1N/Adefine(`_DEFIFNOT',`ifdef(`$1',`',`define(`$1',`$2')')')
1N/Adnl ----------------------------------------
1N/Adnl add a char $2 to a string $1 if it is not there
1N/Adefine(`_ADDCHAR_',`define(`_I_',`eval(index(`$1',`$2') >= 0)')`'ifelse(_I_,`1',`$1',`$1$2')')
1N/Adnl ----
1N/Adnl delete a char $2 from a string $1 if it is there
1N/Adefine(`_DELCHAR_',`define(`_IDX_',`index(`$1',`$2')')`'define(`_I_',`eval(_IDX_ >= 0)')`'ifelse(_I_,`1',`substr(`$1',0,_IDX_)`'substr(`$1',eval(_IDX_+1))',`$1')')
1N/Adnl ----
1N/Adnl apply a macro to a whole string by recursion (one char at a time)
1N/Adnl $1: macro
1N/Adnl $2: first argument to macro
1N/Adnl $3: list that is split up into characters
1N/Adefine(`_AP_',`ifelse(`$3',`',`$2',`_AP_(`$1',$1(`$2',substr(`$3',0,1)),substr(`$3',1))')')
1N/Adnl ----
1N/Adnl MODIFY_MAILER_FLAGS: append tail of $2 to $1_MF_A/D_
1N/Adnl A if head($2) = +
1N/Adnl D if head($2) = -
1N/Adnl $1_MF_ is set otherwise; set _A/D_ to `'
1N/Adefine(`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_,`')')')
1N/Adnl ----
1N/Adnl actually modify flags:
1N/Adnl $1: flags (strings) to modify
1N/Adnl $2: name of flags (just first part) to modify
1N/Adnl WARNING: the order might be important: if someone adds and delete the
1N/Adnl same characters, he does not deserve any better, does he?
1N/Adnl this could be coded more efficiently... (do not apply the macro if _MF_A/D_ is undefined)
1N/Adefine(`_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_',`'))')')
1N/Adnl usage:
1N/Adnl MODIFY_MAILER_FLAGS(`LOCAL',`+FlaGs')dnl
1N/Adnl in MAILER.m4: _MODMF_(LMF,`LOCAL')
1N/Adnl ----------------------------------------
1N/Adefine(`MAILER',
1N/A`define(`_M_N_', `ifelse(`$2', `', `$1', `$2')')dnl
1N/Aifdef(`_MAILER_DEFINED_', `', `define(`_MAILER_DEFINED_', `1')')dnl
1N/Aifdef(_MAILER_`'_M_N_`'_,
1N/A`errprint(`*** ERROR: MAILER('_M_N_`) already included
1N/A')',
1N/A`define(_MAILER_`'_M_N_`'_, `')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')PUSHDIVERT(7)include(_CF_DIR_`'mailer/$1.m4)POPDIVERT`'')')
1N/Adefine(`DOMAIN', `PUSHDIVERT(-1)define(`_ARG_', `$2')include(_CF_DIR_`'domain/$1.m4)POPDIVERT`'')
1N/Adefine(`FEATURE', `PUSHDIVERT(-1)ifdef(`_MAILER_DEFINED_',`errprint(`*** ERROR: FEATURE() should be before MAILER()
1N/A')')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'feature/$1.m4)POPDIVERT`'')
1N/Adefine(`HACK', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'hack/$1.m4)POPDIVERT`'')
1N/Adefine(`_DPO_',`')
1N/Adefine(`DAEMON_OPTIONS', `define(`_DPO_', defn(`_DPO_')
1N/AO DaemonPortOptions=`$1')')
1N/Adefine(`_CPO_',`')
1N/Adefine(`CLIENT_OPTIONS', `define(`_CPO_', defn(`_CPO_')
1N/AO ClientPortOptions=`$1')')
1N/Adefine(`_MAIL_FILTERS_', `')
1N/Adefine(`_MAIL_FILTERS_DEF', `')
1N/Adefine(`MAIL_FILTER', `define(`_MAIL_FILTERS_', defn(`_MAIL_FILTERS_')
1N/AX`'$1`, '`$2')
1N/Adefine(`_MAIL_FILTERS_DEF', defn(`_MAIL_FILTERS_DEF')`X')')
1N/Adefine(`INPUT_MAIL_FILTER', `MAIL_FILTER(`$1', `$2')
1N/Aifelse(defn(`confINPUT_MAIL_FILTERS')X, `X',
1N/A`define(`confINPUT_MAIL_FILTERS', $1)',
1N/A`define(`confINPUT_MAIL_FILTERS', defn(`confINPUT_MAIL_FILTERS')`, '`$1')')')
1N/Adefine(`_QUEUE_GROUP_', `')
1N/Adefine(`QUEUE_GROUP', `define(`_QUEUE_GROUP_', defn(`_QUEUE_GROUP_')
1N/AQ`'$1`, '`$2')')
1N/Adefine(`CF_LEVEL', `10')dnl
1N/Adefine(`VERSIONID', ``##### $1 #####'')
1N/Adefine(`LOCAL_RULE_0', `divert(3)')
1N/Adnl for UUCP...
1N/Adefine(`LOCAL_UUCP', `divert(4)')
1N/Adefine(`LOCAL_RULE_1',
1N/A`divert(9)dnl
1N/A#######################################
1N/A### Ruleset 1 -- Sender Rewriting ###
1N/A#######################################
1N/A
1N/ASsender=1
1N/A')
1N/Adefine(`LOCAL_RULE_2',
1N/A`divert(9)dnl
1N/A##########################################
1N/A### Ruleset 2 -- Recipient Rewriting ###
1N/A##########################################
1N/A
1N/ASrecipient=2
1N/A')
1N/Adefine(`LOCAL_RULESETS',
1N/A`divert(9)
1N/A
1N/A')
1N/Adefine(`LOCAL_SRV_FEATURES',
1N/A`define(`_LOCAL_SRV_FEATURES_')
1N/Aifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_SRV_FEATURES
1N/A')')
1N/Adivert(9)
1N/ASLocal_srv_features')
1N/Adefine(`LOCAL_TRY_TLS',
1N/A`define(`_LOCAL_TRY_TLS_')
1N/Aifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TRY_TLS
1N/A')')
1N/Adivert(9)
1N/ASLocal_try_tls')
1N/Adefine(`LOCAL_TLS_RCPT',
1N/A`define(`_LOCAL_TLS_RCPT_')
1N/Aifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_RCPT
1N/A')')
1N/Adivert(9)
1N/ASLocal_tls_rcpt')
1N/Adefine(`LOCAL_TLS_CLIENT',
1N/A`define(`_LOCAL_TLS_CLIENT_')
1N/Aifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_CLIENT
1N/A')')
1N/Adivert(9)
1N/ASLocal_tls_client')
1N/Adefine(`LOCAL_TLS_SERVER',
1N/A`define(`_LOCAL_TLS_SERVER_')
1N/Aifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_SERVER
1N/A')')
1N/Adivert(9)
1N/ASLocal_tls_server')
1N/Adefine(`LOCAL_RULE_3', `divert(2)')
1N/Adefine(`LOCAL_CONFIG', `divert(6)')
1N/Adefine(`MAILER_DEFINITIONS', `divert(7)')
1N/Adefine(`LOCAL_DNSBL', `divert(8)')
1N/Adefine(`LOCAL_NET_CONFIG', `define(`_LOCAL_RULES_', 1)divert(1)')
1N/Adefine(`UUCPSMTP', `R DOL(*) < @ $1 .UUCP > DOL(*) DOL(1) < @ $2 > DOL(2)')
1N/Adefine(`CONCAT', `$1$2$3$4$5$6$7')
1N/Adefine(`DOL', ``$'$1')
1N/Adefine(`SITECONFIG',
1N/A`CONCAT(D, $3, $2)
1N/Adefine(`_CLASS_$3_', `')dnl
1N/Aifelse($3, U, C{w}$2 $2.UUCP, `dnl')
1N/Adefine(`SITE', `ifelse(CONCAT($'2`, $3), SU,
1N/A CONCAT(CY, $'1`),
1N/A CONCAT(C, $3, $'1`))')
1N/Asinclude(_CF_DIR_`'siteconfig/$1.m4)')
1N/Adefine(`EXPOSED_USER', `PUSHDIVERT(5)C{E}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`EXPOSED_USER_FILE', `PUSHDIVERT(5)F{E}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`LOCAL_USER', `PUSHDIVERT(5)C{L}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`LOCAL_USER_FILE', `PUSHDIVERT(5)F{L}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`MASQUERADE_AS', `define(`MASQUERADE_NAME', $1)')
1N/Adefine(`MASQUERADE_DOMAIN', `PUSHDIVERT(5)C{M}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`MASQUERADE_EXCEPTION', `PUSHDIVERT(5)C{N}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`MASQUERADE_DOMAIN_FILE', `PUSHDIVERT(5)F{M}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`MASQUERADE_EXCEPTION_FILE', `PUSHDIVERT(5)F{N}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`LOCAL_DOMAIN', `PUSHDIVERT(5)C{w}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`CANONIFY_DOMAIN', `PUSHDIVERT(5)C{Canonify}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`CANONIFY_DOMAIN_FILE', `PUSHDIVERT(5)F{Canonify}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`GENERICS_DOMAIN', `PUSHDIVERT(5)C{G}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)F{G}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`LDAPROUTE_DOMAIN', `PUSHDIVERT(5)C{LDAPRoute}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`LDAPROUTE_DOMAIN_FILE', `PUSHDIVERT(5)F{LDAPRoute}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`LDAPROUTE_EQUIVALENT', `PUSHDIVERT(5)C{LDAPRouteEquiv}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`LDAPROUTE_EQUIVALENT_FILE', `PUSHDIVERT(5)F{LDAPRouteEquiv}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`VIRTUSER_DOMAIN', `PUSHDIVERT(5)C{VirtHost}$1
1N/Adefine(`_VIRTHOSTS_')
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`VIRTUSER_DOMAIN_FILE', `PUSHDIVERT(5)F{VirtHost}$1
1N/Adefine(`_VIRTHOSTS_')
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`RELAY_DOMAIN', `PUSHDIVERT(5)C{R}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)F{R}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`TRUST_AUTH_MECH', `_DEFIFNOT(`_USE_AUTH_',`1')PUSHDIVERT(5)C{TrustAuthMech}$1
1N/APOPDIVERT`'dnl`'')
1N/Adefine(`_OPTINS', `ifdef(`$1', `$2$1$3')')
1N/A
1N/A
1N/Am4wrap(`include(_CF_DIR_`m4/proto.m4')')
1N/A
1N/A# default location for files
1N/Aifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')')
1N/A
1N/A# set our default hashed database type
1N/Adefine(`DATABASE_MAP_TYPE', `hash')
1N/A
1N/A# set up default values for options
1N/Adefine(`ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases')
1N/Adefine(`confMAILER_NAME', ``MAILER-DAEMON'')
1N/Adefine(`confFROM_LINE', `From $g $d')
1N/Adefine(`confOPERATORS', `.:%@!^/[]+')
1N/Adefine(`confSMTP_LOGIN_MSG', `$j Sendmail $v/$Z; $b')
1N/Adefine(`_REC_AUTH_', `$.$?{auth_type}(authenticated')
1N/Adefine(`_REC_FULL_AUTH_', `$.$?{auth_type}(user=${auth_authen} $?{auth_author}author=${auth_author} $.mech=${auth_type}')
1N/Adefine(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)')
1N/Adefine(`_REC_END_', `for $u; $|;
1N/A $.$b')
1N/Adefine(`_REC_TLS_', `(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u')
1N/Adefine(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}')
1N/Adefine(`confRECEIVED_HEADER', `_REC_HDR_
1N/A _REC_AUTH_$?{auth_ssf} bits=${auth_ssf}$.)
1N/A _REC_BY_
1N/A _REC_TLS_
1N/A _REC_END_')
1N/Adefine(`confSEVEN_BIT_INPUT', `False')
1N/Adefine(`confALIAS_WAIT', `10')
1N/Adefine(`confMIN_FREE_BLOCKS', `100')
1N/Adefine(`confBLANK_SUB', `.')
1N/Adefine(`confCON_EXPENSIVE', `False')
1N/Adefine(`confDELIVERY_MODE', `background')
1N/Adefine(`confTEMP_FILE_MODE', `0600')
1N/Adefine(`confMCI_CACHE_SIZE', `2')
1N/Adefine(`confMCI_CACHE_TIMEOUT', `5m')
1N/Adefine(`confUSE_ERRORS_TO', `False')
1N/Adefine(`confLOG_LEVEL', `9')
1N/Adefine(`confCHECK_ALIASES', `False')
1N/Adefine(`confOLD_STYLE_HEADERS', `True')
1N/Adefine(`confPRIVACY_FLAGS', `authwarnings')
1N/Adefine(`confSAFE_QUEUE', `True')
1N/Adefine(`confTO_QUEUERETURN', `5d')
1N/Adefine(`confTO_QUEUEWARN', `4h')
1N/Adefine(`confTIME_ZONE', `USE_SYSTEM')
1N/Adefine(`confCW_FILE', `MAIL_SETTINGS_DIR`'local-host-names')
1N/Adefine(`confMIME_FORMAT_ERRORS', `True')
1N/Adefine(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')
1N/Adefine(`confCR_FILE', `-o MAIL_SETTINGS_DIR`'relay-domains')
1N/Adefine(`confMILTER_MACROS_CONNECT', ``j, _, {daemon_name}, {if_name}, {if_addr}'')
1N/Adefine(`confMILTER_MACROS_HELO', ``{tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}'')
1N/Adefine(`confMILTER_MACROS_ENVFROM', ``i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}'')
1N/Adefine(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'')
1N/Adefine(`confMILTER_MACROS_EOM', `{msg_id}')
1N/A
1N/A
1N/Adivert(0)dnl
1N/AVERSIONID(`$Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $')