# Copyright (c) 1983 Eric P. Allman
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
# %sccs.include.redist.sh%
VERSIONID(`@(#)nullrelay.m4 8.3 (Berkeley) %G%')
# This configuration applies only to relay-only hosts. They send
# all mail to a hub without consideration of the address syntax
# or semantics, except for adding the hub qualification to the
# This is based on a prototype done by Bryan Costales of ICSI.
# hub host (to which all mail is sent)
DH`'ifdef(`MAIL_HUB', MAIL_HUB,
ifdef(`LOCAL_RELAY', LOCAL_RELAY,
ifdef(`SMART_HOST', SMART_HOST)))
# SMTP initial login message
# UNIX initial From header format
# my name for error messages
# delimiter (operator) characters
include(`../m4/version.m4')
# strip message body to 7 bits on input?
# substitution for space (blank) characters
# error message header/file
ifdef(`confERROR_MESSAGE',
# save Unix-style "From_" lines at top of header?
OH`'ifdef(`HELP_FILE', HELP_FILE, /usr/lib/sendmail.hf)
# ignore dots as terminators in incoming messages?
# Insist that the BIND name server be running to resolve names
# deliver MIME-encapsulated error messages?
Oj`'confMIME_FORMAT_ERRORS
# open connection cache size
# open connection cache timeout
OK`'confMCI_CACHE_TIMEOUT
# send to me too, even in an alias expansion?
# default messages to old style headers if no special punctuation?
Oo`'confOLD_STYLE_HEADERS
ifdef(`confDAEMON_OPTIONS',
# who (if anyone) should get extra copies of error messages
ifdef(`confCOPY_ERRORS_TO',
# slope of queue-only function
ifdef(`confQUEUE_FACTOR',
OQ`'ifdef(`QUEUE_DIR', QUEUE_DIR, /var/spool/mqueue)
# read timeout -- now OK per RFC 1123 section 5.3.2
ifdef(`confREAD_TIMEOUT',
# queue up everything before forking?
OS`'ifdef(`STATUS_FILE', STATUS_FILE, /etc/sendmail.st)
# default message timeout interval
# if undefined, use system default
# if defined but null, use TZ envariable passed in
# if defined and non-null, use that info
ifelse(confTIME_ZONE, `USE_SYSTEM', `#Ot',
confTIME_ZONE, `USE_TZ', `Ot',
# deliver each queued job in a separate process?
ifdef(`confWORK_CLASS_FACTOR',
Oz`'confWORK_CLASS_FACTOR,
ifdef(`confWORK_TIME_FACTOR',
OZ`'confWORK_TIME_FACTOR,
###########################
###########################
#########################
#########################
HReceived: $?sfrom $s $.$?_($_) $.by $j ($v/$Z)$?r with $r$. id $i$?u for $u$.; $b
H?M?Resent-Message-Id: <$t.$i@$j>
H?M?Message-Id: <$t.$i@$j>
######################################################################
######################################################################
######################################################################
######################################################################
###########################################
### Rulset 3 -- Name Canonicalization ###
###########################################
# handle null input and list syntax (translate to <@> special case)
# basic textual canonicalization -- note RFC733 heuristic here
R$*<$*>$*<$*>$* $2$3<$4>$5 strip multiple <> <>
R$*<$*<$+>$*>$* <$3>$5 2-level <> nesting
R$*<>$* $@ <@> MAIL FROM:<> case
R$*<$+>$* $2 basic RFC821/822 parsing
# eliminate local host if present
R@ $=w $=: $+ $@ @ $H $2 $3 @thishost ...
R@ $+ $@ $1 @somewhere ...
R$+ @ $=w $@ $1 @ $H ...@thishost
R$+ @ $+ $@ $1 @ $2 ...@somewhere
R$=w ! $+ $@ $2 @ $H thishost!...
R$+ ! $+ $@ $1 ! $2 @ $H somewhere ! ...
R$+ % $=w $@ $1 @ $H ...%thishost
R$+ % $+ $@ $1 @ $2 ...%somewhere
R$+ $@ $1 @ $H unadorned user
######################################
### Ruleset 0 -- Parse Address ###
######################################
R$*:;<@> $#error $@ USAGE $: "list:; syntax illegal for recipient addresses"
# pass everything else to a relay host
R$* $#_RELAY_ $@ $H $: $1
######################################################################
######################################################################
`##### MAILER DEFINITIONS'
######################################################################
######################################################################