cfhead.m4 revision 64620
138032Speter# 264565Sgshapiro# Copyright (c) 1998-2000 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 64620 2000-08-13 18:47:42Z 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)') 15838032Speterdefine(`EXPOSED_USER', `PUSHDIVERT(5)CE$1 15938032SpeterPOPDIVERT`'dnl`'') 16038032Speterdefine(`LOCAL_USER', `PUSHDIVERT(5)CL$1 16138032SpeterPOPDIVERT`'dnl`'') 16238032Speterdefine(`MASQUERADE_AS', `define(`MASQUERADE_NAME', $1)') 16338032Speterdefine(`MASQUERADE_DOMAIN', `PUSHDIVERT(5)CM$1 16438032SpeterPOPDIVERT`'dnl`'') 16564565Sgshapirodefine(`MASQUERADE_EXCEPTION', `PUSHDIVERT(5)CN$1 16664565SgshapiroPOPDIVERT`'dnl`'') 16738032Speterdefine(`MASQUERADE_DOMAIN_FILE', `PUSHDIVERT(5)FM$1 16838032SpeterPOPDIVERT`'dnl`'') 16964565Sgshapirodefine(`LOCAL_DOMAIN', `PUSHDIVERT(5)Cw$1 17064565SgshapiroPOPDIVERT`'dnl`'') 17164565Sgshapirodefine(`CANONIFY_DOMAIN', `PUSHDIVERT(5)C{Canonify}$1 17264565SgshapiroPOPDIVERT`'dnl`'') 17364565Sgshapirodefine(`CANONIFY_DOMAIN_FILE', `PUSHDIVERT(5)F{Canonify}$1 17464565SgshapiroPOPDIVERT`'dnl`'') 17538032Speterdefine(`GENERICS_DOMAIN', `PUSHDIVERT(5)CG$1 17638032SpeterPOPDIVERT`'dnl`'') 17738032Speterdefine(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)FG$1 17838032SpeterPOPDIVERT`'dnl`'') 17964565Sgshapirodefine(`LDAPROUTE_DOMAIN', `PUSHDIVERT(5)C{LDAPRoute}$1 18064565SgshapiroPOPDIVERT`'dnl`'') 18164565Sgshapirodefine(`LDAPROUTE_DOMAIN_FILE', `PUSHDIVERT(5)F{LDAPRoute}$1 18264565SgshapiroPOPDIVERT`'dnl`'') 18364565Sgshapirodefine(`VIRTUSER_DOMAIN', `PUSHDIVERT(5)C{VirtHost}$1 18464565Sgshapirodefine(`_VIRTHOSTS_') 18564565SgshapiroPOPDIVERT`'dnl`'') 18664565Sgshapirodefine(`VIRTUSER_DOMAIN_FILE', `PUSHDIVERT(5)F{VirtHost}$1 18764565Sgshapirodefine(`_VIRTHOSTS_') 18864565SgshapiroPOPDIVERT`'dnl`'') 18938032Speterdefine(`RELAY_DOMAIN', `PUSHDIVERT(5)CR$1 19038032SpeterPOPDIVERT`'dnl`'') 19138032Speterdefine(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)FR$1 19238032SpeterPOPDIVERT`'dnl`'') 19364565Sgshapirodefine(`TRUST_AUTH_MECH', `PUSHDIVERT(5)C{TrustAuthMech}$1 19464565SgshapiroPOPDIVERT`'dnl`'') 19538032Speterdefine(`_OPTINS', `ifdef(`$1', `$2$1$3')') 19638032Speter 19764565Sgshapiro 19838032Speterm4wrap(`include(_CF_DIR_`m4/proto.m4')') 19938032Speter 20064565Sgshapiro# default location for files 20164565Sgshapiroifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')') 20264565Sgshapiro 20364565Sgshapiro# set our default hashed database type 20464565Sgshapirodefine(`DATABASE_MAP_TYPE', `hash') 20564565Sgshapiro 20638032Speter# set up default values for options 20764565Sgshapirodefine(`ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases') 20838032Speterdefine(`confMAILER_NAME', ``MAILER-DAEMON'') 20964565Sgshapirodefine(`confFROM_LINE', `From $g $d') 21038032Speterdefine(`confOPERATORS', `.:%@!^/[]+') 21138032Speterdefine(`confSMTP_LOGIN_MSG', `$j Sendmail $v/$Z; $b') 21264565Sgshapirodefine(`_REC_AUTH_', `$.$?{auth_type}(authenticated') 21364565Sgshapirodefine(`_REC_FULL_AUTH_', `$.$?{auth_type}(authenticated as ${auth_authen} $?{auth_author}for ${auth_author} $.with ${auth_type}') 21464565Sgshapirodefine(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)') 21564565Sgshapirodefine(`_REC_END_', `for $u; $|; 21664620Sgshapiro $.$b$?g 21764565Sgshapiro (envelope-from $g)$.') 21864565Sgshapirodefine(`_REC_TLS_', `(using ${tls_version} with cipher ${cipher} (${cipher_bits} bits) verified ${verify})$.$?u') 21964565Sgshapirodefine(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}') 22064565Sgshapirodefine(`confRECEIVED_HEADER', `_REC_HDR_ 22164565Sgshapiro _REC_AUTH_$?{auth_ssf} (${auth_ssf} bits)$.) 22264565Sgshapiro _REC_BY_ 22364565Sgshapiro _REC_TLS_ 22464565Sgshapiro _REC_END_') 22538032Speterdefine(`confSEVEN_BIT_INPUT', `False') 22638032Speterdefine(`confEIGHT_BIT_HANDLING', `pass8') 22738032Speterdefine(`confALIAS_WAIT', `10') 22838032Speterdefine(`confMIN_FREE_BLOCKS', `100') 22938032Speterdefine(`confBLANK_SUB', `.') 23038032Speterdefine(`confCON_EXPENSIVE', `False') 23138032Speterdefine(`confDELIVERY_MODE', `background') 23238032Speterdefine(`confTEMP_FILE_MODE', `0600') 23338032Speterdefine(`confMCI_CACHE_SIZE', `2') 23438032Speterdefine(`confMCI_CACHE_TIMEOUT', `5m') 23538032Speterdefine(`confUSE_ERRORS_TO', `False') 23638032Speterdefine(`confLOG_LEVEL', `9') 23738032Speterdefine(`confCHECK_ALIASES', `False') 23838032Speterdefine(`confOLD_STYLE_HEADERS', `True') 23938032Speterdefine(`confPRIVACY_FLAGS', `authwarnings') 24038032Speterdefine(`confSAFE_QUEUE', `True') 24138032Speterdefine(`confTO_QUEUERETURN', `5d') 24238032Speterdefine(`confTO_QUEUEWARN', `4h') 24338032Speterdefine(`confTIME_ZONE', `USE_SYSTEM') 24464565Sgshapirodefine(`confCW_FILE', `MAIL_SETTINGS_DIR`'local-host-names') 24538032Speterdefine(`confMIME_FORMAT_ERRORS', `True') 24638032Speterdefine(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward') 24764565Sgshapirodefine(`confCR_FILE', `-o MAIL_SETTINGS_DIR`'relay-domains') 24864565Sgshapirodefine(`confMILTER_MACROS_CONNECT', ``j, _, {daemon_name}, {if_name}, {if_addr}'') 24964565Sgshapirodefine(`confMILTER_MACROS_HELO', ``{tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}'') 25064565Sgshapirodefine(`confMILTER_MACROS_ENVFROM', ``i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}'') 25164565Sgshapirodefine(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'') 25238032Speter 25364565Sgshapiro 25438032Speterdivert(0)dnl 25564565SgshapiroVERSIONID(`$Id: cfhead.m4,v 8.76.4.9 2000/07/11 23:50:30 geir Exp $') 256