1*64315Sericdivert(-1) 2*64315Seric# 3*64315Seric# Copyright (c) 1983 Eric P. Allman 4*64315Seric# Copyright (c) 1988, 1993 5*64315Seric# The Regents of the University of California. All rights reserved. 6*64315Seric# 7*64315Seric# %sccs.include.redist.sh% 8*64315Seric# 9*64315Sericdivert(0) 10*64315Seric 11*64315SericVERSIONID(`@(#)nullrelay.m4 8.1 (Berkeley) 08/21/93') 12*64315Seric 13*64315Seric# 14*64315Seric# This configuration applies only to relay-only hosts. They send 15*64315Seric# all mail to a hub without consideration of the address syntax 16*64315Seric# or semantics, except for adding the hub qualification to the 17*64315Seric# addresses. 18*64315Seric# 19*64315Seric 20*64315Seric# hub host (to which all mail is sent) 21*64315SericDH`'ifdef(`MAIL_HUB', MAIL_HUB, 22*64315Seric ifdef(`LOCAL_RELAY', LOCAL_RELAY, 23*64315Seric ifdef(`SMART_HOST', SMART_HOST))) 24*64315Seric 25*64315Seric# route-addr separators 26*64315SericC: : , 27*64315Seric 28*64315Sericundivert(6)dnl 29*64315Seric 30*64315Seric###################### 31*64315Seric# Special macros # 32*64315Seric###################### 33*64315Seric 34*64315Seric# SMTP initial login message 35*64315SericDe`'confSMTP_LOGIN_MSG 36*64315Seric 37*64315Seric# UNIX initial From header format 38*64315SericDl`'confFROM_LINE 39*64315Seric 40*64315Seric# my name for error messages 41*64315SericDn`'confMAILER_NAME 42*64315Seric 43*64315Seric# delimiter (operator) characters 44*64315SericDo`'confOPERATORS 45*64315Seric 46*64315Seric# format of a total name 47*64315SericDq<$g> 48*64315Sericinclude(`../m4/version.m4') 49*64315Seric 50*64315Seric############### 51*64315Seric# Options # 52*64315Seric############### 53*64315Seric 54*64315Seric# strip message body to 7 bits on input? 55*64315SericO7`'confSEVEN_BIT_INPUT 56*64315Seric 57*64315Seric# no aliases here 58*64315Seric 59*64315Seric# substitution for space (blank) characters 60*64315SericOB`'confBLANK_SUB 61*64315Seric 62*64315Seric# default delivery mode 63*64315SericOd`'confDELIVERY_MODE 64*64315Seric 65*64315Seric# error message header/file 66*64315Sericifdef(`confERROR_MESSAGE', 67*64315Seric OE`'confERROR_MESSAGE, 68*64315Seric #OE/etc/sendmail.oE) 69*64315Seric 70*64315Seric# error mode 71*64315Sericifdef(`confERROR_MODE', 72*64315Seric Oe`'confERROR_MODE, 73*64315Seric #Oep) 74*64315Seric 75*64315Seric# save Unix-style "From_" lines at top of header? 76*64315SericOf`'confSAVE_FROM_LINES 77*64315Seric 78*64315Seric# temporary file mode 79*64315SericOF`'confTEMP_FILE_MODE 80*64315Seric 81*64315Seric# default GID 82*64315SericOg`'confDEF_GROUP_ID 83*64315Seric 84*64315Seric# maximum hop count 85*64315SericOh`'confMAX_HOP 86*64315Seric 87*64315Seric# location of help file 88*64315SericOH`'ifdef(`HELP_FILE', HELP_FILE, /usr/lib/sendmail.hf) 89*64315Seric 90*64315Seric# ignore dots as terminators in incoming messages? 91*64315SericOi`'confIGNORE_DOTS 92*64315Seric 93*64315Seric# Insist that the BIND name server be running to resolve names 94*64315Sericifdef(`confBIND_OPTS', 95*64315Seric OI`'confBIND_OPTS, 96*64315Seric #OI) 97*64315Seric 98*64315Seric# deliver MIME-encapsulated error messages? 99*64315SericOj`'confMIME_FORMAT_ERRORS 100*64315Seric 101*64315Seric# open connection cache size 102*64315SericOk`'confMCI_CACHE_SIZE 103*64315Seric 104*64315Seric# open connection cache timeout 105*64315SericOK`'confMCI_CACHE_TIMEOUT 106*64315Seric 107*64315Seric# use Errors-To: header? 108*64315SericOl`'confUSE_ERRORS_TO 109*64315Seric 110*64315Seric# log level 111*64315SericOL`'confLOG_LEVEL 112*64315Seric 113*64315Seric# send to me too, even in an alias expansion? 114*64315SericOm`'confME_TOO 115*64315Seric 116*64315Seric# default messages to old style headers if no special punctuation? 117*64315SericOo`'confOLD_STYLE_HEADERS 118*64315Seric 119*64315Seric# SMTP daemon options 120*64315Sericifdef(`confDAEMON_OPTIONS', 121*64315Seric OO`'confDAEMON_OPTIONS, 122*64315Seric #OOPort=esmtp) 123*64315Seric 124*64315Seric# privacy flags 125*64315SericOp`'confPRIVACY_FLAGS 126*64315Seric 127*64315Seric# who (if anyone) should get extra copies of error messages 128*64315Sericifdef(`confCOPY_ERRORS_TO', 129*64315Seric OP`'confCOPY_ERRORS_TO, 130*64315Seric #OPPostmaster) 131*64315Seric 132*64315Seric# slope of queue-only function 133*64315Sericifdef(`confQUEUE_FACTOR', 134*64315Seric Oq`'confQUEUE_FACTOR, 135*64315Seric #Oq600000) 136*64315Seric 137*64315Seric# queue directory 138*64315SericOQ`'ifdef(`QUEUE_DIR', QUEUE_DIR, /var/spool/mqueue) 139*64315Seric 140*64315Seric# read timeout -- now OK per RFC 1123 section 5.3.2 141*64315Sericifdef(`confREAD_TIMEOUT', 142*64315Seric Or`'confREAD_TIMEOUT, 143*64315Seric #Ordatablock=10m) 144*64315Seric 145*64315Seric# queue up everything before forking? 146*64315SericOs`'confSAFE_QUEUE 147*64315Seric 148*64315Seric# status file 149*64315SericOS`'ifdef(`STATUS_FILE', STATUS_FILE, /etc/sendmail.st) 150*64315Seric 151*64315Seric# default message timeout interval 152*64315SericOT`'confMESSAGE_TIMEOUT 153*64315Seric 154*64315Seric# time zone handling: 155*64315Seric# if undefined, use system default 156*64315Seric# if defined but null, use TZ envariable passed in 157*64315Seric# if defined and non-null, use that info 158*64315Sericifelse(confTIME_ZONE, `USE_SYSTEM', `#Ot', 159*64315Seric confTIME_ZONE, `USE_TZ', `', 160*64315Seric `Ot`'confTIME_ZONE') 161*64315Seric 162*64315Seric# default UID 163*64315SericOu`'confDEF_USER_ID 164*64315Seric 165*64315Seric# deliver each queued job in a separate process? 166*64315SericOY`'confSEPARATE_PROC 167*64315Seric 168*64315Seric# work class factor 169*64315Sericifdef(`confWORK_CLASS_FACTOR', 170*64315Seric Oz`'confWORK_CLASS_FACTOR, 171*64315Seric #Oz1800) 172*64315Seric 173*64315Seric# work time factor 174*64315Sericifdef(`confWORK_TIME_FACTOR', 175*64315Seric OZ`'confWORK_TIME_FACTOR, 176*64315Seric #OZ90000) 177*64315Seric 178*64315Seric########################### 179*64315Seric# Message precedences # 180*64315Seric########################### 181*64315Seric 182*64315SericPfirst-class=0 183*64315SericPspecial-delivery=100 184*64315SericPlist=-30 185*64315SericPbulk=-60 186*64315SericPjunk=-100 187*64315Seric 188*64315Seric##################### 189*64315Seric# Trusted users # 190*64315Seric##################### 191*64315Seric 192*64315SericTroot 193*64315SericTdaemon 194*64315SericTuucp 195*64315Seric 196*64315Seric######################### 197*64315Seric# Format of headers # 198*64315Seric######################### 199*64315Seric 200*64315SericH?P?Return-Path: $g 201*64315SericHReceived: $?sfrom $s $.$?_($_) $.by $j ($v/$Z)$?r with $r$. id $i$?u for $u$.; $b 202*64315SericH?D?Resent-Date: $a 203*64315SericH?D?Date: $a 204*64315SericH?F?Resent-From: $q 205*64315SericH?F?From: $q 206*64315SericH?x?Full-Name: $x 207*64315SericHSubject: 208*64315Seric# HPosted-Date: $a 209*64315Seric# H?l?Received-Date: $b 210*64315SericH?M?Resent-Message-Id: <$t.$i@$j> 211*64315SericH?M?Message-Id: <$t.$i@$j> 212*64315Seric# 213*64315Seric###################################################################### 214*64315Seric###################################################################### 215*64315Seric##### 216*64315Seric##### REWRITING RULES 217*64315Seric##### 218*64315Seric###################################################################### 219*64315Seric###################################################################### 220*64315Seric 221*64315Seric########################################### 222*64315Seric### Rulset 3 -- Name Canonicalization ### 223*64315Seric########################################### 224*64315SericS3 225*64315Seric 226*64315Seric# handle null input and list syntax (translate to <@> special case) 227*64315SericR$@ $@ <@> 228*64315SericR$*:;$* $@ $1 :; <@> 229*64315Seric 230*64315Seric# basic textual canonicalization -- note RFC733 heuristic here 231*64315SericR$*<$*>$*<$*>$* $2$3<$4>$5 strip multiple <> <> 232*64315SericR$*<$*<$+>$*>$* <$3>$5 2-level <> nesting 233*64315SericR$*<>$* $@ <@> MAIL FROM:<> case 234*64315SericR$*<$+>$* $2 basic RFC821/822 parsing 235*64315Seric 236*64315Seric# eliminate local host if present 237*64315SericR@ $=w $=: $+ $@ @ $H $2 $3 @thishost ... 238*64315SericR@ $+ $@ $1 @somewhere ... 239*64315Seric 240*64315SericR$+ @ $=w $@ $1 @ $H ...@thishost 241*64315SericR$+ @ $+ $@ $1 @ $2 ...@somewhere 242*64315Seric 243*64315SericR$=w ! $+ $@ $2 @ $H thishost!... 244*64315SericR$+ ! $+ $@ $1 ! $2 @ $H somewhere ! ... 245*64315Seric 246*64315SericR$+ % $=w $@ $1 @ $H ...%thishost 247*64315SericR$+ % $+ $@ $1 @ $2 ...%somewhere 248*64315Seric 249*64315SericR$+ $@ $1 @ $H unadorned user 250*64315Seric 251*64315Seric 252*64315Seric###################################### 253*64315Seric### Ruleset 0 -- Parse Address ### 254*64315Seric###################################### 255*64315Seric 256*64315SericS0 257*64315Seric 258*64315SericR$*:;<@> $#error $@ USAGE $: "list:; syntax illegal for recipient addresses" 259*64315Seric 260*64315Seric# pass everything else to a relay host 261*64315SericR$* $#_RELAY_ $@ $H $: $1 262*64315Seric 263*64315Seric# 264*64315Seric###################################################################### 265*64315Seric###################################################################### 266*64315Seric##### 267*64315Seric`##### MAILER DEFINITIONS' 268*64315Seric##### 269*64315Seric###################################################################### 270*64315Seric###################################################################### 271*64315Sericundivert(7)dnl 272