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