############################################################
############################################################
##### SENDMAIL CONFIGURATION FILE
##### @(#)monet.mc 3.2 10/7/82
############################################################
############################################################
############################################################
############################################################
#################################################
# General configuration information
# @(#)csbase.m4 3.9 2/16/83
#################################################
CABerkeley UCB ucbc70 c70 UCB-C70 u UCB-VAX ucbvax
CDBERKELEY UCB ucbc70 c70 ucb-c70 u UCB-VAX ucbvax
# known SMTP/ethernet hosts (this domain only) -- only $R need be complete
CSucbic ic ucbic-ec ic-ec cad-b cad-ic
CSucbicw icw ucbicw-ec icw-ec cad-c cad-icw
############################################################
# General configuration information
# This information is basically just "boiler-plate"; it must be
# there, but is essentially constant.
# Information in this file should be independent of location --
# i.e., although there are some policy decisions made, they are
# not specific to Berkeley per se.
# @(#)base.m4 3.43 2/16/83
############################################################
# @(#)version.m4 3.5 2/17/83
##########################
##########################
# delimiter (operator) characters
De$j Sendmail $v/$V ready at $b
# default delivery mode (deliver in background)
# (don't) connect to "expensive" mailers
# default messages to old style
# read timeout -- violates protocols
# queue up everything before starting transmission
# default timeout interval
# time zone names (V6 only)
###############################
### Message precedences ###
###############################
#########################
#########################
#############################
### Format of headers ###
#############################
H?M?Message-Id: <$t.$p@$j>
HReceived: $?sfrom $s $.by $j ($v/$V)
###########################
###########################
# rules marked with "*" are removed or different when 819 becomed effective
################################
# Sender Field Pre-rewriting #
################################
R@ $@ handle <> error addr
R@$+ $@@$1 handle route-addr
R$+@$+@$=R $>3$1@$2 u@h@gateway -> u@h
R$-!$+@$=R $>3$1!$2 h!u@relay -> h!u
###################################
# Recipient Field Pre-rewriting #
###################################
#################################
# Final Output Post-rewriting #
#################################
# externalize local domain info
R$+@$*LOCAL $1@$2$D.ARPA convert local domain
# turn user@e@d@c@b@a back into @a,@b,@c,@d:user@e form
R$+@$+@$+ $:@$3:$1@$2 @d@c@b@a:u@e
R@$+@$+:$+ $:@$2:@$1:$3 @c@b@a:@d:u@e
R@$+@$+:@$+:$+ @$2:@$1,@$3:$4 @a:@b,@c,@d:u@e
R@$+:@$+:$+ @$1,@$2:$3 @a,@b,@c,@d:u@e
###########################
# Name Canonicalization #
###########################
# handle "from:<>" special case
R<> $@@ turn into magic token
# basic textual canonicalization
R$*<$+>$* $2 basic RFC821/822 parsing
R$+ at $+ $1@$2 "at" -> "@" for RFC 822
# make sure <@a,@b,@c:user@d> syntax is canonical
R@$+,$+ @$1:$2 change all "," to ":"
R@$+:$+:$+ @$1,$2:$3 all but last back to ","
# convert <@a,@b,@c:user@d> syntax into user@d@c@b@a
R@$+:$+ $2,@$1 move path to RHS
R$+,@$+,@$+,@$+ $1,@$3@$2,@$4 inside out convert
R$+,@$+,@$+ $1@$3@$2 final twist
R$+,@$+ $1@$2 for u@b,@a case
# identify local domain on end of address
R$+@$+ $:$>6$1@$2 localize name
# now see if it is reasonably canonical
#R$+@$-.$+ $@$1@$2.$3 handle user@domain
# delete multiple host specs and extra net info -- dangerous business here
R$-:$-:$+ $2:$3 drop multiple old-style
R$+@$=H.LOCAL $1@$2 canonical form
R$-:$+@LOCAL $1:$2 drop @UCB on berknet
R$-:$+@$=H $1:$2 drop @local on berknet
R$-:$*;@$+ $@$1:$2;@$3 try to handle lists
R$-:$+@$+ $2@$3 drop forwarding host
R$-!$+@LOCAL $1!$2 drop @UCB on uucp
R$-!$+@$=H $1!$2 drop @local on uucp
R$+@$+@LOCAL $1@$2 drop @UCB on arpanet
R$+@$+@$=H $1@$2 drop @local on arpanet
R$+ $:$>8$1 host dependent cleanup
# the heart of canonicalization....
# (there should be a .LOCAL on the RHS of the next three lines)
R$-.$+@LOCAL $2@$1 strip local arpa name
# now resolve some things
R$+@$+ $@$1@$2 reasonably canonical
R$+^$+ $1!$2 convert ^ to !
R$-!$+ $@$2@$1.UUCP resolve uucp names
#########################################
### Strip local info from addresses ###
### (This ruleset is recursive) ###
#########################################
R$+ $:$>3$1 make canonical
R$+@$*$=H.LOCAL $1@$2 user@thishost.LOCAL
R$+@$*$=H.ARPA $1@$2 user@thishost.ARPA
R$+@$*$=H.UUCP $1@$2 user@thishost.UUCP
R$+@$*$=H $1@$2 user@thishost
R$+@$+. $1@$2 for subhost.thishost
R$+@ $>9$1 strip null trash
##### special local conversions
R$+@$*$=D $1@$2LOCAL convert local domain
R$+@$*$=D.ARPA $1@$2LOCAL
R$+@$+.UUCP.LOCAL $1@$2.UUCP make UUCP top level
R$+@$+.UUCP.ARPA $1@$2.UUCP make UUCP top level
R$+@$=C.LOCAL $1@$2.CC adjust CC hosts (ucbvax)
R$+@$=C $1@$2.CC adjust CC hosts (ucbvax)
R$+@$+.CC.LOCAL $1@$2.CC adjust CC domain
############################################################
############################################################
##### Local and Program Mailer specification
##### @(#)localm.m4 3.4 2/3/83
############################################################
############################################################
Mlocal, P=/bin/mail, F=rlsDFMmn, S=10, R=20, A=mail -d $u
Mprog, P=/bin/csh, F=lsDFMe, S=10, R=20, A=csh -fc $u
############################################################
############################################################
##### Ethernet Mailer specification
##### @(#)etherm.m4 3.4 2/17/83
############################################################
############################################################
Mether, P=[IPC], F=msDFMueCX, S=11, R=21, A=IPC $h
R$+@$+ $@$1@$2 already ok
R$+ $@$1@$H tack on our hostname
############################################################
############################################################
##### BASIC ETHERNET RULES
##### @(#)ether.m4 3.8 1/8/83
############################################################
############################################################
############################################################
############################################################
##### RULESET ZERO PREAMBLE
##### The beginning of ruleset zero is constant through all
##### @(#)zerobase.m4 3.2 1/15/83
############################################################
############################################################
R@ $#local$:root handle <> form
R$+@[$+] $#tcp$@[$2]$:$1@[$2] numeric internet spec
R$+@LOCAL $1@$R domain gateway
# turn addresses in other formats into local format
R$+@$*$=S.$=D $1@$2$3 user@etherhost.Berkeley
R$+@$+ $:$>9$1@$2 strip local info
################################################
### Machine dependent part of ruleset zero ###
################################################
# resolve names that can go via the ethernet
R$+@$*$=S $#ether$@$3$:$1@$2$3 user@etherhost
# other non-local names will be kicked upstairs
R$+@$+ $#ether$@$R$:$1@$2 user@some.where
# remaining names must be local
R$+ $#local$:$1 everything else