########################################################################
#                                                                      #
#                                                                      #
#  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.              #
#                                                                      #
#  This configuration file was modified specifically for IBM's         #
#  SENDMAIL product for the IBM OS/2 Operating System.  Please avoid   #
#  making changes to this file, as it will change the operation of     #
#  SENDMAIL.                                                           #
#                                                                      #
#  Modified by: Ed Overly    &   Daniel Barton       @ IBM             #
#              Yorktown, NY  Research Triangle Park, NC                #
########################################################################

########################################################################
#                                                                      #
# Host name definition (YOU MUST DEFINE THESE)                         #
#                                                                      #
# Define macro for your host name for all return addresses.            #
# Define class to recognize all aliases of your host name.             #
#                                                                      #
# The domain will be added to this name!!! -mjz                        # 
#                                                                      #
#DwYourHostName                                                        #
#CwYourHostName YourHostAliases                                        #
########################################################################

# My host name
Dwadeptbbs
Cwadeptbbs


########################################################################
#                                                                      #
# Local domain name. (DEFINE THIS IF DOMAINS ARE USED)                 #
# **WARNING**                                                          #
# When domain names are used, SMTP transactions utilize the            #
# full domain (official) name of the host. All host names with         #
# no domains (abbreviated) are expanded with the local domain          #
# by the mail service. This is consistent with Internet text standards.#
# All hosts sending or RECEIVING mail must recognize their official    #
# host names. When using domains enter the official host name in       #
# /etc/hosts and be certain that all network nameservers recognize     #
# official host names.                                                 #
#                                                                      #
# Define the D macro to be the whole domain for the local host.        #
# This configuration file supports four part domains. It can be        #
# expanded to support n part domains.                                  #
#                                                                      #
#DDgrandchild.child.parent.top                                         #
########################################################################

# My domain name
DDhsonline.net

########################################################################
#                                                                      #
# Host name for UUCP handling (YOU MAY OPTIONALLY DEFINE THIS)         #
#                                                                      #
# Optionally define macro specifying name of host to which you want    #
# to relay all UUCP traffic.  This would be a host on the network      #
# with modems.  You do not have to define this to use UUCP.            #
#                                                                      #
# Defining this macro eliminates the requirement for you to explicitly #
# reference the relaying host in your UUCP route addresses.  For       #
# instance, if the host with modems is called "cat", you normally      #
# would have to specify a UUCP address as "cat!route_path".  If you    #
# define macro "DUcat", then you only need specify "route_path".       #
#                                                                      #
#DUHostWithModems                                                      #
#                                                                      #
########################################################################

# my official host name (includes host name and domain name)
Dj$w$?D.$D$.


#####################################################
#   Version Number   (YOU MAY CHANGE THIS AS NEEDED)#
#####################################################
DZ1.0


######################
#   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
OAc:\tcpip\etc\aliases

# substitution for space (blank) characters
OB.

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

# default delivery mode
Odbackground

# location of help file
OHc:\tcpip\etc\sendmail.hf

# Queue directory - specify directory containing log file
OQc:\tcpip\etc\mqueue

# default messages to old style
Oo

# status file
OSc:\tcpip\etc\sendmail.st

# queue up everything before starting transmission
Os

# load average at which we refuse connections
#OX

# work recipient factor
#Oy

# work msg class factor
#Oz

# work time factor
#OZ


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

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


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

#  This parameter is not used by OS/2 Sendmail. 
Tdaemon


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


########################################################################
#                                                                      #
#  The Complete Specification of Canonical Syntax is:                  #
#                                                                      #
#   <ahost>       ::= /* ARPA type host name */                        #
#   <uhost>       ::= /* UUCP type host name */                        #
#   <user>        ::= /* target user name */                           #
#                                                                      #
#   <route_node>  ::= @<ahost>: | <uhost>!                             #   
#   <route_path>  ::= <NULL> | <route_node> | <route_path><route_node> #
#   <target>      ::= <user> | <user>@<ahost>                          #
#                                                                      #
#   <address>     ::= <route_path><target>                             #
#                                                                      #
#  This is what we handle, but actually we only look at the minimum    #
#  required to pass the mail on.  Intermediaries with other syntax/    #
#  semantics may be used, provided the addressing is compatible with   #
#  them when the mail arrives there.                                   #
#                                                                      #
########################################################################


########################################################################
#                                                                      #
#                  THE DYNAMIC MACROS $f AND $g                        #
#                                                                      #
#  Macro $f is defined by the sender address as known the current      #
#  host, via the ruleset sequence:  3, 1, 4.                           #
#                                                                      #
#  Macro $g is defined at delivery time for each separate mailer via   #
#  the ruleset sequence:  3, 1, mailer-S, 4.                           #
#                                                                      #
#  The SMTP "MAIL FROM" address will be $g.                            #
#                                                                      #
#  $g is included in many headers and will be expanded if the header   #
#  is newly created by sendmail.                                       #
#                                                                      #
########################################################################


########################################################################
#                                                                      #
#                         THE SMTP INTERFACE                           #
#                                                                      #
#  The SMTP "MAIL FROM" address will be $g.                            #
#                                                                      #
#  The SMTP "RCPT TO" addresses will be computed from the recipient    #
#  addresses in sendmail by applying the same ruleset sequence as for  #
#  "to" headers:  namely, rulesets 3, 2, mailer-R, 4                   #
#                                                                      #
########################################################################


########################################################################
#                                                                      #
#  S1:  Sender Field Pre-rewriting                                     #
#                                                                      #
#  This ruleset is used when defining the $f macro.  In this case it   #
#  is applied after S3 and before S4.                                  #
#                                                                      #
#  This ruleset is applied to all sender type headers after S3 and     #
#  before the mailer specific sender (S) rewrite rules.                #
#  This ruleset is also applied to $f to create $g.                    #
#                                                                      #
########################################################################
S1


########################################################################
#                                                                      #
#  S2:  Recipient Field Pre-rewriting                                  #
#                                                                      #
#  This ruleset is applied to the user part of the 3-tuple output from #
#  S0.  It is followed by application of the mailer specific recipient #
#  [R] rewrite rules.                                                  #
#                                                                      #
#  This ruleset is applied to all recipient type headers after S3 and  #
#  before the mailer specific recipient (R) rewrite rules.             #
#  This ruleset is likewise used to reform the "to" address for SMTP.  #
#                                                                      #
########################################################################
S2


########################################################################
#                                                                      #
#  S4:  Final Output Post-rewriting   (Return to standard form)        #
#                                                                      #
#  This ruleset is applied to the user part of the 3-tuple produced    #
#  from ruleset 0.  It is applied after the mailer specific recipient  #
#  [R] rules.                                                          #
#                                                                      #
#  This ruleset is applied after S1 when defining the $f macro.        #
#  This ruleset is applied last when creating the $g macro from $f.    #
#                                                                      #
#  This ruleset is applied to all headers after the mailer specific    #
#  rewrite rules (whether recipient or sender) have been applied.      #
#  This ruleset is applied last when computing the RCPT TO address for #
#  SMTP.                                                               #
#                                                                      #
########################################################################
S4

#
#  Change LOCAL or LOCAL.D to the real name.
#
R$*<@LOCAL>$*		$:$1<@$w>$2
R$*<@LOCAL.D>$*		$:$1<@$w$?D.$D$.>$2
R$*<@$-.LOCAL>$*	$:$1<@$2$?D.$D$.>$3

R$*<LOCAL>$*		$:$1<$w>$2
R$*<LOCAL.D>$*		$:$1<$w$?D.$D$.>$2
R$*<$-.LOCAL>$*		$:$1<$2$?D.$D$.>$3

#
#  Remove focus brackets.
#
R$*<$+>$*		$1$2$3


########################################################################
#                                                                      #
#  S3:  Address Canonicalization  (Internal rewriting form)            #
#                                                                      #
#  This ruleset turns an address in external format into a format      #
#  which simplifies internal rewriting.  The inverse ruleset is S4.    #
#  This ruleset is applied first to any external address before other  #
#  rewriting is done.                                                  #
#                                                                      #
#  This concept of canonicalization is to be distinguished from usage  #
#  of the nameserver in the $[/$] construct inside the RHS of rewrite  #
#  rules.  This is also sometimes called "canonicalization", but has   #
#  to do not with the syntax of the address but with obtaining the     #
#  correct domain name for the address.                                #
#                                                                      #
#  No stripping of local domains is done for route addresses:          #
#  Rulesets which require this must do it themselves by iteratively    #
#  stripping LOCAL or LOCAL.D and recalling this ruleset to            #
#  canonicalize the next host.item.                                    #
#                                                                      #
#  The term "localization" refers to determining whether the next host #
#  item is really a reference to the current host.  Localization       #
#  assumes that local UUCP host names are in class w.  This is not     #
#  strictly a necessary restriction, but it simplifies the network     #
#  concept and also makes for simpler rewrite rules.  This ruleset     #
#  replaces explicit instances of local host with the internally       #
#  recognized tag "LOCAL" or "LOCAL.D".                                #
#                                                                      #
#  Addresses which do not specify a host name for routing or domain    #
#  will NOT have any reference to the local host appended in any way.  #
#                                                                      #
########################################################################
S3

#
#  Basic textual canonicalization -- note RFC733 heuristic here.
#  This strips off everything but the innermost list between <>'s.
#  Some addresses are of the format: Full Name <address>
#
R$*<$*<$*<$+>$*>$*>$*	$4		3-level <> nesting
R$*<$*<$+>$*>$*		$3		2-level <> nesting
R$*<$+>$*		$2		basic RFC821/822 parsing

#
#  Turn an "at" token into "@".
#
#  The I macro specifies space or some equivalent char defined by the OI
#  config option above.
#
R$+ at $+		$:$1@$2		"at" -> "@" for RFC 822

#  Change a%b to a@b. This implies that we support a%b%c... as a route
#  based address from right to left.
#  This form of addressing should go away as full domains are supported.
#
R$+%$-			$1@$2

#  ====> NOTE <====
#  This configuration file always evaluates mix mode addresses from
#  left to right. No precedence between @ and ! is assumed. The
#  address a!b@c will resolve to the uucp mailer for the remote host
#  'a'. This permits the resolution of very complex route based
#  addresses such as; @a:@b:c!d!user, a!@b:c!user, a!@b.uucp:user@c.
#  Return addresses on mail to/from AIX level 4 machines are also
#  correct. If you wish the address a!b@c to resolve to the TCP
#  mailer for the remote host 'c' then uncomment the following rewrite
#  rule. This approach is compatible with older versions of sendmail.

#  Change a!b@c to @c:a!b
#R$-!$-@$+		@$3:$1!$2

#
#  Change commas to colons for route addresses.
#
R$+,$+			$1:$2

#
#  Pick out route addresses.  Focus and call localizer.
#
R@$+:$+			$@$>9<@$1>:$2		handle <route-addr>
R$-!$+			$@$>8<$1>!$2		UUCP route

#  Detect domain!user. Internally convert to user@domain (RFC976).
#  Rule set 8 will detect local addresses and strip any trailing
#  periods.
R$-.$*!$+				$@$>8<$1.$2>!$3

#
#  Detect local domain for nonroute addresses.  Focus and localize.
# 
R$+@$+			$:$1<@$2>
R$+<@$=w.$D>		$@$1<@LOCAL.D>
R$+<@$=w>		$@$1<@LOCAL>
R$+<@$=w.UUCP>		$@$1<@LOCAL>

#
#  Anything else is left as-is!  This includes simple names.
#  They will NOT have an appended domain.
#  This is so the $f macro definition will be the sender address
#  as known locally.
#


########################################################################
#                                                                      #
#  S9:	Localize ARPA type route path.                                 #
#                                                                      #
#  This is used only by S3.                                            #
#                                                                      #
########################################################################
S9

R<@$=w.$D>:$*			$@<@LOCAL.D>:$2
R<@$=w>:$*			$@<@LOCAL>:$2
R<@$=w.UUCP>:$*			$@<@LOCAL>:$2


########################################################################
#                                                                      #
# S8:  Localize UUCP route path.  This is used only by S3.             #
#                                                                      #
########################################################################
#S8

#R<$=w.$D>!$+			$@<LOCAL.D>!$2
#R<$=w>!$+			$@<LOCAL>!$2
# We have a non-local domain. Change to user@domain for resolution.
#R<$-.$+>!$+			$@<@$1.$2>:$3
#R<$+.>!$+			$@<@$1>:$2

########################################################################
#                                                                      #
#                              MAILERS                                 #
#                                                                      #
########################################################################


########################################################################
#                                                                      #
#               Local and Program Mailer specification                 #
#                                                                      #
########################################################################

#Mlocal, P=c:\etc\mail.exe, F=lsDFMP,  S=10, R=20, A=c:\etc\mail $u
Mlocal, P=c:\smtp\SMTP2ADEPT.exe, F=lsDFMP,  S=10, R=20, A=c:\tcpip\etc\mail $u
Mprog,  P=/bin/sh,         F=lsDFM,   S=10, R=20, A=sh -c $u


########################################################################
#                                                                      #
#  S10:  Local/Prog Mailers Sender rules                               #
#                                                                      #
########################################################################
S10

########################################################################
#                                                                      #
#  S20:  Local/Prog Mailers Recipient rules                            #
#                                                                      #
########################################################################
S20


########################################################################
#                                                                      #
#                     UUCP Mailer Specification                        #
#                                                                      #
########################################################################

#Muucp,	P=/usr/bin/uux, F=DFMhuU, S=13, R=23, M=100000,
#	A=uux - -r -n -a$f -gC $h!rmail ($u)


########################################################################
#                                                                      #
#                      TCP Mailer Specification                        #
#                                                                      #
########################################################################

Mtcp,	 P=[IPC], F=mDFMueXL,  S=14, R=24, A=IPC $h


########################################################################
#                                                                      #
#  S14:  TCP Mailer Sender Rules                                       #
#                                                                      #
#  This ruleset is applied in the following circumstances:             #
#                                                                      #
#  1)  To process sender type headers.  These have header names:       #
#                                                                      #
#       "resent-sender"                                                #
#       "resent-from"                                                  #
#       "resent-reply-to"                                              #
#       "sender"                                                       #
#       "from"                                                         #
#       "reply-to"                                                     #
#       "return-receipt-to"                                            #
#       "errors-to"                                                    #
#                                                                      #
#  2)  To define the $g macro from the $f macro.                       #
#                                                                      #
#  In either case, it is applied after ruleset 1, and is followed by   #
#  ruleset 4.                                                          #
#                                                                      #
#  Watch out if one of those headers is newly created and includes the #
#  expanded $g macro!  This ruleset will have been used to create $g,  #
#  and will then be applied to the result of the expansion of $g.      #
#  This ruleset must handle this!                                      #
#                                                                      #
#  The $g macro is used in many places.                                #
#                                                                      #
########################################################################
S14

#
#  We have just canonicalized a From: address or the $f macro.  Remove
#  any instances of local host from route addresses.  This also works
#  to take care of the instance of a newly expanded $g in a new
#  From: line.
#
R<$*LOCAL$*>$-$+	$>3$4

#
#  Prepend our domain to route based paths that come through.
#
R<$+>$+			$@<@LOCAL.D>:$1$2

#
#  Fully qualify our domain.
#
R$+<@LOCAL>		$@$1<@LOCAL.D>

#
#  Fully qualify other hosts in our local domain.
#
R$+<@$->		$@$1<@$2.LOCAL>

#
#  Leave all other typical domain addresses alone.
#
R$+<$+>			$@$1<$2>

#
#  Append full local domain where none exists at all.
#
R$+			$@$1<@LOCAL.D>


########################################################################
#                                                                      #
#  S24:  TCP Mailer Recipient rules                                    #
#                                                                      #
#  This ruleset is applied in the following cases:                     #
#                                                                      #
#  1)  To process recipient type headers being sent out through this   #
#      mailer.  These headers are the ones with header names:          #
#                                                                      #
#       "to"                                                           #
#       "resent-to"                                                    #
#       "cc"                                                           #
#       "resent-cc"                                                    #
#       "bcc"                                                          #
#       "resent-bcc"                                                   #
#                                                                      #
#     but NOT:                                                         #
#                                                                      #
#       "Apparently-to"                                                #
#                                                                      #
#  2)  To process the user part of the 3-tuple from S0 which resolves  #
#      to this mailer.  This is the complete "to" address for ordinary #
#      tcp usage, or is the original UUCP path if we are relaying      #
#      using DU.                                                       #
#                                                                      #
#  3)  To process the "to" address to form the SMTP RCPT TO address.   #
#                                                                      #
#  In all cases, this ruleset is applied after ruleset 2, and is       #
#  followed by ruleset 4.                                              #
#                                                                      #
#  Remember that this ruleset applies to all "to" type headers in the  #
#  mail transmitted via this mailer.  This does not include            #
#  "Apparently-to:" headers.  Not all "To:" headers point to the       #
#  current mail target!  For instance, if the mail originated on this  #
#  host and some targets were local, there may be local "To:" headers  #
#  that must be processed by this ruleset!  The idea here is to make   #
#  sure that the headers will be properly understood in the context of #
#  the next host to which the mail will go.                            #
#                                                                      #
########################################################################
S24

#
#  Leave route based addresses alone.  They are already completely intelligible
#  in any context.
#
R<$+>$+			$@<$1>$2

#
#  Fully qualify our host name with full domain.
#
R$+<@LOCAL>		$@$1<@LOCAL.D>

#
#  Fully qualify nonlocal host names in our local domain.
#
R$+<@$->		$@$1<@$2.LOCAL>

#
#  Leave all other typical domain addresses alone.
#
R$+<$+>			$@$1<$2>

#
#  Append full local domain where none exists at all.  This handles the
#  case of local targets whose (missing) host would cause misunderstanding
#  in the next host.
#
R$+			$@$1<@LOCAL.D>


########################################################################
#                                                                      #
#      Rule Zero                                                       #
#                                                                      #
#  Resolve sender or recipient address to mailer/host/user 3-tuple.    #
#  This may require iteration in use of S3 to strip leading route      #
#  items which pertain to the current host.                            #
#                                                                      #
#  Sendmail will pass the user portion of the 3-tuple through ruleset  #
#  2 + the mailer specific recipient ruleset + ruleset 4.              #
#                                                                      #
########################################################################
S0

#
#  Handle route addresses that begin with LOCAL or LOCAL.D
#
R<$*LOCAL$*>$-$+	$>3$4

#  Change a%b<$*> to <$*>:a@b.
#  This form of addressing should go away as full domains are supported.
#
R$+%$-<$*>		<$3>:$1@$2
#
#  Handle explicit local delivery.
#
#  The entire prefix is treated as local user.
R$+<@LOCAL$*>		$#local$:$1

#
#  Resolve UUCP to local uucp mailer or remote one via tcp.
#  For tcp relay, user is full uucp route.  For uucp mailer, user is
#  the uucp route as seen from the next host.
#  UUCP host names are not passed through the nameserver canonicalizer.
#
#R$+<@$-.UUCP>		 $?U$#tcp$@$U$:$1<@$2.UUCP>$|$#uucp$@$2$:<$1>$.
#R<@$-.UUCP>:$+		 $?U$#tcp$@$U$:<@$1.UUCP>:$2$|$#uucp$@$1$:<$2>$.
#R<$->!$+		 $?U$#tcp$@$U$:<$1>!$2$|$#uucp$@$1$:<$2>$.

#
#  Canonicalize anything else which has an @focus.  This excludes simple
#  names, which are local.
#
R$*<@$+>$*		$:$1<@$[$2$]>$3

#
#  Send domain address to tcp.  This includes domain literals [IP quads].
#  User is full focused path.
#
R$*<@$+>$*		$#tcp$@$2$:$1<@$2>$3

#
#  Remaining names must be local.
#  User is whatever is left.
#
R$+			$#local$:$1
