Add diclaimer of copyright to _osname() manual page.
[unix-history] / usr.sbin / sendmail / cf / cf / ucbvax.cf
############################################################
#
# Sendmail
# Copyright (c) 1983 Eric P. Allman
# Berkeley, California
#
# Copyright (c) 1983 Regents of the University of California.
# All rights reserved. The Berkeley software License Agreement
# specifies the terms and conditions for redistribution.
#
# @(#)ucbvax.mc 1.39 (Berkeley) 1/3/89
#
# built by phil on Wed Jan 25 11:47:20 PST 1989
# in /usr/src/local/nettables/sendmail.cf/cf on monet.Berkeley.EDU
#
############################################################
############################################################
#####
##### SENDMAIL CONFIGURATION FILE
#####
##### This one is the big daddy. There is no "upstairs"
##### to bounce a message to -- except perhaps the arpanet.
#####
#####
############################################################
############################################################
######################
### local info ###
######################
# internet hostnames
Cwucbvax vax k UCB-VAX Berkeley UCB-C70 UCB
# UUCP hostnames
DUucbvax
CUucbvax
# local UUCP connections
CV Padova
CV Shasta
CV alice
CV allegra
CV amdcad
CV anlams
CV att
CV attunix
CV avsd
CV bellcore bellcor
CV calma
CV cithep
CV craylab
CV decusj
CV decvax
CV decwrl
CV dssovax
CV eagle
CV ecovax
CV floyd
CV geoff
CV harpo
CV ho3e2
CV hpda
CV hplabs
CV ibmsupt ibmuupa ibmpa
CV iiasa70
CV imagen
CV isunix menlo70
CV kentmth
CV kentvax
CV lbl-csam lbl-csa
CV lime
CV mebazf
CV molbio
CV mothra
CV mseonyx
CV mtxinu
CV nbires
CV pixar
CV pur-ee
CV purdue
CV pwbd
CV research researc
CV sdcarl
CV sdcsvax
CV sftig
CV sgi olympus
CV sii
CV srivisi
CV ssyx
CV sun
CV tektronix tektron
CV tolerant toleran
CV trwrb
CV twg
CV ucbcad
CV ucdavis
CV ucivax
CV ucla-se ucla-cs
CV ucsbcsl ucsbhub
CV ucscc
CV ucsd
CV ucsfcgl
CV ucsfmis
CV ulysses
CV unisoft
CV unmvax
CV usenix
CV uw
CV uwvax
CV vax135
CV voder
CV wheps
CV whuxle
CV whuxlj
CV xprin
CV zehntel
CV zilog
# UUCP connections on ucbarpa
DWucbarpa.Berkeley.EDU
CW endotsew
CW fateman
CW franz
CW interlan
CW metron
# UUCP connections on ucbcad
DXcad.Berkeley.EDU
CX a
CX ames
CX analog
CX ardent dana
CX arthur
CX biosys
CX black
CX boulder
CX evans
CX harpo
CX harris
CX hpda
CX hpsrla
CX island
CX jupiter
CX masscomp masscom
CX nsc
CX oakhill
CX octal
CX sda
CX stellar
CX teklds
CX tektronix tektron
CX binky tonto
CX toshiba tsb0
CX ucbcad
CX ucbvax
CX voder
CX vogon
# UUCP connections on cogsci
DYcogsci.Berkeley.EDU
CY capmkt
CY contessa
CY emind
CY hoptoad
CY nkainc
CY well
CY ferdy
# known uucp connections with a smart uucp
CMdecvax
# we have full sendmail support here
Oa
#############################
### Setup Information ###
#############################
######################
# General Macros #
######################
# local domain name
# YOUR DOMAIN NAME GOES HERE!
DDYOUR_DOMAIN_NAME
# my official hostname
Dj$w
###############
# Classes #
###############
# Internal ("fake") domains that we use in rewriting
CIUUCP BITNET CSNET
############################################################
############################################################
#####
##### BERKELEY HOSTS REGISTERED WITH THE NIC
#####
############################################################
############################################################
CNbach ucbbach
CNbizet ucbbizet
CNcad ucbcad
CNdegas ucbdegas
CNeast ucbeast
CNernie ucbernie
CNesvax ucbesvax
CNjade ucbjade
CNji ucbji
CNmike ucbmike
CNmonet ucbmonet
CNpostgres
CNrenoir ucbrenoir
CNucbarpa
CNucbvax
CNviolet ucbviolet
######################
# Version Number #
######################
DZ1.34
######################
# Special macros #
######################
# my name
DnMAILER-DAEMON
# UNIX header format
DlFrom $g $d
# delimiter (operator) characters
Do.:%@!^=/[]
# format of a total name
Dq$g$?x ($x)$.
# SMTP login message
De$j Sendmail $v/$Z ready at $b
###############
# Options #
###############
# location of alias file
OA/usr/lib/aliases
# wait up to ten minutes for alias file rebuild
Oa10
# substitution for space (blank) characters
OB.
# (don't) connect to "expensive" mailers
#Oc
# default delivery mode (deliver in background)
Odbackground
# temporary file mode
OF0600
# default GID
Og1
# location of help file
OH/usr/lib/sendmail.hf
# log level
OL9
# default network name
ONARPA
# default messages to old style
Oo
# queue directory
OQ/usr/spool/mqueue
# read timeout -- violates protocols
Or2h
# status file
OS/usr/lib/sendmail.st
# queue up everything before starting transmission
Os
# default timeout interval
OT3d
# time zone names (V6 only)
OtPST,PDT
# default UID
Ou1
# wizard's password
OW*
# load average at which we just queue messages
Ox8
# load average at which we refuse connections
OX12
###########################
# Message precedences #
###########################
Pfirst-class=0
Pspecial-delivery=100
Pbulk=-60
Pjunk=-100
#####################
# Trusted users #
#####################
Troot
Tdaemon
Tuucp
#########################
# Format of headers #
#########################
H?P?Return-Path: <$g>
HReceived: $?sfrom $s $.by $j ($v/$Z)
id $i; $b
H?D?Resent-Date: $a
H?D?Date: $a
H?F?Resent-From: $q
H?F?From: $q
H?x?Full-Name: $x
HSubject:
# HPosted-Date: $a
# H?l?Received-Date: $b
H?M?Resent-Message-Id: <$t.$i@$j>
H?M?Message-Id: <$t.$i@$j>
###########################
### Rewriting Rules ###
###########################
################################
# Sender Field Pre-rewriting #
################################
S1
#R$*<$*>$* $1$2$3 defocus
###################################
# Recipient Field Pre-rewriting #
###################################
S2
#R$*<$*>$* $1$2$3 defocus
#################################
# Final Output Post-rewriting #
#################################
S4
R@ $@ handle <> error addr
# resolve numeric addresses to name if possible
R$*<@[$+]>$* $:$1<@$[[$2]$]>$3 lookup numeric internet addr
# externalize local domain info
R$*<$+>$* $1$2$3 defocus
R@$+:@$+:$+ @$1,@$2:$3 <route-addr> canonical
# UUCP must always be presented in old form
R$+@$-.UUCP $2!$1 u@h.UUCP => h!u
# delete duplicate local names
R$+%$=w@$=w $1@$w u%host@host => u@host
R$+%$=w@$=w.$D $1@$w u%host@host => u@host
# addition to Post-rewrite Rule
R$+%$=w@$=w.EDU $1@$w u%UCB@UCB.edu => u@UCB.berk.edu
R$+%$=w@$=w.$=w.EDU $1@$w u%UCB@UCB.berk.edu => u@UCB
###########################
# Name Canonicalization #
###########################
S3
# handle "from:<>" special case
R$*<>$* $@@ turn into magic token
# basic textual canonicalization -- note RFC733 heuristic here
R$*<$*<$*<$+>$*>$*>$* $4 3-level <> nesting
R$*<$*<$+>$*>$* $3 2-level <> nesting
R$*<$+>$* $2 basic RFC821/822 parsing
# make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later
R@$+,$+ @$1:$2 change all "," to ":"
# localize and dispose of route-based addresses
R@$+:$+ $@$>6<@$1>:$2 handle <route-addr>
# more miscellaneous cleanup
R$+ $:$>8$1 host dependent cleanup
R$+:$*;@$+ $@$1:$2;@$3 list syntax
R$+:$*; $@$1:$2; list syntax
R$+@$+ $:$1<@$2> focus on domain
R$+<$+@$+> $1$2<@$3> move gaze right
R$+<@$+> $@$>6$1<@$2> already canonical
# convert old-style addresses to a domain-based address
R$+^$+ $1!$2 convert ^ to !
R$-!$+ $@$>6$2<@$1.UUCP> resolve uucp names
R$+.$-!$+ $@$>6$3<@$1.$2> domain uucps
R$+!$+ $@$>6$2<@$1.UUCP> uucp subdomains
R$+%$+ $:$>9$1%$2 user%host
R$+<@$+> $@$>6$1<@$2> already canonical
R$-.$+ $@$>6$2<@$1> host.user
#################################
# special local conversions #
#################################
S6
R$*<@$=w>$* $:$1<@$w>$3 get into u@$w form
R$*<@$=w.$D>$* $:$1<@$w>$3
R$*<@$=U.UUCP>$* $:$1<@$w>$3
################################
# Change rightmost % to @. #
################################
S9
R$*%$* $1@$2 First make them all @'s.
R$*@$*@$* $1%$2@$3 Undo all but the last.
R$*@$* $@$1<@$2> Put back the brackets.
############################################################
############################################################
#####
##### Provide Backward Compatibility
#####
############################################################
############################################################
#####################################################
# General code to convert back to old style names #
#####################################################
S5
R$+<@$w> $1 strip host
R$+<@$-.UUCP> $2!$1 u@host.UUCP => host!u
###################
### Mailers ###
###################
############################################################
############################################################
#####
##### Local and Program Mailer specification
#####
############################################################
############################################################
Mlocal, P=/bin/mail, F=rlsDFMmn, S=10, R=20, A=mail -d $u
Mprog, P=/bin/sh, F=lsDFMe, S=10, R=20, A=sh -c $u
S10
R@ $n errors to mailer-daemon
############################################################
############################################################
#####
##### UUCP Smart Mailer specification
##### (handles multiple recipients)
#####
############################################################
############################################################
Msuucp, P=/usr/bin/uux, F=mDFMhuU, S=13, R=23, M=100000,
A=uux - -r $h!rmail ($u)
############################################################
############################################################
#####
##### UUCP Mailer specification
#####
############################################################
############################################################
Muucp, P=/usr/bin/uux, F=DFMhuU, S=13, R=23, M=100000,
A=uux - -r -z -a$f -gC $h!rmail ($u)
S13
R$+ $:$>5$1 convert to old style
R$*<@$=w>$* $1<@$w>$2 resolve abbreviations
R$*<@$->$* $1<@$2.$D>$3 resolve abbreviations
R$+<@$+> $2!$1 uucpize (no @'s in addr)
R$w!$+ $1 strip local name
R$+ $:$U!$1 stick on our host name
R$=U!$-%$- $:$1!$2@$3.$D ucbvax!user@host.domain
S23
R$+ $:$>5$1 convert to old style
R$*<@$=w>$* $1<@$w>$2 resolve abbreviations
R$*<@$->$* $1<@$2.$D>$3 resolve abbreviations
R$+<@$w> $U!$1 a!b@here -> here!a!b
R$=U!$+ $2 here!a!b -> a!b
# sanity ... should not happen.
R$=U.$D!$+ $2 strip local name.domain
############################################################
############################################################
#####
##### SMTP UUCP Mailer specification
#####
##### This mailer sends UUCP traffic over an SMTP connection.
##### Obviously, we only want to do this with UUCP hosts with
##### whom we have SMTP connectivity. The idea here is to
##### avoid having to double queue (once for sendmail, once
##### for UUCP) when there's no need. Since we need to
##### preserve uucp-ness (e.g., bangs), we use the UUCP mailer
##### rewriting rulesets.
#####
############################################################
############################################################
Msmtpuucp, P=[IPC], F=mDFMueXLC, S=13, R=23, A=IPC $h, E=\r\n
############################################################
############################################################
#####
##### Internet SMTP Mailer specification
#####
##### Messages processed by this specification are assumed to leave
##### the local domain -- hence, they must be canonical according to
##### RFC822 etc. This means that machines not registered with
##### the NIC must be hidden behind our Internet relay.
#####
############################################################
############################################################
Mtcp, P=[IPC], F=mDFMueXLC, S=14, R=24, A=IPC $h, E=\r\n
S14
# pass <route-addr>'s through
R<@$+>$* $@<@$[$1$]>$2 resolve <route-addr>
# map colons to dots everywhere
R$*:$* $1.$2 map colons to dots
# output local host in user@host.domain syntax
R$- $1<@$w> user w/o host
R$+<@$=w> $:$1<@$w> this host
R$+<@$-> $:$1<@$[$2$]> canonicalize into dom
R$+<@$-> $:$1<@$2.$D> if nameserver fails
R$+<@$=N.$D> $@$1<@$2.$D> nic-reg hosts are ok
R$+<@$*.$D> $@$1%$2.$D<@$A> else -> u%h@gateway
# if not local, and not a "fake" domain, ask the nameserver
R$+<@$+.$~I> $@$1<@$[$2.$3$]> user@host.domain
R$+<@[$+]> $@$1<@[$2]> already ok
# output internal ("fake") domains as "user%host@relay"
R$+<@$+.UUCP> $@$2!$1<@$w> user@host.UUCP
S24
# put in <> kludge
R$*<$*>$* $1$2$3 defocus
R$* $:$>3$1 now canonical form
# pass <route-addr>'s through
R<@$+>$* $@<@$[$1$]>$2 resolve <route-addr>
# map colons to dots everywhere.....
R$*:$* $1.$2 map colons to dots
# output local host in user@host.domain syntax
R$- $1<@$w> user w/o host
R$+<@$=w> $:$1<@$w> this host
R$+<@$-> $:$1<@$[$2$]> canonicalize into dom
R$+<@$-> $:$1<@$2.$D> if nameserver fails
R$+<@$=N.$D> $@$1<@$2.$D> nic-reg hosts are ok
R$+<@$*.$D> $@$1%$2.$D<@$A> else -> u%h@gateway
# if not local, and not a "fake" domain, ask the nameserver
R$+<@$+.$~I> $@$1<@$[$2.$3$]> user@host.domain
R$+<@[$+]> $@$1<@[$2]> already ok
# Hide fake domains behind relays
R$+<@$+.UUCP> $@$2!$1 user@host.UUCP
############################################################
############################################################
#####
##### Local Domain SMTP Mailer specification
#####
##### Messages processed by this specification are assumed to remain
##### the local domain. Hence, they can refer to hosts that are
##### not registered in the NIC host table.
#####
############################################################
############################################################
Mtcpld, P=[IPC], F=mDFMueXLC, S=17, R=27, A=IPC $h, E=\r\n
S17
# cleanup forwarding a bit
R$*<$*>$* $1$2$3 defocus
R$* $:$>3$1 canonicalize
R$*%$*<@$w> $:$>9$1%$2 user%localhost@localdomain
# pass <route-addr>'s through
R<@$+>$* $@<@$[$1$]>$2 resolve <route-addr>
# map colons to dots everywhere
R$*:$* $1.$2 map colons to dots
# output local host as user@host.domain
R$- $@$1<@$w> user w/o host
R$+<@$w> $@$1<@$w> this host
R$+<@$=w> $@$1<@$w> or an alias
R$+<@$-> $:$1<@$[$2$]> ask nameserver
R$+<@$w> $@$1<@$w> this host
R$+<@$-> $@$1<@$2.$D> if nameserver fails
# if not local, and not a "fake" domain, ask the nameserver
R$+<@$+.$~I> $@$1<@$[$2.$3$]> user@host.domain
R$+<@[$+]> $@$1<@[$2]> already ok
# output fake domains as user%fake@relay
R$+<@$+.UUCP> $@$2!$1<@$w> user@host.UUCP
S27
# cleanup
R$*<$*>$* $1$2$3 defocus
R$* $:$>3$1 now canonical form
R$*%$*<@$w> $:$>9$1%$2 user%localhost@localdomain
# pass <route-addr>'s through
R<@$+>$* $@<@$[$1$]>$2 resolve <route-addr>
# map colons to dots everywhere
R$*:$* $1.$2 map colons to dots
# output local host as user@host.domain
R$- $@$1<@$w> user w/o host
R$+<@$w> $@$1<@$w> this host
R$+<@$=w> $@$1<@$w> or an alias
R$+<@$-> $:$1<@$[$2$]> ask nameserver
R$+<@$w> $@$1<@$w> this host
R$+<@$-> $@$1<@$2.$D> if nameserver fails
# if not local, and not a "fake" domain, ask the nameserver
R$+<@$+.$~I> $@$1<@$[$2.$3$]> user@host.domain
R$+<@[$+]> $@$1<@[$2]> already ok
# output fake domains as user%fake@relay
R$+<@$+.UUCP> $@$2!$1 user@host.UUCP
#####################
### Rule Zero ###
#####################
############################################################
############################################################
#####
##### RULESET ZERO PREAMBLE
#####
##### The beginning of ruleset zero is constant through all
##### configurations.
#####
############################################################
############################################################
S0
# first make canonical
R$*<$*>$* $1$2$3 defocus
R$+ $:$>3$1 make canonical
# handle special cases
R$*<@[$+]>$* $:$1<@$[[$2]$]>$3 numeric internet addr
R$*<@[$+]>$* $#tcp$@[$2]$:$1@[$2]$3 numeric internet spec
R$+ $:$>6$1
R$-<@$w> $#local$:$1
R@ $#error$:Invalid address handle <> form
# canonicalize using the nameserver if not internal domain
R$*<@$*.$~I>$* $:$1<@$[$2.$3$]>$4
R$*<@$->$* $:$1<@$[$2$]>$3
R$*<@$->$* $:$1<@$2.$D>$3 if nameserver fails
# now delete the local info
R<@$w>:$* $@$>0$1 @here:... -> ...
R$*<@$w> $@$>0$1 ...@here -> ...
##################################
# End of ruleset zero preamble #
##################################
################################################
### Machine dependent part of ruleset zero ###
################################################
# resolve SMTP UUCP connections
R<@bellcore.uucp>:$+ $#smtpuucp$@bellcore.com$:$2
R$*<@bellcore.uucp> $#smtpuucp$@bellcore.com$:$1
R<@decvax.uucp>:$+ $#smtpuucp$@decvax.dec.com$:$2
R$*<@decvax.uucp> $#smtpuucp$@decvax.dec.com$:$1
R<@decwrl.uucp>:$+ $#smtpuucp$@decwrl.dec.com$:$2
R$*<@decwrl.uucp> $#smtpuucp$@decwrl.dec.com$:$1
R<@hplabs.uucp>:$+ $#smtpuucp$@hplabs.hp.com$:$2
R$*<@hplabs.uucp> $#smtpuucp$@hplabs.hp.com$:$1
R<@lbl-csam.uucp>:$+ $#smtpuucp$@lbl-csam.arpa$:$2
R$*<@lbl-csam.uucp> $#smtpuucp$@lbl-csam.arpa$:$1
R<@pur-ee.uucp>:$+ $#smtpuucp$@ecn.purdue.edu$:$2
R$*<@pur-ee.uucp> $#smtpuucp$@ecn.purdue.edu$:$1
R<@purdue.uucp>:$+ $#smtpuucp$@purdue.edu$:$2
R$*<@purdue.uucp> $#smtpuucp$@purdue.edu$:$1
R<@sdcarl.uucp>:$+ $#smtpuucp$@sdcarl.ucsd.edu$:$2
R$*<@sdcarl.uucp> $#smtpuucp$@sdcarl.ucsd.edu$:$1
R<@sun.uucp>:$+ $#smtpuucp$@sun.com$:$2
R$*<@sun.uucp> $#smtpuucp$@sun.com$:$1
R<@ucbcad.uucp>:$+ $#smtpuucp$@cad.berkeley.edu$:$2
R$*<@ucbcad.uucp> $#smtpuucp$@cad.berkeley.edu$:$1
R<@ucdavis.uucp>:$+ $#smtpuucp$@ucdavis.ucdavis.edu$:$2
R$*<@ucdavis.uucp> $#smtpuucp$@ucdavis.ucdavis.edu$:$1
R<@ucla-se.uucp>:$+ $#smtpuucp$@seas.ucla.edu$:$2
R$*<@ucla-se.uucp> $#smtpuucp$@seas.ucla.edu$:$1
R<@ucscc.uucp>:$+ $#smtpuucp$@c.ucsc.edu$:$2
R$*<@ucscc.uucp> $#smtpuucp$@c.ucsc.edu$:$1
R<@ucsfcgl.uucp>:$+ $#smtpuucp$@cgl.ucsf.edu$:$2
R$*<@ucsfcgl.uucp> $#smtpuucp$@cgl.ucsf.edu$:$1
R<@uwvax.uucp>:$+ $#smtpuucp$@spool.cs.wisc.edu$:$2
R$*<@uwvax.uucp> $#smtpuucp$@spool.cs.wisc.edu$:$1
# resolve local UUCP links
R<@$=V.UUCP>:$+ $#uucp$@$1$:$1:$2 @host.UUCP: ...
R$+<@$=V.UUCP> $#uucp$@$2$:$1 user@host.UUCP
# resolve explicit arpanet names (to avoid with machine name "arpa" below)
R$*<@$*$-.ARPA>$* $#tcp$@$3.ARPA$:$1<@$2$3.ARPA>$4 user@domain.ARPA
# resolve fake top level domains by forwarding to other hosts
# resolve non-local UUCP links
R$*<@$=W.UUCP>$* $#tcpld$@$W$:$1<@$2.UUCP>$3 user@host.UUCP
R$*<@$=X.UUCP>$* $#tcpld$@$X$:$1<@$2.UUCP>$3 user@host.UUCP
R$*<@$=Y.UUCP>$* $#tcpld$@$Y$:$1<@$2.UUCP>$3 user@host.UUCP
# this uucp stuff is wrong for domain uucp addresses
# - we should pass the whole "host.domain" to uucp so it can
# find the best route. But that depends on a uucp router
# which doesn't exist here yet, so for now, we'll settle for
# trying to route to the domain (pretending its a host).
# Suitable L.sys entries can make this work. If it doesn't
# then returned mail will just say "dom unknown", which is true ..
# resolve smart UUCP links
R<@$=M.$-.UUCP>:$+ $#suucp$@$2$:@$1.$2.UUCP:$3 @host.domain.UUCP: ...
R<@$=M.UUCP>:$+ $#suucp$@$1$:$2 @host.UUCP: ...
R$+<@$=M.$-.UUCP> $#suucp$@$3$:$1@$2.$3.UUCP user@host.domain.UUCP
R$+<@$=M.UUCP> $#suucp$@$2$:$1 user@host.UUCP
# local domain sites
R$*<@$*.$D>$* $#tcpld$@$2.$D$:$1<@$2.$D>$3 user@host.our.domain
R$*<@$->$* $#tcpld$@$2.$D$:$1<@$2.$D>$3 user@host
R$*<@$-.UUCP>$* $#tcpld$@$2.$D$:$1<@$2.$D>$3 user@host.UUCP
# other non-local names will be kicked upstairs
R$*<@$+>$* $#tcp$@$2$:$1<@$2>$3 user@some.where
# remaining names must be local
R$+ $#local$:$1 everything else
########################################
### Host dependent address cleanup ###
########################################
S8
R$*$=U!$+@$+ $3@$4 drop uucp forward