From: root@choreo.ca (Superuser)
Subject: problems with DEC sendmail
X-Disclaimer:  This news article was written by an employee or customer of
               Choreo Systems Inc., and does not necessarily reflect the
               opinions or views of the Managament of Choreo Systems Inc.
Organization: Choreo Systems, Ottawa Canada
Date: Tue, 26 Jan 1993 18:18:29 GMT
Followup-To: chare@choreo.ca

Greetings:

I am in the process of installing a DECstation 3100 for a user here, and we
need to set up sendmail.  I am a novice when it comes to this MTA, as I 
typically work with MMDF.

At any rate, when this user sends mail out to our local net, it is returned
from the MAILER-DAEMON with an error that it can't contact a machine called
mail.tcplocal.

The relay machine which Ultrix is trying to contact to route the mail is
mail.Choreo.CA.  How do I fix this?

This is what my sendmail.cf file looks like.

Please reply to my mail address, chare@choreo.ca, as I don't regulary get this
group.

Thanks for your help.

############################################################
############################################################
#####
#####		SENDMAIL CONFIGURATION FILE
#####
#
# @(#)generic.mc	4.1	(ULTRIX)	7/2/90
#
#####		generic configuration
#####
#####
############################################################
############################################################


############################################################
###	local info
############################################################


# This section specifies data about your environment and how to
# handle mail. The configuration has provisions for several (independent)
# mail relay machines for handling different kinds of mail.
# Below these are all given the name "RELAY". If you need or want this
# kind of relay you will need to uncomment the line and put in the name
# of the appropriate host.
#
# The relay machines are specified separately for each kind of mail
# so you can spread out the load. On the other hand they could all
# point to the same machine to centralize information. The relay can
# even name this machine and the "right thing" will happen. When adding
# relay names, be sure to put the first name directly next to the
# name of the macro or class - do not put a space between it. Also, remember
# to uncomment it by removing the pound sign "#".
# Relay machine names should be expressed as the simple unqualified host
# name. ie. Do not include the domain specifiation of the host in the macro
# definition of the relay name.
#
# For example, the general purpose relay example is given as:
#
#	start of line ->#DRRELAY
#
# To make "foo" your general purpose relay, change the line to:
#
#	start of line ->DRfoo
# 
#
# The $w macro is preset by sendmail to the current host's unqualified
# host name. Here we simply capture the value in our own $A macro.
#
DA$w


# The $D macro will be the domain for this machine. If your machine
# is part of a registered domain, that name should be defined here.
#
# If you don't have a domain, leave it defined as local. Some typical
# domains are DEC.COM, ARPA, MIT.EDU, CSS.GOV.
#
# Do not add domain definitions to the $D macro. The macro should be
# re-defined to specify the primary internet domain for this machine.
# Additional domains for this machine may ge given in the  CLASS  "D"
# definitions below.
#
DDChoreo.CA

# These are other "domains" in which this machine may be named. They
# are used to recognize all forms of the name for the local machine.
#
#CDlocal uucp dnet
#
# These are pseudo domains used internally. They are not part of
# the real Internet system and must not be allowed to escape.
#
CIlocal uucp dnet


# The $j macro is the name presented to remote SMTP servers when
# establishing a mail connection. It should always be your fully
# qualified domain name.
#
Dj$w.$D


# The $U macro is the name of this machine for UUCP communications.
# It is usually the same as the normal host name, but may need to be
# different for various site-specific reasons.
#
DU$w


# The $Y macro should define the name of this system for  DECnet
# communications. It is intended for use in the DECnet mail ruleset.
# This is the DECnet node name to be used for DECnet mail. It does not
# necessarily need to be the same as the hostname and most probably could
# not be in any case. U**x hostnames can be 255 characters long and contain
# imbedded domain information, while DECnet node names are limited to a
# maximum of 6 plain ascii characters.
#
DY$w


# The $w CLASS can be used to define "nicknames" for the local host.
# These are alternate names that other systems may use to direct mail
# to the local host. If this feature is used, the class should contain
# the set of all names by which this host is known by. This feature might
# normally be used when the local host name is revised but it is not feasable
# to notify all other hosts of the new name. Additionally, it may be that
# the local host is known by one name on the internet and another name on
# additional networks to which this host is connected.
#
#
#CwMyUnqualifiedHostName  AnAlternateName  NameUsedOnOtherNetwork 


# The $S class can be used to identify "local" machines. Mail to these
# machines will include the sender's and receiver's host names but will
# omit the domain in order to reduce the visual clutter. Mail delivered
# by SMTP to other (non-local) hosts will use full qualification.
#
# If your /etc/hosts file contains only local hosts, you can read the names
# directly from /etc/hosts. Otherwise you should produce a separate list
# of local host names in /usr/lib/hosts.local. Both forms are shown below.
#
#FS/usr/lib/hosts.local
#FS/etc/hosts %*[0-9.]%s


# The $R macro is the simple unqualifed host name of your general purpose
# relay machine. Any mail that cannot be resolved locally is forwarded to
# this machine for processing. It gets anything not covered by the other
# relay hosts.
#
DRmail.Choreo.CA


# The $F macro and class defines a named list of hosts and a relay machine
# to handle their mail. This is not normally used, but is included in the
# rewrite rules in case the need should arise.
#
#DFRELAY
#CFred blue green


# The $E macro defines the relay host for dnet (DECNET) connections.
# You need this only if your machine is not running DECNET but depending
# on some other local machine to relay DECNET mail.
#
#DERELAY


# The $Z macro names the relay for UUCP mail for sites not directly
# reachable by this host. The list of reachable sites is read from
# the UUCP L.sys file and assigned to the $Z class once when the
# config file is frozen.
#
# *WARNING* You must refreeze the sendmail config file every time
# you add a new host to uucp, or else sendmail will not know about
# it.  If you use uucpsetup to add new hosts, this will be done
# for you automatically - if you add hosts to L.sys by hand, you
# must do it yourself. Type: "/usr/lib/sendmail -bz" as root.
#
DZmail
#FZ/usr/lib/uucp/L.sys %[0-9a-zA-Z_-]


# The $N macro and class allow you to establish a central site for resolving
# user names which are not known locally. If you use this the relay machine
# will be passed any mail which is not for someone listed in /etc/passwd.
# In particular this means that all alias processing will be passed to the
# relay. You can add additional names to the N class to handle specific local
# aliases such as postmaster.
#
#
###################################
### Notes for Name Server Users ###
###################################
#
# For installations running one or both name servers, Yellow Pages or
# Hesiod/BIND, locally known users include (by default) those users defined
# in the Yellow Pages maps, passwd.byname and mail.aliases, or the Hesiod
# passwd and aliases database.  If the user is not found in the /etc/passwd
# file, sendmail will check the above maps before passing the mail on to the
# central site for resolution.  If you do not want to consider such users as
# "local" for mailing purposes, comment out the rules defined under the
# sections labeled
#
#		############################################
#		### Optional Rules for Name Server Users ###
#		############################################
#
# in the  "Machine dependent part of ruleset zero"  definitions below. 
#
#######################################
### end Notes for Name Server Users ###
#######################################
#
#
# WARNING: If you use this feature you must refreeze the configuration file
# (via /usr/lib/sendmail -bz) every time a user is added or deleted from
# /etc/passwd. Also you will not be able to establish any local aliases
# other than those listed in class N below.
#
DNmail
FN/etc/passwd %[0-9a-zA-Z_-]
CN MAILER-DAEMON postmaster admin
#

############################################################
#
# @(#)base.m4	4.1	(ULTRIX)	7/2/90
#
#	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 any specific site.
#
#
############################################################

#		@(#)version.m4	4.1	(ULTRIX)	7/2/90

DVUltrix3.0-C/CH-Tue Jan 26 12:28:47 EST 1993
#


#
# @(#)base.m4	4.1	(ULTRIX)	7/2/90
#
##########################
###   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/$V ready at $b
#
# forwarding host -- redefine this if you can't talk to the relay directly
DF$R
#

###################
###   Options   ###
###################

# location of alias file
OA/usr/lib/aliases

# default delivery mode (deliver in background)
Odbackground

# (don't) connect to "expensive" mailers
#Oc

# temporary file mode
OF0600

# default GID
Og1

# location of help file
OH/usr/lib/sendmail.hf

# log level
OL9

# send to me to in alias expansion
Om

# 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)
OtEST,EDT

# default UID
Ou1

# Configuration options to adjust for system load conditions.
#
# Option  "x"  specifies the load average at which point sendmail
# just queues messages for later delivery. The internal default is
# a load average of 8 and need not be explicitly stated in the
# configuration file.
#
# Large systems (8800 class) can set this value to about 20 to 25
# while small systems (uvax) should run at about 4.
#
# The exact setting depends on processor speed, swap space, memory
# size, and normal load average. The load average of your system
# should be checked during a normal work period and the "x" option
# set to a few degrees higher. Too low a value will cause mail to
# be unneccessarily delayed, while too high a value may tend to
# increase the load on the machine during transient peaks.
#
Ox8
#
# Option "X" (upper case) specifies the load average at which point
# sendmail will refuse further connections.
# The internal default is 12. 
#
# Large systems (8800 class) can set this at approximately 25 to 30. The
# same comments apply here as for option "x" (lower case). Small systems
# (uvax, small memory, limited swap space) should run at about 5 or 6.
#
OX12

###############################
###   Message precedences   ###
###############################

Pfirst-class=0
Pspecial-delivery=100
Pjunk=-100

#########################
###   Trusted users   ###
#########################

Troot
Tdaemon
Tuucp
Tnetwork

#############################
###   Format of headers   ###
#############################

H?P?Return-Path: <$g>
H?R?Received: $?sfrom $s $.by $j ($v/$V)
	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>
HOrganization: Choreo Systems Inc., Ottawa Technical Services Group

###########################
###   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 addr

# externalize local domain info
R$*<@LOCAL>$*		$:$1<@$A>$2			change local info
R$*<$*.LOCAL>$*		$:$1<$2.$D>$3			change local info
R$*<$+>$*		$1$2$3				defocus
R@$+:$+:$+		@$1,$2:$3			<route-addr> canonical
R@$+:$+			$@<@$1:$2>			route-addr needs <>

# UUCP must always be presented in old form
R$+@$-.UUCP		$2!$1				u@h.UUCP => h!u

# Put MAIL-11 back in :: form
R$+@$-.DNET		$2::$1				u@h.dnet => h::u
R$+@$-.$-.DNET		$2.$3::$1			numeric form

# delete duplicate local names -- mostly for arpaproto.mc
R$+%$=w@$=w		$1@$3				u%UCB@UCB => u@UCB
R$+%$=w@$=w.$D		$1@$3.$D			u%UCB@UCB => u@UCB

###########################
#  Name Canonicalization  #
###########################
S3

# handle "from:<>" special case
R<>			$@@				turn into magic token

# basic textual canonicalization
R$*<$*<$*<$+>$*>$*>$*	$4				3-level <> nesting
R$*<$*<$+>$*>$*		$3				2-level <> nesting
R$*<$+>$*		$2				basic RFC821/822 parsing
R$+ at $+		$1@$2				"at" -> "@" for RFC 822
R$*<$*>$*		$1$2$3				in case recursive

# make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later
R@$+,$+			@$1:$2				change all "," to ":"

# localize and dispose of domain-based addresses
R@$+:$+			$@$>6<@$1>:$2			handle <route-addr>

# more miscellaneous cleanup
R$=w::$-$+		$2$3				clean off my name
R$+			$:$>8$1				host dependent cleanup
R$+:$*;@$+		$@$1:$2;@$3			list syntax
R$+@$+			$:$1<@$2>			focus on domain
R$+<$+@$+>		$1$2<@$3>			move gaze right
R$+<@$+%$+>		$1%$2<@$3>			move gaze right
R$-!$+<@$~S>		$1!$2@$3			defocus - not local host
R$-::$+<@$~S>		$1::$2@$3			defocus - not local host
R$+<@$+>		$@$>6$1<@$2>			already canonical

# localize mail-11 syntax
R$-::$+			$@$>6$2<@$1.dnet>		host::user
R$-.$-::$+		$@$>6$3<@$1.$2.dnet>		numeric decnet addr

# convert old-style addresses to a domain-based address
R$+%$+			$:$1<@$2>			user%host
R$+<@$+%$+>		$1%$2<@$3>			move "@" right
R$+<@$+>		$@$>6$1<@$2>			now canonical
R$-:$+			$@$>6$2<@$1>			host:user
R$-.$+!$+		$@$>6$3<@$1.$2>			host.domain!user
R$-!$+			$@$>6$2<@$1.UUCP>		resolve uucp names



############################################################
############################################################
#####
#####           local conventions
#
# @(#)localbase.m4	4.1	(ULTRIX)	7/2/90
#####
#####
#####
############################################################
############################################################

##### special local conversions

# Here you can any special local rewriting rules and keep them all
# in one place. Ruleset 8 is invoked at the beginning of ruleset 3
# and ruleset 6 is invoked at the end. Ruleset 3 always returns
# the result of a call to ruleset 6.

S8
# empty

S6
#
R$*<@$w>$*		$:$1<@$w>$2			localhost.domain
R$+<@$=w>		$:$1<@$w>			localhost
R$-$+<@$w>		$@$>3$1$2			localhost
R$-$+<@$=w.$D>		$@$>3$1$2			localhost
R$-$+<@$=w.$=D>		$@$>3$1$2			other local domains
R$+<@$=S>$*		$@$1<@$2.LOCAL>$3		localhost
R$+<@$=S.$D>$*		$@$1<@$2.LOCAL>$3		localhost
R$+<@$=S.$=D>$*		$@$1<@$2.LOCAL>$4		other local domains
#
R$*<@$+>$*		$@$1<@$2>$3			already ok



############################################################
############################################################
#####
#####		RULESET ZERO PREAMBLE
#####
#####	The beginning of ruleset zero is constant through all
#####	configurations.
#####
# @(#)zerobase.m4	4.1	(ULTRIX)	7/2/90
#####
############################################################
############################################################

S9
# rerun ruleset 3 and then call 0 again
R$+			$:$>3$1
R$+			$@$>0$1

S0

# first make canonical (necessary for recursion)
#R$+			$:$>3$1				make canonical

# handle special cases.....
R@			$#local$:MAILER-DAEMON		handle <> form
R$*<@[$+]>$*		$:$1<@$[[$2]$]>$3		lookup numeric addr
R$*<@[$+]>$*		$#tcp$@[$2]$:$1@[$2]$3		numeric internet spec

# arrange for local names to be fully qualified
R$*<$*$=S>$*		$1<$2$3.LOCAL>$4		user@etherhost

# canonicalize using the nameserver if not internal domain
R$*<@$*.$~I>$*		$:$1<@$[$2.$3$]>$4
R$*<@$->$*		$:$1<@$[$2$]>$3

# now delete the local info
R$*<$*$=w.$D>$*		$1<$2>$4			thishost.thisdomain
R$*<$*$=w.$=D>$*	$1<$2>$5			thishost.localdomain
R$*<$*$=w>$*		$1<$2>$4			thishost
R$*<$*.>$*		$1<$2>$3			drop trailing dot
R<@>:$*			$@$>9$1				retry after route strip
R$*<@>			$@$>9$1				strip null trash & retry
R$*<@LOCAL>		$@$>9$1				strip null trash & retry


##################################
#  End of ruleset zero preamble  #
##################################


################################################
###  Machine dependent part of ruleset zero  ###
################################################
#
# @(#)generic.mc	4.1	(ULTRIX)	7/2/90
#
# short circuit local hosts

R$*<@$=S.UUCP>$*	$1<@$2.LOCAL>$3			uucp => local
R$*<@$=S.dnet>$*	$1<@$2.LOCAL>$3			dnet => local
R$*<@$=S.$D>$*		$:$1<@$2.LOCAL>$3		domain => local

# if we do not have dnet, send to forwarder
R$+<@$+.dnet>$*		$:$?E$1%$2.dnet<@$E.LOCAL>$3$|$1<@$2.dnet>$3$.

# forward uucp we don't know to primary forwarder
R$*<@$~Z.UUCP>$*	$:$?Z$1%$2.UUCP<@$Z.LOCAL>$3$|$1<@$2.UUCP>$3$.

# forward around hosts with communication problems
R$*<@$=F.LOCAL>$*	$1%$2.LOCAL<@$F.LOCAL>$3	reroute message

# Undo forwarding if we are forwarder
R$+%$+.$-<@$=w.LOCAL>$*	$1<@$2.$3>$5			if we are forwarder

# resolve names we can handle locally
R$*<@LOCAL>$*		$#local$:$1$2			local

# first handle local network traffic double check that we know the host
#R$*<@$~S.LOCAL>$*	$#error$:Host $2 not connected to $w via tcp
#R$*<@$->$*		$#error$:Host $2 not connected to $w via tcp
R$*<@$-.LOCAL>		$#tcplocal$@$2$:$1<@$2>		user@tcphost.LOCAL
R$*<@$-.LOCAL>$+	$#tcplocal$@$2$:$1<@$2.LOCAL>$3	user@tcphost.LOCAL

# Do umc mailings
R$*<@$+.umc>$*		$#umc$@$2$:$1<@$2>$3		user@host.umc


# Echotest mailer (for debug via mail -v echotest::user)
R$+<@echotest.dnet>	$#Echo$@echotest$:$1


# handle dnet mail
R$+<@$+.dnet>		$#Dmail$@$2$:$1			dnet user


# handle uucp traffic.  double check that we know the host
R$*<@$~Z.UUCP>$*	$#error$:Host $2 not connected to $w via uucp
R<@$+.UUCP>:$+		$1!$2				to old format
R$+<@$+.UUCP>		$2!$1				to old format
R$-!$+			$#uucp$@$1$:$2			host!...


# all other domains try for forwarder, if defined
R$*<@$+.$->$*		$:$?R$1<@$2.$3>$4<@$R>$|$1<@$2.$3>$4$.
R$*<@$+.$->$*<@$=w>	$#tcp$@$2.$3$:$1<@$2.$3>$4	we are forwarder
R$*<@$+.$->$*<@$+>	$#tcplocal$@$5$:$1<@$2.$3>$4	pass it on


# no forwarder, try for tcp connection
R$*<@$+>$*		$#tcp$@$2$:$1<@$2>$3		user@tcphost.domain


# at this point, we are trying a local name.  if we don't
# recognize it, forward to name forwarder host if defined.
#
#		############################################
#		### Optional Rules for Name Server Users ###
#		############################################
#
# For installations running one or both name servers, Yellow Pages or
# Hesiod/BIND, names defined in the Yellow Pages maps, passwd.byname and
# mail.aliases, or the Hesiod passwd and aliases databases are considered to
# be local.  If the system is not running a name server, the next two rules
# produce no effect. The next TWO rules may be commented out if you are
# running Yellow Pages or Hesiod/BIND but do not want users defined in the
# YP passwd.byname and mail.aliases maps or the Hesiod passwd and aliases
# databases to be considered as "local" to your system. That is, delivery of
# mail for those users will be attempted on the local machine.  If the rules
# are commented out, the mail will be sent to the name forwarder for resolution
# if one is defined.  If no name forwarder is defined, the mail will be
# rejected as "user unknown".
#

R${$*			$#local$:$1	if in YP or Hesiod passwd map, assume local
R$"$*			$#local$:$1	if in YP or Hesiod aliases map, assume local


R$~N			$:$?N$1<@$N.LOCAL>$|$1$.	not local, redirect
R$*<@$=w.LOCAL>$*	$1				but, there's more to it.
#							If we are the forwarder,
#							hope it is an alias.
R$*<@$*$-.LOCAL>$*	$#tcplocal$@$3$:$1<@$2$3.LOCAL>$4	let name forwarder do it

# everything else must be a local name
R$+			$#local$:$1			local names

############################################################
############################################################
#####
#####		Local and Program Mailer specification
#####
#		@(#)localm.m4	2.2	(ULTRIX)	4/12/89
#####
############################################################
############################################################

Mlocal,	P=/bin/mail, F=lsDFmn, S=10, R=10, A=mail -r $f -d $u
Mprog,	P=/bin/sh,   F=lsDFRe,   S=10, R=10, A=sh -c $u

S10
R$+<@LOCAL>		$@$1				delete LOCAL
R$+<@$-.LOCAL>		$@$1<@$2>			delete .LOCAL
R@			$@MAILER-DAEMON			errors to mailer-daemon

############################################################
############################################################
#####
#####		Mail-Plus Mailer
#####
# @(#)umc.m4	4.1	(ULTRIX)	7/2/90
#####
############################################################
############################################################

Mumc,	P=/usr/var/umc/mr_mailer, F=mnDFMeCS, S=19, R=19, A=mr_mailer -send -hop $c -from $f -to $u



############################################################
############################################################
#####
#####		Mail-11 Mailer
#####
#####		@(#)xm.m4	4.1	(ULTRIX)	7/2/90
#####
############################################################
############################################################

MDmail,	P=/usr/bin/mail11v3, F=mnSXxH, S=17, R=18, A=mail11 $f $x $h

S17
R$+			$:$>18$1			preprocess
R$Y::$+			$@$Y::$1			ready to go

S18
R$+<@$-.UUCP>		$:$2!$1				back to old style
R$+<@$-.DNET>		$:$2::$1			convert to dnet style
R$+<@$-.LOCAL>		$:$2::$1			convert to dnet style
R$+<@$=S>		$:$2::$1			convert to dnet style
R$+<@$=S.$D>		$:$2::$1			convert to dnet style
R$=S::$+		$2				strip local names
R$+::$+			$@$1::$2			already qualified



############################################################
############################################################
#####
#####		Arpanet TCP Mailer specification
#####
# @(#)tcpm.m4	4.1	(ULTRIX)	7/2/90
#####
############################################################
############################################################

Mtcp,	P=[IPC], F=mDFMueCXLR, S=14, R=14, A=IPC $h, E=\r\n
Mtcplocal,	P=[IPC], F=mDFMueCXLR, S=19, R=19, A=IPC $h, E=\r\n

S14

# pass <route-addr>'s through
R<@$+>$*		$@<@$[$1$]>$2			resolve <route-addr>

# gatewayed to/from DNET
R$+<@$-.DNET>$*		$@$1%$2.dnet<@$A>$3	user@host.DNET

# gatewayed to/from UUCP
R$+<@$-.UUCP>$*		$@$2!$1<@$A>$3		user@host.DNET

# strip local host names if we are forwarder
R$+<@$=S>		$:$1<@$2>$?R<$R>$.		add forwarder
R$+<@$=S.$D>		$:$1<@$2.$3>$?R<$R>$.
R$+<@$+.LOCAL>		$:$?R$1<@$2.LOCAL><$R>$|$1<@$2>$.

R$+<@$=S><$=w>		$:$1				strip name
R$+<@$=S.$D><$=w>	$:$1
R$+<@$+.LOCAL><$=w>	$:$1
R$+<$R>			$:$1				remove forwarder name

# tack on our name and domain
R$-			$@$1<@$A.$D>			local names
R$+<@LOCAL>		$@$1<@$A.$D>			local names
R$+<@$+.LOCAL>		$@$1<@$2.$D>			local hosts
R$+<@$=S>		$@$1<@$2.$D>			local hosts

# canonicalize
R$+<@$->		$@$1<@$[$2$]>			simple name
R$+<@[$+]>		$@$1<@[$2]>			numeric ok
R$+<@$+>		$@$1<@$[$2$]>			user@host.domain


S19
# Delete domain on local hosts.
R$+<@LOCAL>		$@$1<@$w>
R$+<@$=S>		$@$1<@$2>
R$+<@$=S.$D>		$@$1<@$2>
R$+<@$=S.LOCAL>		$@$1<@$2>
R$+<@$+.$=D>		$@$1<@$2.$3>			leave local domains
R$-			$@$1<@$A>			qualify simple name

# Do normal rewrite if all else fails.
R$+			$@$>14$1


############################################################
############################################################
#####
#####		UUCP Mailer specification
#####
#		@(#)uucpm.m4	4.1	(ULTRIX)	7/2/90
#####
############################################################
############################################################

# There are two options for the uucp mailer presented here. The only
# difference is the -r option to uux. With the -r option, uucp mail
# will be queued until some other process forces a call to be made.
# Without the -r option, a call will be attempted immediately to
# deliver this message, although the normal uucp rules about when to
# call still apply.
#
# This one just queues the message for a later uucp call.
#Muucp,	P=/usr/bin/uux, F=sDFhuU, S=13, R=23, M=100000,
#	A=uux - -r $h!rmail ($u)
#
# This one attempts a call immediately.
Muucp,	P=/usr/bin/uux, F=sDFhuU, S=13, R=23, M=100000,
	A=uux - $h!rmail ($u)
#
# This mailer lets you pretend to speak uucp to a host with which you have
# an IP/TCP connection. It uses UUCP address rewrite rules with TCP
# message transport. Hosts to be given this treatment must be identified
# by ruleset zero.
Muucptcp,	P=[IPC], F=msDFMhuX, S=13, R=23, M=100000, A=IPC $h

S13
R$+			$:$>23$1			prescan
R$U!$+			$@$U!$1				ready to go
R$+			$@$U!$1				stick on our host name

S23
R$+<@$-.UUCP>		$2!$1				old form
R$+<@$=S>		$1				strip local names
R$+<@$=S.$=D>		$1				strip local names
R$+<@$-.DNET>		$2.dnet!$1			old form
R$+<@$+>		$2!$1				old form
R$=S!$+			$2				strip local name
R$=S.$D!$+		$2				strip local name
R$=S.$=D!$+		$2				strip local name
#R$-			$U!$1				stick on our host name