Mail problems with Solaris9 and Majordomo1.94.5

From: Kirkland, Mike # IHTUL (mike.kirkland@ndchealth.com)
Date: Mon Apr 28 2003 - 18:57:27 EDT


Hi Everyone,

I am setting up a list server on a Sunfire V120. It is running Solaris9 with
the latest patchkit. It has sendmail 8.12.9+Sun/8.12.2 and is loaded with
Majordomo1.94.5. I am having problems sending requests for lists usage to
the server named larry.tns.ndchealth.com

The majordomo userid is majord.

I can send a mail message from the server to any valid email user at the
tulsa.cistech.com domain, but it errors out when I try to send it to a user
in the ndchealth.com domain.

Attached is files that gives more specific information. Any help on how to
resolve this is appreciated.

I have modified the names of the files so they are windows readable.

/etc/mail/aliases = aliases_dos.txt
/etc/mail/majordomo.aliases = majordomo_aliases_dos.txt
/etc/mail/sendmail.cf = /etc/mail/sendmail_cf_dos.txt
/opt/local/majordomo/lists/test = test_dos.txt
/opt/local/majordomo/lists/test.allow = test_allow_dos.txt
/opt/local/majordomo/lists/test.config = test_config_dos.txt

Sendmail_error_dos.txt contains the mail errors.
Nslookup2_larry_dos.txt contains the nslookup of mx type for us.
Mj1945_mail_errors2_dos.txt is the mail errors that majord receives when
someone trys to subscribe to the majordomo list named test.

Thanks,

Mike

This E-Mail message is for the sole use of the intended recipient(s) and may
contain confidential and privileged information. Any unauthorized review,
use, disclosure or distribution is prohibited. If you are not the intended
recipient, please contact the sender by reply E-Mail, and destroy all copies
of the original message.
# Copyright (c) 1983-2001 by Sun Microsystems, Inc.
# All rights reserved.
#
#ident "@(#)aliases 1.14 01/08/27 SMI"

##
# Aliases can have any mix of upper and lower case on the left-hand side,
# but the right-hand side should be proper case (usually lower)
#
# >>>>>>>>>> The program "newaliases" must be run after
# >> NOTE >> this file is updated for any changes to
# >>>>>>>>>> show through to sendmail.
##

# The following alias is required by the mail protocol, RFC 2821
# Set it to the address of a HUMAN who deals with this system's mail problems.
postmaster: root

# Alias for mailer daemon; returned messages from our MAILER-DAEMON
# should be routed to our local Postmaster.
MAILER-DAEMON: postmaster

# General redirections for pseudo accounts.
bin: root
daemon: root
system: root
toor: root
uucp: root

# Well-known aliases.
manager: root
dumper: root
operator: root

# trap decode to catch security attacks
decode: root

# Aliases to handle mail to programs or files, eg news or vacation
nobody: /dev/null

# Sample aliases:

# Alias for distribution list, members specified here:
#staff:wnj,mosher,sam,ecc,mckusick,sklower,olson,rwh@ernie

# Alias for distribution list, members specified elsewhere:
#keyboards: :include:/usr/jfarrell/keyboards.list

# Alias for a person, so they can receive mail by several names:
#epa:eric

#######################
# Local aliases below #
#######################
#
# Internet host table
#
127.0.0.1 localhost
192.168.105.33 larry larry.tns.ndchealth.com loghost
198.200.166.25 mailhost.tns.ndchealth.com
majordomo: "|/opt/local/majordomo-1.94.5/wrapper majordomo"
owner-majordomo: majord
majordomo-owner: owner-majord
#owner-majordomo: majord,nobody
#majordomo: owner-majord
#Majordomo-Owner: owner-majord
#nobody: /dev/null

test: "|/opt/local/majordomo-1.94.5/wrapper resend -l test test-list"
test-list: :include:/opt/local/majordomo-1.94.5/lists/test
owner-test: mike.kirkland@tulsa.cistech.com
test-owner: mike.kirkland@tulsa.cistech.com
test-request: mike.kirkland@tulsa.cistech.com
test-approval: mike.kirkland@tulsa.cistech.com
>From root@larry.tns.ndchealth.com Tue Apr 22 09:57:00 2003
Date: Tue, 22 Apr 2003 09:56:59 -0500 (CDT)
From: Super-User <root@larry.tns.ndchealth.com>
Message-Id: <200304221456.h3MEuxAt010934@larry.tns.ndchealth.com>
Content-Length: 7

lists

?
>From MAILER-DAEMON Tue Apr 22 09:06:26 2003
Message-ID: <4242F92CA015D5119B9600600834014206A05C55@claven.cistech.com>
From: postmaster@ms.ndcorp.com
To: majord@larry.tns.ndchealth.com
Subject: Undeliverable: Majordomo Registration
Date: Tue, 22 Apr 2003 09:42:12 -0400
Content-Length: 1453

This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01C308D4.FA4264D0
Content-Type: text/plain

Your message

  To: majordomo-registration@greatcircle.com;
majord@larry.tns.ndchealth.com
  Subject: Majordomo Registration
  Sent: Tue, 22 Apr 2003 10:06:14 -0400

did not reach the following recipient(s):

c=US;a= ;p=National Data
Co;o=ihtulsa;dda:SMTP=majordomo-registration@greatcircle.com; on Tue, 22 Apr
2003 10:05:45 -0400
    The recipient name is not recognized
        The MTS-ID of the original message is: c=us;a= ;p=national data
co;l=CLAVEN0304221405GNXHBPVG
    MSEXCH:IMS:National Data Corporation:ihtulsa:CLAVEN 0 (000C05A6) Unknown
Recipient

------_=_NextPart_000_01C308D4.FA4264D0
Content-Type: message/rfc822

Message-ID: <200304221406.h3ME6Ea8010440@larry.tns.ndchealth.com>
From: majord@larry.tns.ndchealth.com
Reply-To: majord@larry.tns.ndchealth.com
To: majordomo-registration@greatcircle.com, majord@larry.tns.ndchealth.com
Subject: Majordomo Registration
Date: Tue, 22 Apr 2003 10:06:14 -0400
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2650.21)
X-MS-Embedded-Report:
Content-Type: text/plain

--
Majordomo Version: 1.94.5
Perl version 5.006001
Majordomo Owner:  majord@larry.tns.ndchealth.com
Uname: SunOS larry 5.9 Generic_112233-04 sun4u sparc SUNW,UltraAX-i2
------_=_NextPart_000_01C308D4.FA4264D0--
?
>From majord@larry.tns.ndchealth.com Tue Apr 22 09:06:14 2003
Date: Tue, 22 Apr 2003 09:06:14 -0500 (CDT)
From: majordomo - larry <majord@larry.tns.ndchealth.com>
Message-Id: <200304221406.h3ME6Ea8010440@larry.tns.ndchealth.com>
To: majordomo-registration@greatcircle.com, majord@larry.tns.ndchealth.com
Subject: Majordomo Registration
Content-Length: 170
--
Majordomo Version: 1.94.5
Perl version 5.006001
Majordomo Owner:  majord@larry.tns.ndchealth.com
Uname: SunOS larry 5.9 Generic_112233-04 sun4u sparc SUNW,UltraAX-i2
?
$
$
$ mail
>From MAILER-DAEMON Tue Apr 22 13:41:06 2003
Message-ID: <4242F92CA015D5119B9600600834014206A08F62@claven.cistech.com>
From: postmaster@ms.ndcorp.com
To: majord@larry.tns.ndchealth.com
Subject: Undeliverable: Majordomo results
Date: Tue, 22 Apr 2003 14:16:51 -0400
Content-Length: 10728
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
------_=_NextPart_000_01C308FB.58A60196
Content-Type: text/plain
Your message
  To:      mike.kirkland@ndchealth.com
  Subject: Majordomo results
  Sent:    Tue, 22 Apr 2003 14:40:48 -0400
did not reach the following recipient(s):
c=US;a= ;p=National Data Co;o=ihtulsa;dda:SMTP=mike.kirkland@ndchealth.com;
on Tue, 22 Apr 2003 14:40:18 -0400
    The recipient name is not recognized
        The MTS-ID of the original message is: c=us;a= ;p=national data
co;l=CLAVEN0304221840GNXHBSSH
    MSEXCH:IMS:National Data Corporation:ihtulsa:CLAVEN 0 (000C05A6) Unknown
Recipient
------_=_NextPart_000_01C308FB.58A60196
Content-Type: message/rfc822
Message-ID: <200304221840.h3MIem19011138@larry.tns.ndchealth.com>
From: majord@larry.tns.ndchealth.com
Reply-To: majord@larry.tns.ndchealth.com
To: mike.kirkland@ndchealth.com
Subject: Majordomo results
Date: Tue, 22 Apr 2003 14:40:48 -0400
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2650.21)
X-MS-Embedded-Report:
Content-Type: text/plain
--
>>>> lists
majord@larry.tns.ndchealth.com serves the following lists:
  test
Use the 'info <list>' command to get more information
about a specific list.
>>>> This E-Mail message is for the sole use of the intended recipient(s)
and may
**** Command 'this' not recognized.
>>>> contain confidential and privileged information. Any unauthorized
review,
**** Command 'contain' not recognized.
>>>> use, disclosure or distribution is prohibited. If you are not the
intended
**** Command 'use,' not recognized.
>>>> recipient, please contact the sender by reply E-Mail, and destroy all
copies
**** Command 'recipient,' not recognized.
>>>> of the original message.
**** Command 'of' not recognized.
**** Help for majord@larry.tns.ndchealth.com:
This help message is being sent to you from the Majordomo mailing list
management system at majord@larry.tns.ndchealth.com.
This is version 1.94.5 of Majordomo.
If you're familiar with mail servers, an advanced user's summary of
Majordomo's commands appears at the end of this message.
Majordomo is an automated system which allows users to subscribe
and unsubscribe to mailing lists, and to retrieve files from list
archives.
You can interact with the Majordomo software by sending it commands
in the body of mail messages addressed to "majord@larry.tns.ndchealth.com".
Please do not put your commands on the subject line; Majordomo does
not process commands in the subject line.
You may put multiple Majordomo commands in the same mail message.
Put each command on a line by itself.
If you use a "signature block" at the end of your mail, Majordomo may
mistakenly believe each line of your message is a command; you will
then receive spurious error messages.  To keep this from happening,
either put a line starting with a hyphen ("-") before your signature,
or put a line with just the word
        end
on it in the same place.  This will stop the Majordomo software from
processing your signature as bad commands.
Here are some of the things you can do using Majordomo:
I.      FINDING OUT WHICH LISTS ARE ON THIS SYSTEM
To get a list of publicly-available mailing lists on this system, put the
following line in the body of your mail message to
majord@larry.tns.ndchealth.com:
        lists
Each line will contain the name of a mailing list and a brief description
of the list.
... blah, blah, blah the reminder of the lists request comments
Commands should be sent in the body of an email message to
"majord@larry.tns.ndchealth.com". Multiple commands can be processed
provided
each occurs on a separate line.
Commands in the "Subject:" line are NOT processed.
If you have any questions or problems, please contact
"majord@larry.tns.ndchealth.com".
------_=_NextPart_000_01C308FB.58A60196--
? pwd
>From MAILER-DAEMON Tue Apr 22 13:41:06 2003
Message-ID: <4242F92CA015D5119B9600600834014206A08F62@claven.cistech.com>
From: postmaster@ms.ndcorp.com
To: majord@larry.tns.ndchealth.com
Subject: Undeliverable: Majordomo results
Date: Tue, 22 Apr 2003 14:16:51 -0400
Content-Length: 10728
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
?
>From mike.kirkland@ndchealth.com Tue Apr 22 13:39:48 2003
Message-ID: <4242F92CA015D5119B9600600834014241A926@claven.cistech.com>
From: "Kirkland, Mike # IHTUL" <mike.kirkland@ndchealth.com>
To: "'majord@larry.tns.ndchealth.com'" <majord@larry.tns.ndchealth.com>
Subject:
Date: Tue, 22 Apr 2003 13:39:07 -0500
Content-Length: 334
lists
This E-Mail message is for the sole use of the intended recipient(s) and may
contain confidential and privileged information. Any unauthorized review,
use, disclosure or distribution is prohibited. If you are not the intended
recipient, please contact the sender by reply E-Mail, and destroy all copies
of the original message.
? q
$ exit
you have mail
larry # su - kirklmi
Sun Microsystems Inc.   SunOS 5.9       Generic May 2002
$ id
uid=2002(kirklmi) gid=10(staff)
$ exit
larry # su - kirklmi
Sun Microsystems Inc.   SunOS 5.9       Generic May 2002
$ cd /opt/local/maj*1*
$ pwd
/opt/local/majordomo-1.94.5
$ ./wrapper config-test
------------------------------------------------------------
---------------- Config-test for Majordomo ----------------
------------------------------------------------------------
--------------------- Obvious things: ---------------------
------------------ environment variables ------------------
   HOME=/opt/local/majordomo-1.94.5
   LOGNAME=kirklmi
   MAJORDOMO_CF=/opt/local/majordomo-1.94.5/majordomo.cf
   PATH=/bin:/usr/bin:/usr/ucb
   SHELL=/bin/sh
   TZ=US/Central
--------------------- euid/egid checks ---------------------
   effective user  = majord (uid 2200)
   effective group = daemon sysadmin staff (gid 12 14 10 )
---------------------- uid/gid checks ----------------------
   real      user  = majord (uid 2200)
   real      group = daemon sysadmin staff (gid 12 14 10 )
------------------------------------------------------------
        Non obvious things that cause headaches:
------------------------------------------------------------
Good: 'require'd /opt/local/majordomo-1.94.5/majordomo.cf okay.
Good: found ctime.pl okay.
Good: found majordomo_version.pl okay.
Good: found majordomo.pl okay.
Good: found shlock.pl okay.
Good: found config_parse.pl okay.
You're running Majordomo Version 1.94.5.
--==> Majordomo home directory is /opt/local/majordomo-1.94.5.
------------------- Include directories -------------------
        /opt/local/majordomo-1.94.5
        /usr/perl5/5.6.1/lib/sun4-solaris-64int
        /usr/perl5/5.6.1/lib
        /usr/perl5/site_perl/5.6.1/sun4-solaris-64int
        /usr/perl5/site_perl/5.6.1
        /usr/perl5/site_perl
        /usr/perl5/vendor_perl/5.6.1/sun4-solaris-64int
        /usr/perl5/vendor_perl/5.6.1
        /usr/perl5/vendor_perl
        .
--------------------------- Home ---------------------------
Good: changedir to /opt/local/majordomo-1.94.5 succeeded.
Good: Created a mock lock file.
---------------------- temp directory ----------------------
Good: Created a temp file in $TMPDIR (/usr/tmp).
---------------------- list directory ----------------------
Good: list directory /opt/local/majordomo-1.94.5/lists has good permissions.
--------------------------- log ---------------------------
Good: logfile /opt/local/majordomo-1.94.5/Log exists and is writeable.
------------------------- Mailers -------------------------
You have defined a mailer for delivery.
Attempting to verify that this is a valid mailer...looks okay.
You have defined a mailer for delivering administrative messages.
Attempting to verify that this is a valid mailer...looks okay.
------------------ Checking majordomo.cf ------------------
Checking to see if there are new variables that should be in
your majordomo.cf file...Nope, none that I see.
Have you configured where Majordomo is?
        $whereami is larry.tns.ndchealth.com
Good: yup!
----------------------- end of tests -----------------------
Nothing bad found!  Majordomo _should_ work correctly.
If it doesn't, check your configuration file
        (/opt/local/majordomo-1.94.5/majordomo.cf)
closely, and if it still looks okay, consider asking the majordomo-users
mailing list at "majordomo-users@greatcircle.com" for assistance.  Be sure
and fully specify what your problems are, and what type of machine (and
operating system) you are using.
Enjoy!
$ exit
larry #
larry # nslookup
Default Server:  dns1.cistech.com
Address:  198.200.166.13
> set type=mx
> tulsa.cistech.com
Server:  dns1.cistech.com
Address:  198.200.166.13
tulsa.cistech.com       preference = 20, mail exchanger = claven.cistech.com
cistech.com     nameserver = dns1.cistech.com
claven.cistech.com      internet address = 198.200.166.25
dns1.cistech.com        internet address = 198.200.166.13
> cistech.com
Server:  dns1.cistech.com
Address:  198.200.166.13
cistech.com     preference = 20, mail exchanger = claven.cistech.com
cistech.com     nameserver = dns1.cistech.com
claven.cistech.com      internet address = 198.200.166.25
dns1.cistech.com        internet address = 198.200.166.13
> tns.ndchealth.com
Server:  dns1.cistech.com
Address:  198.200.166.13
tns.ndchealth.com       preference = 20, mail exchanger = ns.cistech.com
tns.ndchealth.com       nameserver = dns1.cistech.com
ns.cistech.com  internet address = 198.200.166.38
dns1.cistech.com        internet address = 198.200.166.13
> ndchealth.com
Server:  dns1.cistech.com
Address:  198.200.166.13
Non-authoritative answer:
ndchealth.com   preference = 10, mail exchanger = smtp2.ndchealth.com
ndchealth.com   preference = 20, mail exchanger = smtp1.ndchealth.com
Authoritative answers can be found from:
ndchealth.com   nameserver = css1.ndcorp.com
ndchealth.com   nameserver = css2.ndcorp.com
ndchealth.com   nameserver = css.ndcorp.com
smtp2.ndchealth.com     internet address = 192.168.245.51
smtp1.ndchealth.com     internet address = 192.168.245.50
css.ndcorp.com  internet address = 206.227.197.5
css1.ndcorp.com internet address = 206.227.197.3
css2.ndcorp.com internet address = 206.227.197.4
> exit
larry # 
mike.kirkland@tulsa.cistech.com
# The configuration file for a majordomo mailing list.
# Comments start with the first # on a line, and continue to the end
# of the line. There is no way to escape the # character. The file
# uses either a key = value for simple (i.e. a single) values, or uses
# a here document
#     key << END
#     value 1
#     value 2
#     [ more values 1 per line]
#     END
# for installing multiple values in array types. Note that the here
# document delimiter (END in the example above) must be the same at the end
# of the list of entries as it is after the << characters.
# Within a here document, the # sign is NOT a comment character.
# A blank line is allowed only as the last line in the here document.
#
# The values can have multiple forms:
#
#	absolute_dir -- A root anchored (i.e begins with a /) directory
#	absolute_file -- A root anchored (i.e begins with a /) file
#	bool -- choose from: yes, no, y, n
#	enum -- One of a list of possible values
#	integer -- an integer (string made up of the digits 0-9,
#		   no decimal point)
#	float -- a floating point number with decimal point.
#	regexp -- A perl style regular expression with
# 		  leading and trailing /'s.
#	restrict_post -- a series of space or : separated file names in which
#                        to look up the senders address
#	            (restrict-post should go away to be replaced by an
#		     array of files)
#	string -- any text up until a \n stripped of
#		  leading and trailing whitespace
#	word -- any text with no embedded whitespace
#
# A blank value is also accepted, and will undefine the corresponding
keyword.
# The character Control-A may not be used in the file.
#
# A trailing _array on any of the above types means that that keyword
# will allow more than one value.
#
# Within a here document for a string_array, the '-' sign takes on a special
# significance.
#
#     To embed a blank line in the here document, put a '-' as the first
#       and ONLY character on the line.
#
#     To preserve whitespace at the beginning of a line, put a - on the
#       line before the whitespace to be preserved
#
#     To put a literal '-' at the beginning of a line, double it.
#
#
# The default if the keyword is not supplied is given in ()'s while the
# type of value is given in [], the subsystem the keyword is used in is
# listed in <>'s. (undef) as default value means that the keyword is not
# defined or used.
	# admin_passwd         [word] (test.admin) <majordomo>
	# The password for handling administrative tasks on the list.
admin_passwd        =   test.admin
	# administrivia        [bool] (yes) <resend>
	# Look for administrative requests (e.g. subscribe/unsubscribe) and
	# forward them to the list maintainer instead of the list.
administrivia       =   yes
	# advertise            [regexp_array] (undef) <majordomo>
	# If the requestor email address matches one of these regexps, then
	# the list will be listed in the output of a lists command. Failure
	# to match any regexp excludes the list from the output. The
	# regexps under noadvertise override these regexps.
advertise           <<  END
END
	# announcements        [bool] (yes) <majordomo>
	# If set to yes, comings and goings to the list will be sent to the
	# list owner. These SUBSCRIBE/UNSUBSCRIBE event announcements are
	# informational only (no action is required), although it is highly
	# recommended that they be monitored to watch for list abuse.
announcements       =   yes
	# approve_passwd       [word] (test.pass) <resend>
	# Password to be used in the approved header to allow posting to
	# moderated list, or to bypass resend checks.
approve_passwd      =   test.pass
	# archive_dir          [absolute_dir] (undef) <majordomo>
	# The directory where the mailing list archive is kept. This item
	# does not currently work. Leave it blank.
archive_dir         =
	# comments             [string_array] (undef) <config>
	# Comment string that will be retained across config file rewrites.
comments            <<  END
END
	# date_info            [bool] (yes) <majordomo>
	# Put the last updated date for the info file at the top of the
	# info file rather than having it appended with an info command.
	# This is useful if the file is being looked at by some means other
	# than majordomo (e.g. finger).
date_info           =   yes
	# date_intro           [bool] (yes) <majordomo>
	# Put the last updated date for the intro file at the top of the
	# intro file rather than having it appended with an intro command.
	# This is useful if the file is being looked at by some means other
	# than majordomo (e.g. finger).
date_intro          =   yes
	# debug                [bool] (no) <resend>
	# Don't actually forward message, just go though the motions.
debug               =   no
	# description          [string] (undef) <majordomo>
	# Used as description for mailing list when replying to the lists
	# command. There is no quoting mechanism, and there is only room
	# for 50 or so characters.
description         =
	# digest_archive       [absolute_dir] (undef) <digest>
	# The directory where the digest archive is kept. This item does
	# not currently work. Leave it blank.
digest_archive      =
	# digest_issue         [integer] (1) <digest>
	# The issue number of the next issue
digest_issue        =   1
	# digest_maxdays       [integer] (undef) <digest>
	# automatically generate a new digest when the age of the oldest
	# article in the queue exceeds this number of days.
digest_maxdays      =
	# digest_maxlines      [integer] (undef) <digest>
	# automatically generate a new digest when the size of the digest
	# exceeds this number of lines.
digest_maxlines     =
	# digest_name          [string] (test) <digest>
	# The subject line for the digest. This string has the volume  and
	# issue appended to it.
digest_name         =   test
	# digest_rm_footer     [word] (undef) <digest>
	# The value is the name of the list that applies the header and
	# footers to the messages that are received by digest. This allows
	# the list supplied headers and footers to be stripped before the
	# messages are included in the digest.
digest_rm_footer    =
	# digest_rm_fronter    [word] (undef) <digest>
	# Works just like digest_rm_footer, except it removes the front
	# material.
digest_rm_fronter   =
	# digest_volume        [integer] (1) <digest>
	# The current volume number
digest_volume       =   1
	# digest_work_dir      [absolute_dir] (undef) <digest>
	# The directory used as scratch space for digest. Don't  change
	# this unless you know what you are doing
digest_work_dir     =
	# get_access           [enum] (list) <majordomo> /open;closed;list/
	# One of three values: open, list, closed. Open allows anyone
	# access to this command and closed completely disables the command
	# for everyone. List allows only list members access, or if
	# restrict_post is defined, only the addresses in those files are
	# allowed access.
get_access          =   list
	# index_access         [enum] (open) <majordomo> /open;closed;list/
	# One of three values: open, list, closed. Open allows anyone
	# access to this command and closed completely disables the command
	# for everyone. List allows only list members access, or if
	# restrict_post is defined, only the addresses in those files are
	# allowed access.
index_access        =   open
	# info_access          [enum] (open) <majordomo> /open;closed;list/
	# One of three values: open, list, closed. Open allows anyone
	# access to this command and closed completely disables the command
	# for everyone. List allows only list members access, or if
	# restrict_post is defined, only the addresses in those files are
	# allowed access.
info_access         =   open
	# intro_access         [enum] (list) <majordomo> /open;closed;list/
	# One of three values: open, list, closed. Open allows anyone
	# access to this command and closed completely disables the command
	# for everyone. List allows only list members access, or if
	# restrict_post is defined, only the addresses in those files are
	# allowed access.
intro_access        =   list
	# maxlength            [integer] (40000) <resend,digest>
	# The maximum size of an unapproved message in characters. When
	# used with digest, a new digest will be automatically generated if
	# the size of the digest exceeds this number of characters.
maxlength           =   40000
	# message_footer       [string_array] (undef) <resend,digest>
	# Text to be appended at the end of all messages posted to the
	# list. The text is expanded before being used. The following
	# expansion tokens are defined: $LIST - the name of the current
	# list, $SENDER - the sender as taken from the from line, $VERSION,
	# the version of majordomo. If used in a digest, no expansion
	# tokens are provided
message_footer      <<  END
END
	# message_fronter      [string_array] (undef) <resend,digest>
	# Text to be prepended to the beginning of all messages posted to
	# the list. The text is expanded before being used. The following
	# expansion tokens are defined: $LIST - the name of the current
	# list, $SENDER - the sender as taken from the from line, $VERSION,
	# the version of majordomo. If used in a digest, only the expansion
	# token _SUBJECTS_ is available, and it expands to the list of
	# message subjects in the digest
message_fronter     <<  END
END
	# message_headers      [string_array] (undef) <resend,digest>
	# These headers will be appended to the headers of the posted
	# message. The text is expanded before being used. The following
	# expansion tokens are defined: $LIST - the name of the current
	# list, $SENDER - the sender as taken from the from line, $VERSION,
	# the version of majordomo.
message_headers     <<  END
END
	# moderate             [bool] (no) <resend>
	# If yes, all postings to the list will be bounced to the moderator
	# for approval.
moderate            =   no
	# moderator            [word] (undef) <resend>
	# Address for directing posts which require approval. Such
	# approvals might include moderated mail, administrivia traps, and
	# restrict_post authorizations. If the moderator address is not
	# set, it will default to the list-approval address.
moderator           =
	# mungedomain          [bool] (no) <majordomo>
	# If set to yes, a different method is used to determine a matching
	# address.  When set to yes, addresses of the form user@dom.ain.com
	# are considered equivalent to addresses of the form user@ain.com.
	# This allows a user to subscribe to a list using the domain
	# address rather than the address assigned to a particular machine
	# in the domain. This keyword affects the interpretation of
	# addresses for subscribe, unsubscribe, and all private options.
mungedomain         =   no
	# noadvertise          [regexp_array] (undef) <majordomo>
	# If the requestor name matches one of these regexps, then the list
	# will not be listed in the output of a lists command. Noadvertise
	# overrides advertise.
noadvertise         <<  END
END
	# precedence           [word] (bulk) <resend,digest>
	# Put a precedence header with value <value> into the outgoing
	# message.
precedence          =   bulk
	# purge_received       [bool] (no) <resend>
	# Remove all received lines before resending the message.
purge_received      =   no
	# reply_to             [word] () <resend,digest>
	# Put a reply-to header with value <value> into the outgoing
	# message. If the token $SENDER is used, then the address of the
	# sender is used as the value of the reply-to header. This is the
	# value of the reply-to header for digest lists.
reply_to            = mike.kirkland@tulsa.cistech.com
	# resend_host          [word] (undef) <resend>
	# The host name that is appended to all address strings specified
	# for resend.
resend_host         = larry
	# restrict_post        [restrict_post] (undef) <resend>
	# If defined, only addresses listed in these files (colon or space
	# separated) can post to the mailing list. By default, these files
	# are relative to the lists directory. These files are also checked
	# when get_access, index_access, info_access, intro_access,
	# which_access, or who_access is set to 'list'. This is less useful
	# than it seems it should be since there is no way to create these
	# files if you do not have access to the machine running resend.
	# This mechanism will be replaced in a future version of
	# majordomo/resend.
restrict_post       = test.allow
	# sender               [word] (owner-test) <majordomo,resend,digest>
	# The envelope and sender address for the resent mail. This string
	# has "@" and the value of resend_host appended to it to make a
	# complete address. For majordomo, it provides the sender address
	# for the welcome mail message generated as part of the subscribe
	# command.
sender              =   owner-test
	# strip                [bool] (yes) <majordomo>
	# When adding address to the list, strip off all comments etc, and
	# put just the raw address in the list file.  In addition to the
	# keyword, if the file <listname>.strip exists, it is the same as
	# specifying a yes value. That yes value is overridden by the value
	# of this keyword.
strip               =   yes
	# subject_prefix       [word] (undef) <resend>
	# This word will be prefixed to the subject line, if it is not
	# already in the subject. The text is expanded before being used.
	# The following expansion tokens are defined: $LIST - the name of
	# the current list, $SENDER - the sender as taken from the from
	# line, $VERSION, the version of majordomo.
subject_prefix      =
	# subscribe_policy     [enum] (open+confirm) <majordomo> /open;closed
	# One of three values: open, closed, auto; plus an optional
	# modifier: '+confirm'.  Open allows people to subscribe themselves
	# to the list. Auto allows anybody to subscribe anybody to the list
	# without maintainer approval. Closed requires maintainer approval
	# for all subscribe requests to the list.  Adding '+confirm', ie,
	# 'open+confirm', will cause majordomo to send a reply back to the
	# subscriber which includes a authentication number which must be
	# sent back in with another subscribe command.
subscribe_policy    =   open+confirm
	# taboo_body           [regexp_array] (undef) <resend>
	# If any line of the body matches one of these regexps, then the
	# message will be bounced for review.
taboo_body          <<  END
END
	# taboo_headers        [regexp_array] (undef) <resend>
	# If any of the headers matches one of these regexps, then the
	# message will be bounced for review.
taboo_headers       <<  END
END
	# unsubscribe_policy   [enum] (open) <majordomo> /open;closed;auto;op
	# One of three values: open, closed, auto; plus an optional
	# modifier: '+confirm'.  Open allows people to unsubscribe
	# themselves from the list. Auto allows anybody to unsubscribe
	# anybody to the list without maintainer approval. The existence of
	# the file <listname>.auto is the same as specifying the value
	# auto.  Closed requires maintainer approval for all unsubscribe
	# requests to the list. In addition to the keyword, if the file
	# <listname>.closed exists, it is the same as specifying the value
	# closed. Adding '+confirm', ie, 'auto+confirm', will cause
	# majordomo to send a reply back to the subscriber if the request
	# didn't come from the subscriber. The reply includes a
	# authentication number which must be sent back in with another
	# subscribe command.  The value of this keyword overrides the value
	# supplied by any existent files.
unsubscribe_policy  =   open
	# welcome              [bool] (yes) <majordomo>
	# If set to yes, a welcome message (and optional 'intro' file) will
	# be sent to the newly subscribed user.
welcome             =   yes
	# which_access         [enum] (open) <majordomo> /open;closed;list/
	# One of three values: open, list, closed. Open allows anyone
	# access to this command and closed completely disables the command
	# for everyone. List allows only list members access, or if
	# restrict_post is defined, only the addresses in those files are
	# allowed access.
which_access        =   open
	# who_access           [enum] (open) <majordomo> /open;closed;list/
	# One of three values: open, list, closed. Open allows anyone
	# access to this command and closed completely disables the command
	# for everyone. List allows only list members access, or if
	# restrict_post is defined, only the addresses in those files are
	# allowed access.
who_access          =   open
mike.kirkland@ndchealth.com
larry # mailx -v mike.kirkland@tulsa.cistech.com
Subject: test from larry tulsa.cistech.com
test54
.
EOT
larry # mike.kirkland@tulsa.cistech.com... Connecting to localhost via relay...
220 larry.tns.ndchealth.com ESMTP Sendmail 8.12.9+Sun/8.12.2; Tue, 22 Apr 2003 14:48:34 -0500 (CDT)
>>> EHLO larry.tns.ndchealth.com
250-larry.tns.ndchealth.com Hello localhost [IPv6:::1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
>>> MAIL From:<root@larry.tns.ndchealth.com> SIZE=105
250 2.1.0 <root@larry.tns.ndchealth.com>... Sender ok
>>> RCPT To:<mike.kirkland@tulsa.cistech.com>
>>> DATA
250 2.1.5 <mike.kirkland@tulsa.cistech.com>... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
250 2.0.0 h3MJmYZS011179 Message accepted for delivery
mike.kirkland@tulsa.cistech.com... Sent (h3MJmYZS011179 Message accepted for delivery)
Closing connection to localhost
>>> QUIT
221 2.0.0 larry.tns.ndchealth.com closing connection
larry # mailx -v mike.kirkland@ndchealth.com
Subject: test from larry ndchealth.com
test 123
.
EOT
larry # mike.kirkland@ndchealth.com... Connecting to localhost via relay...
220 larry.tns.ndchealth.com ESMTP Sendmail 8.12.9+Sun/8.12.2; Tue, 22 Apr 2003 14:57:55 -0500 (CDT)
>>> EHLO larry.tns.ndchealth.com
250-larry.tns.ndchealth.com Hello localhost [IPv6:::1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
>>> MAIL From:<root@larry.tns.ndchealth.com> SIZE=99
250 2.1.0 <root@larry.tns.ndchealth.com>... Sender ok
>>> RCPT To:<mike.kirkland@ndchealth.com>
>>> DATA
250 2.1.5 <mike.kirkland@ndchealth.com>... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
250 2.0.0 h3MJvtZS011186 Message accepted for delivery
mike.kirkland@ndchealth.com... Sent (h3MJvtZS011186 Message accepted for delivery)
Closing connection to localhost
>>> QUIT
221 2.0.0 larry.tns.ndchealth.com closing connection
larry # mail
>From MAILER-DAEMON Tue Apr 22 14:58:13 2003
Message-ID: <4242F92CA015D5119B9600600834014206A0FDF8@claven.cistech.com>
From: postmaster@ms.ndcorp.com
To: root@larry.tns.ndchealth.com
Subject: Undeliverable: test from larry ndchealth.com
Date: Tue, 22 Apr 2003 15:33:58 -0400
Content-Length: 1166
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
------_=_NextPart_000_01C30906.1EB1F05C
Content-Type: text/plain
Your message
  To:      mike.kirkland@ndchealth.com
  Subject: test from larry ndchealth.com
  Sent:    Tue, 22 Apr 2003 15:57:55 -0400
did not reach the following recipient(s):
c=US;a= ;p=National Data Co;o=ihtulsa;dda:SMTP=mike.kirkland@ndchealth.com;
on Tue, 22 Apr 2003 15:57:26 -0400
    The recipient name is not recognized
        The MTS-ID of the original message is: c=us;a= ;p=national data
co;l=CLAVEN0304221957GNXHBTTF
    MSEXCH:IMS:National Data Corporation:ihtulsa:CLAVEN 0 (000C05A6) Unknown
Recipient
------_=_NextPart_000_01C30906.1EB1F05C
Content-Type: message/rfc822
Message-ID: <200304221957.h3MJvtwr011185@larry.tns.ndchealth.com>
From: root@larry.tns.ndchealth.com
To: mike.kirkland@ndchealth.com
Subject: test from larry ndchealth.com
Date: Tue, 22 Apr 2003 15:57:55 -0400
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2650.21)
X-MS-Embedded-Report: 
Content-Type: text/plain
test 123
------_=_NextPart_000_01C30906.1EB1F05C--
? 
#
# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
#	All rights reserved.
# Copyright (c) 1983, 1995 Eric P. Allman.  All rights reserved.
# Copyright (c) 1988, 1993
#	The Regents of the University of California.  All rights reserved.
#
# Copyright 1993, 1997 - 2002 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
#
######################################################################
######################################################################
#####
#####		SENDMAIL CONFIGURATION FILE
#####
######################################################################
#####
#####	DO NOT EDIT THIS FILE!  Only edit the source .mc file.
#####
######################################################################
######################################################################
#####  $Id: cfhead.m4,v 8.107 2001/07/22 03:25:37 ca Exp $  #####
#####  ident	"@(#)cfhead.m4	1.17	02/01/16 SMI"  #####
#####  $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $  #####
#####  @(#)subsidiary.mc	1.10 (Sun) 12/14/00  #####
#####  $Id: solaris8.m4,v 8.2 2000/08/23 16:10:49 gshapiro Exp $  #####
#####  $Id: local_lmtp.m4,v 8.16 2000/08/18 18:58:45 ca Exp $  #####
#####  @(#)solaris-generic.m4	1.9 (Sun) 08/27/01  #####
#####  $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $  #####
#####  $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $  #####
#####  $Id: use_ct_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $  #####
#####  $Id: accept_unqualified_senders.m4,v 8.6 1999/02/07 07:26:07 gshapiro
Exp $  #####
#####  $Id: accept_unresolvable_domains.m4,v 8.10 1999/02/07 07:26:07 gshapiro
Exp $  #####
#####  $Id: relay_entire_domain.m4,v 8.10 1999/02/07 07:26:12 gshapiro Exp $
#####
#####  $Id: proto.m4,v 8.628 2001/12/28 19:02:40 ca Exp $  #####
# level 10 config file format
V10/Sun
# override file safeties - setting this option compromises system security,
# addressing the actual file configuration problem is preferred
# need to set this before any file actions are encountered in the cf file
#O DontBlameSendmail=safe
# default LDAP map specification
# need to set this now before any LDAP maps are defined
#O LDAPDefaultSpec=-h localhost
##################
#   local info   #
##################
# my LDAP cluster
# need to set this before any LDAP lookups are done (including classes)
#D{sendmailMTACluster}$m
Cwlocalhost
# file containing names of hosts for which we receive email
Fw/etc/mail/local-host-names
# my official domain name
# ... define this only if sendmail cannot automatically determine your domain
#Dj$w.Foo.COM
CP.
# "Smart" relay host (may be null)
DSmailhost$?m.$m$.
# operators that cannot be in local usernames (i.e., network indicators)
CO @ % !
# a class with just dot (for identifying canonical names)
C..
# a class with just a left bracket (for identifying domain literals)
C[[
C{ResOk}OKR
# Hosts for which relaying is permitted ($=R)
FR-o /etc/mail/relay-domains
# arithmetic map
Karith arith
# dequoting map
Kdequote dequote
# class E: names that should be exposed as from this host, even if we
masquerade
# class L: names that should be delivered locally, even if we have a relay
# class M: domains that should be converted to $M
# class N: domains that should not be converted to $M
#CL root
C{E}root
# my name for error messages
DnMAILER-DAEMON
CPREDIRECT
# Configuration version number
DZ8.12.2
###############
#   Options   #
###############
# strip message body to 7 bits on input?
O SevenBitInput=False
# 8-bit data handling
#O EightBitMode=pass8
# wait for alias file rebuild (default units: minutes)
O AliasWait=10
# location of alias file
O AliasFile=/etc/mail/aliases
O AliasFile=/etc/mail/majordomo.aliases
# minimum number of free blocks on filesystem
O MinFreeBlocks=100
# maximum message size
#O MaxMessageSize=1000000
# substitution for space (blank) characters
O BlankSub=.
# avoid connecting to "expensive" mailers on initial submission?
O HoldExpensive=False
# checkpoint queue runs after every N successful deliveries
#O CheckpointInterval=10
# default delivery mode
O DeliveryMode=background
# error message header/file
#O ErrorHeader=/etc/mail/error-header
# error mode
#O ErrorMode=print
# save Unix-style "From_" lines at top of header?
#O SaveFromLine=False
# queue file mode (qf files)
#O QueueFileMode=0600
# temporary file mode
O TempFileMode=0600
# match recipients against GECOS field?
#O MatchGECOS=False
# maximum hop count
#O MaxHopCount=25
# location of help file
O HelpFile=/etc/mail/helpfile
# ignore dots as terminators in incoming messages?
#O IgnoreDots=False
# name resolver options
#O ResolverOptions=+AAONLY
# deliver MIME-encapsulated error messages?
O SendMimeErrors=True
# Forward file search path
O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
# open connection cache size
O ConnectionCacheSize=2
# open connection cache timeout
O ConnectionCacheTimeout=5m
# persistent host status directory
#O HostStatusDirectory=.hoststat
# single thread deliveries (requires HostStatusDirectory)?
#O SingleThreadDelivery=False
# use Errors-To: header?
O UseErrorsTo=False
# log level
O LogLevel=9
# send to me too, even in an alias expansion?
#O MeToo=True
# verify RHS in newaliases?
O CheckAliases=False
# default messages to old style headers if no special punctuation?
O OldStyleHeaders=True
# SMTP daemon options
O DaemonPortOptions=Name=MTA-v4, Family=inet
O DaemonPortOptions=Name=MTA-v6, Family=inet6
O DaemonPortOptions=Port=587, Name=MSA, M=E
# SMTP client options
#O ClientPortOptions=Family=inet, Address=0.0.0.0
# Modifiers to define {daemon_flags} for direct submissions
#O DirectSubmissionModifiers
# Use as mail submission program? See sendmail/SECURITY
#O UseMSP
# privacy flags
O PrivacyOptions=authwarnings
# who (if anyone) should get extra copies of error messages
#O PostmasterCopy=Postmaster
# slope of queue-only function
#O QueueFactor=600000
# limit on number of concurrent queue runners
#O MaxQueueChildren
# maximum number of queue-runners per queue-grouping with multiple queues
#O MaxRunnersPerQueue=1
# priority of queue runners (nice(3))
#O NiceQueueRun
# shall we sort the queue by hostname first?
#O QueueSortOrder=priority
# minimum time in queue before retry
#O MinQueueAge=30m
# how many jobs can you process in the queue?
#O MaxQueueRunSize=10000
# perform initial split of envelope without checking MX records
#O FastSplit=1
# queue directory
O QueueDirectory=/var/spool/mqueue
# key for shared memory; 0 to turn off
#O SharedMemoryKey=0
# timeouts (many of these)
#O Timeout.initial=5m
#O Timeout.connect=5m
#O Timeout.aconnect=0s
#O Timeout.iconnect=5m
#O Timeout.helo=5m
#O Timeout.mail=10m
#O Timeout.rcpt=1h
#O Timeout.datainit=5m
#O Timeout.datablock=1h
#O Timeout.datafinal=1h
#O Timeout.rset=5m
#O Timeout.quit=2m
#O Timeout.misc=2m
#O Timeout.command=1h
#O Timeout.ident=5s
#O Timeout.fileopen=60s
#O Timeout.control=2m
O Timeout.queuereturn=5d
#O Timeout.queuereturn.normal=5d
#O Timeout.queuereturn.urgent=2d
#O Timeout.queuereturn.non-urgent=7d
O Timeout.queuewarn=4h
#O Timeout.queuewarn.normal=4h
#O Timeout.queuewarn.urgent=1h
#O Timeout.queuewarn.non-urgent=12h
#O Timeout.hoststatus=30m
#O Timeout.resolver.retrans=5s
#O Timeout.resolver.retrans.first=5s
#O Timeout.resolver.retrans.normal=5s
#O Timeout.resolver.retry=4
#O Timeout.resolver.retry.first=4
#O Timeout.resolver.retry.normal=4
#O Timeout.lhlo=2m
#O Timeout.auth=10m
#O Timeout.starttls=1h
# time for DeliverBy; extension disabled if less than 0
#O DeliverByMin=0
# should we not prune routes in route-addr syntax addresses?
#O DontPruneRoutes=False
# queue up everything before forking?
O SuperSafe=True
# status file
O StatusFile=/etc/mail/statistics
# time zone handling:
#  if undefined, use system default
#  if defined but null, use TZ envariable passed in
#  if defined and non-null, use that info
#O TimeZoneSpec=
# default UID (can be username or userid:groupid)
#O DefaultUser=mailnull
# list of locations of user database file (null means no lookup)
#O UserDatabaseSpec=/etc/mail/userdb
# fallback MX host
#O FallbackMXhost=fall.back.host.net
# if we are the best MX host for a site, try it directly instead of config
err
#O TryNullMXList=False
# load average at which we just queue messages
#O QueueLA=8
# load average at which we refuse connections
#O RefuseLA=12
# load average at which we delay connections; 0 means no limit
#O DelayLA=0
# maximum number of children we allow at one time
#O MaxDaemonChildren=12
# maximum number of new connections per second
#O ConnectionRateThrottle=0
# work recipient factor
#O RecipientFactor=30000
# deliver each queued job in a separate process?
#O ForkEachJob=False
# work class factor
#O ClassFactor=1800
# work time factor
#O RetryFactor=90000
# default character set
#O DefaultCharSet=iso-8859-1
# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
#O ServiceSwitchFile=/etc/mail/service.switch
# hosts file (normally /etc/hosts)
#O HostsFile=/etc/hosts
# dialup line delay on connection failure
#O DialDelay=10s
# action to take if there are no recipients in the message
#O NoRecipientAction=add-to-undisclosed
# chrooted environment for writing to files
#O SafeFileEnvironment=/arch
# are colons OK in addresses?
#O ColonOkInAddr=True
# shall I avoid expanding CNAMEs (violates protocols)?
#O DontExpandCnames=False
# SMTP initial login message (old $e macro)
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
# UNIX initial From header format (old $l macro)
O UnixFromLine=From $g $d
# From: lines that have embedded newlines are unwrapped onto one line
#O SingleLineFromHeader=False
# Allow HELO SMTP command that does not include a host name
#O AllowBogusHELO=False
# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
#O MustQuoteChars=.
# delimiter (operator) characters (old $o macro)
O OperatorChars=.:%@!^/[]+
# shall I avoid calling initgroups(3) because of high NIS costs?
#O DontInitGroups=False
# are group-writable :include: and .forward files (un)trustworthy?
# True (the default) means they are not trustworthy.
#O UnsafeGroupWrites=True
# where do errors that occur when sending errors get sent?
#O DoubleBounceAddress=postmaster
# where to save bounces if all else fails
#O DeadLetterDrop=/var/tmp/dead.letter
# what user id do we assume for the majority of the processing?
#O RunAsUser=sendmail
# maximum number of recipients per SMTP envelope
#O MaxRecipientsPerMessage=100
# limit the rate recipients per SMTP envelope are accepted
# once the threshold number of recipients have been rejected
#O BadRcptThrottle=20
# shall we get local names from our installed interfaces?
#O DontProbeInterfaces=False
# Return-Receipt-To: header implies DSN request
#O RrtImpliesDsn=False
# override connection address (for testing)
#O ConnectOnlyTo=0.0.0.0
# Trusted user for file ownership and starting the daemon
#O TrustedUser=root
# Control socket for daemon management
#O ControlSocketName=/var/spool/mqueue/.control
# Maximum MIME header length to protect MUAs
#O MaxMimeHeaderLength=1024/256
# Maximum length of the sum of all headers
#O MaxHeadersLength=32768
# Maximum depth of alias recursion
#O MaxAliasRecursion=10
# location of pid file
O PidFile=/var/run/sendmail.pid
# Prefix string for the process title shown on 'ps' listings
#O ProcessTitlePrefix=prefix
# Data file (df) memory-buffer file maximum size
#O DataFileBufferSize=4096
# Transcript file (xf) memory-buffer file maximum size
#O XscriptFileBufferSize=4096
# lookup type to find information about local mailboxes
#O MailboxDatabase=pw
# list of authentication mechanisms
#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
# default authentication information for outgoing connections
#O DefaultAuthInfo=/etc/mail/default-auth-info
# SMTP AUTH flags
#O AuthOptions
# SMTP AUTH maximum encryption strength
#O AuthMaxBits
# SMTP STARTTLS server options
#O TLSSrvOptions
# Input mail filters
#O InputMailFilters
# CA directory
#O CACERTPath
# CA file
#O CACERTFile
# Server Cert
#O ServerCertFile
# Server private key
#O ServerKeyFile
# Client Cert
#O ClientCertFile
# Client private key
#O ClientKeyFile
# DHParameters (only required if DSA/DH is used)
#O DHParameters
# Random data source (required for systems without /dev/urandom under
OpenSSL)
#O RandFile
############################
# QUEUE GROUP DEFINITIONS  #
############################
###########################
#   Message precedences   #
###########################
Pfirst-class=0
Pspecial-delivery=100
Plist=-30
Pbulk=-60
Pjunk=-100
#####################
#   Trusted users   #
#####################
# this is equivalent to setting class "t"
Ft/etc/mail/trusted-users
Troot
Tdaemon
Tuucp
#########################
#   Format of headers   #
#########################
H?P?Return-Path: <$g>
HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
	$.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
	$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
	(version=${tls_version} cipher=${cipher} bits=${cipher_bits}
verify=${verify})$.$?u
	for $u; $|;
	$.$b
H?D?Resent-Date: $a
H?D?Date: $a
H?F?Resent-From: $?x$x <$g>$|$g$.
H?F?From: $?x$x <$g>$|$g$.
H?x?Full-Name: $x
# 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
#####
######################################################################
######################################################################
############################################
###  Ruleset 3 -- Name Canonicalization  ###
############################################
Scanonify=3
# handle null input (translate to <@> special case)
R$@			$@ <@>
# strip group: syntax (not inside angle brackets!) and trailing semicolon
R$*			$: $1 <@>			mark addresses
R$* < $* > $* <@>	$: $1 < $2 > $3			unmark <addr>
R@ $* <@>		$: @ $1				unmark @host:...
R$* [ IPv6 : $+ ] <@>	$: $1 [ IPv6 : $2 ]		unmark IPv6 addr
R$* :: $* <@>		$: $1 :: $2			unmark node::addr
R:include: $* <@>	$: :include: $1			unmark :include:...
R$* : $* [ $* ]		$: $1 : $2 [ $3 ] <@>		remark if leading colon
R$* : $* <@>		$: $2				strip colon if marked
R$* <@>			$: $1				unmark
R$* ;			   $1				strip trailing semi
R$* < $+ :; > $*	$@ $2 :; <@>			catch <list:;>
R$* < $* ; >		   $1 < $2 >			bogus bracketed semi
# null input now results from list:; syntax
R$@			$@ :; <@>
# strip angle brackets -- note RFC733 heuristic to get innermost item
R$*			$: < $1 >			housekeeping <>
R$+ < $* >		   < $2 >			strip excess on left
R< $* > $+		   < $1 >			strip excess on right
R<>			$@ < @ >			MAIL FROM:<> case
R< $+ >			$: $1				remove housekeeping <>
# strip route address <@a,@b,@c:user@d> -> <user@d>
R@ $+ , $+		$2
R@ [ $* ] : $+		$2
R@ $+ : $+		$2
# find focus for list syntax
R $+ : $* ; @ $+	$@ $>Canonify2 $1 : $2 ; < @ $3 >	list syntax
R $+ : $* ;		$@ $1 : $2;			list syntax
# find focus for @ syntax addresses
R$+ @ $+		$: $1 < @ $2 >			focus on domain
R$+ < $+ @ $+ >		$1 $2 < @ $3 >			move gaze right
R$+ < @ $+ >		$@ $>Canonify2 $1 < @ $2 >	already canonical
# convert old-style addresses to a domain-based address
R$- ! $+		$@ $>Canonify2 $2 < @ $1 .UUCP >	resolve uucp names
R$+ . $- ! $+		$@ $>Canonify2 $3 < @ $1 . $2 >		domain uucps
R$+ ! $+		$@ $>Canonify2 $2 < @ $1 .UUCP >	uucp subdomains
# if we have % signs, take the rightmost one
R$* % $*		$1 @ $2				First make them all @s.
R$* @ $* @ $*		$1 % $2 @ $3			Undo all but the last.
R$* @ $*		$@ $>Canonify2 $1 < @ $2 >	Insert < > and finish
# else we must be a local name
R$*			$@ $>Canonify2 $1
################################################
###  Ruleset 96 -- bottom half of ruleset 3  ###
################################################
SCanonify2=96
# handle special cases for local names
R$* < @ localhost > $*		$: $1 < @ $j . > $2		no domain at all
R$* < @ localhost . $m > $*	$: $1 < @ $j . > $2		local domain
R$* < @ localhost . UUCP > $*	$: $1 < @ $j . > $2		.UUCP domain
# check for IPv4/IPv6 domain literal
R$* < @ [ $+ ] > $*		$: $1 < @@ [ $2 ] > $3		mark [addr]
R$* < @@ $=w > $*		$: $1 < @ $j . > $3		self-literal
R$* < @@ $+ > $*		$@ $1 < @ $2 > $3		canon IP addr
# if really UUCP, handle it immediately
# try UUCP traffic as a local address
R$* < @ $+ . UUCP > $*		$: $1 < @ $[ $2 $] . UUCP . > $3
R$* < @ $+ . . UUCP . > $*	$@ $1 < @ $2 . > $3
# hostnames ending in class P are always canonical
R$* < @ $* $=P > $*		$: $1 < @ $2 $3 . > $4
R$* < @ $* $~P > $*		$: $&{daemon_flags} $| $1 < @ $2 $3 > $4
R$* CC $* $| $* < @ $+.$+ > $*	$: $3 < @ $4.$5 . > $6
R$* CC $* $| $*			$: $3
# pass to name server to make hostname canonical
R$* $| $* < @ $* > $*		$: $2 < @ $[ $3 $] > $4
R$* $| $*			$: $2
# local host aliases and pseudo-domains are always canonical
R$* < @ $=w > $*		$: $1 < @ $2 . > $3
R$* < @ $=M > $*		$: $1 < @ $2 . > $3
R$* < @ $* . . > $*		$1 < @ $2 . > $3
##################################################
###  Ruleset 4 -- Final Output Post-rewriting  ###
##################################################
Sfinal=4
R$+ :; <@>		$@ $1 :				handle <list:;>
R$* <@>			$@				handle <> and list:;
# strip trailing dot off possibly canonical name
R$* < @ $+ . > $*	$1 < @ $2 > $3
# eliminate internal code
R$* < @ *LOCAL* > $*	$1 < @ $j > $2
# externalize local domain info
R$* < $+ > $*		$1 $2 $3			defocus
R@ $+ : @ $+ : $+	@ $1 , @ $2 : $3		<route-addr> canonical
R@ $*			$@ @ $1				... and exit
# 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 @ $2				u%host@host => u@host
##############################################################
###   Ruleset 97 -- recanonicalize and call ruleset zero   ###
###		   (used for recursive calls)		   ###
##############################################################
SRecurse=97
R$*			$: $>canonify $1
R$*			$@ $>parse $1
######################################
###   Ruleset 0 -- Parse Address   ###
######################################
Sparse=0
R$*			$: $>Parse0 $1		initial parsing
R<@>			$#local $: <@>		special case error msgs
R$*			$: $>ParseLocal $1	handle local hacks
R$*			$: $>Parse1 $1		final parsing
#
#  Parse0 -- do initial syntax checking and eliminate local addresses.
#	This should either return with the (possibly modified) input
#	or return with a #error mailer.  It should not return with a
#	#mailer other than the #error mailer.
#
SParse0
R<@>			$@ <@>			special case error msgs
R$* : $* ; <@>		$#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient
addresses"
R@ <@ $* >		< @ $1 >		catch "@@host" bogosity
R<@ $+>			$#error $@ 5.1.3 $: "553 User address required"
R$+ <@>			$#error $@ 5.1.3 $: "553 Hostname required"
R$*			$: <> $1
R<> $* < @ [ $* ] : $+ > $*	$1 < @ [ $2 ] : $3 > $4
R<> $* < @ [ $* ] , $+ > $*	$1 < @ [ $2 ] , $3 > $4
R<> $* < @ [ $* ] $+ > $*	$#error $@ 5.1.2 $: "553 Invalid address"
R<> $* < @ [ $+ ] > $*		$1 < @ [ $2 ] > $3
R<> $* <$* : $* > $*	$#error $@ 5.1.3 $: "553 Colon illegal in host name
part"
R<> $*			$1
R$* < @ . $* > $*	$#error $@ 5.1.2 $: "553 Invalid host name"
R$* < @ $* .. $* > $*	$#error $@ 5.1.2 $: "553 Invalid host name"
R$* < @ $* @ > $*	$#error $@ 5.1.2 $: "553 Invalid route address"
R$* @ $* < @ $* > $*	$#error $@ 5.1.3 $: "553 Invalid route address"
R$* , $~O $*		$#error $@ 5.1.3 $: "553 Invalid route address"
# now delete the local info -- note $=O to find characters that cause
forwarding
R$* < @ > $*		$@ $>Parse0 $>canonify $1	user@ => user
R< @ $=w . > : $*	$@ $>Parse0 $>canonify $2	@here:... -> ...
R$- < @ $=w . >		$: $(dequote $1 $) < @ $2 . >	dequote "foo"@here
R< @ $+ >		$#error $@ 5.1.3 $: "553 User address required"
R$* $=O $* < @ $=w . >	$@ $>Parse0 $>canonify $1 $2 $3	...@here -> ...
R$- 			$: $(dequote $1 $) < @ *LOCAL* >	dequote "foo"
R< @ *LOCAL* >		$#error $@ 5.1.3 $: "553 User address required"
R$* $=O $* < @ *LOCAL* >
			$@ $>Parse0 $>canonify $1 $2 $3	...@*LOCAL* -> ...
R$* < @ *LOCAL* >	$: $1
#
#  Parse1 -- the bottom half of ruleset 0.
#
SParse1
# handle numeric address spec
R$* < @ [ $+ ] > $*	$: $>ParseLocal $1 < @ [ $2 ] > $3	numeric internet spec
R$* < @ [ $+ ] > $*	$1 < @ [ $2 ] : $S > $3		Add smart host to path
R$* < @ [ $+ ] : > $*		$#esmtp $@ [$2] $: $1 < @ [$2] > $3	no smarthost: send
R$* < @ [ $+ ] : $- : $*> $*	$#$3 $@ $4 $: $1 < @ [$2] > $5	smarthost with
mailer
R$* < @ [ $+ ] : $+ > $*	$#esmtp $@ $3 $: $1 < @ [$2] > $4	smarthost without
mailer
# short circuit local delivery so forwarded email works
R$=L < @ $=w . >	$#local $: @ $1			special local names
R$+ < @ $=w . >		$#local $: $1			regular local name
# resolve remotely connected UUCP links (if any)
# resolve fake top level domains by forwarding to other hosts
# figure out what should stay in our local mail system
R$* < @ $* .$m. > $*	$#esmtp $@ $2.$m $: $1 < @ $2.$m. > $3
# pass names that still have a host to a smarthost (if defined)
R$* < @ $* > $*		$: $>MailerToTriple < $S > $1 < @ $2 > $3	glue on smarthost
name
# deal with other remote names
R$* < @$* > $*		$#esmtp $@ $2 $: $1 < @ $2 > $3	user@host.domain
# handle locally delivered names
R$=L			$#local $: @ $1		special local names
R$+			$#local $: $1			regular local names
###########################################################################
###   Ruleset 5 -- special rewriting after aliases have been expanded   ###
###########################################################################
SLocal_localaddr
Slocaladdr=5
R$+			$: $1 $| $>"Local_localaddr" $1
R$+ $| $#ok		$@ $1			no change
R$+ $| $#$*		$#$2
R$+ $| $*		$: $1
# deal with plussed users so aliases work nicely
R$+ + *			$#local $@ $&h $: $1
R$+ + $*		$#local $@ + $2 $: $1 + *
# prepend an empty "forward host" on the front
R$+			$: <> $1
R< > $+			$: < > < $1 <> $&h >		nope, restore +detail
R< > < $+ <> + $* >	$: < > < $1 + $2 >		check whether +detail
R< > < $+ <> $* >	$: < > < $1 >			else discard
R< > < $+ + $* > $*	   < > < $1 > + $2 $3		find the user part
R< > < $+ > + $*	$#local $@ $2 $: @ $1		strip the extra +
R< > < $+ >		$@ $1				no +detail
R$+			$: $1 <> $&h			add +detail back in
R$+ <> + $*		$: $1 + $2			check whether +detail
R$+ <> $*		$: $1				else discard
R< local : $* > $*	$: $>MailerToTriple < local : $1 > $2	no host extension
R< error : $* > $*	$: $>MailerToTriple < error : $1 > $2	no host extension
R< $~[ : $+ > $+	$: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
R< $+ > $+		$@ $>MailerToTriple < $1 > $2 < @ $1 >
###################################################################
###  Ruleset 95 -- canonify mailer:[user@]host syntax to triple	###
###################################################################
SMailerToTriple=95
R< > $*				$@ $1			strip off null relay
R< error : $-.$-.$- : $+ > $* 	$#error $@ $1.$2.$3 $: $4
R< error : $- $+ > $*		$#error $@ $(dequote $1 $) $: $2
R< local : $* > $*		$>CanonLocal < $1 > $2
R< $~[ : $+ @ $+ > $*<$*>$*	$# $1 $@ $3 $: $2<@$3>	use literal user
R< $~[ : $+ > $*		$# $1 $@ $2 $: $3	try qualified mailer
R< $=w > $*			$@ $2			delete local host
R< $+ > $*			$#relay $@ $1 $: $2	use unqualified mailer
###################################################################
###  Ruleset CanonLocal -- canonify local: syntax		###
###################################################################
SCanonLocal
# strip local host from routed addresses
R< $* > < @ $+ > : $+		$@ $>Recurse $3
R< $* > $+ $=O $+ < @ $+ >	$@ $>Recurse $2 $3 $4
# strip trailing dot from any host name that may appear
R< $* > $* < @ $* . >		$: < $1 > $2 < @ $3 >
# handle local: syntax -- use old user, either with or without host
R< > $* < @ $* > $*		$#local $@ $1@$2 $: $1
R< > $+				$#local $@ $1    $: $1
# handle local:user@host syntax -- ignore host part
R< $+ @ $+ > $* < @ $* >	$: < $1 > $3 < @ $4 >
# handle local:user syntax
R< $+ > $* <@ $* > $*		$#local $@ $2@$3 $: $1
R< $+ > $* 			$#local $@ $2    $: $1
###################################################################
###  Ruleset 93 -- convert header names to masqueraded form	###
###################################################################
SMasqHdr=93
# do not masquerade anything in class N
R$* < @ $* $=N . >	$@ $1 < @ $2 $3 . >
R$* < @ *LOCAL* >	$@ $1 < @ $j . >
###################################################################
###  Ruleset 94 -- convert envelope names to masqueraded form	###
###################################################################
SMasqEnv=94
R$* < @ *LOCAL* > $*	$: $1 < @ $j . > $2
###################################################################
###  Ruleset 98 -- local part of ruleset zero (can be null)	###
###################################################################
SParseLocal=98
# addresses sent to foo@host.REDIRECT will give a 551 error code
R$* < @ $+ .REDIRECT. >		$: $1 < @ $2 . REDIRECT . > < ${opMode} >
R$* < @ $+ .REDIRECT. > <i>	$: $1 < @ $2 . REDIRECT. >
R$* < @ $+ .REDIRECT. > < $- >	$#error $@ 5.1.1 $: "551 User has moved; please
try " <$1@$2>
######################################################################
###  CanonAddr --	Convert an address into a standard form for
###			relay checking.  Route address syntax is
###			crudely converted into a %-hack address.
###
###	Parameters:
###		$1 -- full recipient address
###
###	Returns:
###		parsed address, not in source route form
######################################################################
SCanonAddr
R$*			$: $>Parse0 $>canonify $1	make domain canonical
######################################################################
###  ParseRecipient --	Strip off hosts in $=R as well as possibly
###			$* $=m or the access database.
###			Check user portion for host separators.
###
###	Parameters:
###		$1 -- full recipient address
###
###	Returns:
###		parsed, non-local-relaying address
######################################################################
SParseRecipient
R$*				$: <?> $>CanonAddr $1
R<?> $* < @ $* . >		<?> $1 < @ $2 >			strip trailing dots
R<?> $- < @ $* >		$: <?> $(dequote $1 $) < @ $2 >	dequote local part
# if no $=O character, no host in the user portion, we are done
R<?> $* $=O $* < @ $* >		$: <NO> $1 $2 $3 < @ $4>
R<?> $*				$@ $1
# if we relay, check username portion for user%host so host can be checked
also
R<NO> $* < @ $* $=m >		$: <RELAY> $1 < @ $2 $3 >
R<NO> $* < @ $* $=R >		$: <RELAY> $1 < @ $2 $3 >
R<RELAY> $* < @ $* >		$@ $>ParseRecipient $1
R<$+> $*			$@ $2
######################################################################
###  check_relay -- check hostname/address on SMTP startup
######################################################################
SLocal_check_relay
Scheck_relay
R$*			$: $1 $| $>"Local_check_relay" $1
R$* $| $* $| $#$*	$#$3
R$* $| $* $| $*		$@ $>"Basic_check_relay" $1 $| $2
SBasic_check_relay
# check for deferred delivery mode
R$*			$: < ${deliveryMode} > $1
R< d > $*		$@ deferred
R< $* > $*		$: $2
######################################################################
###  check_mail -- check SMTP `MAIL FROM:' command argument
######################################################################
SLocal_check_mail
Scheck_mail
R$*			$: $1 $| $>"Local_check_mail" $1
R$* $| $#$*		$#$2
R$* $| $*		$@ $>"Basic_check_mail" $1
SBasic_check_mail
# check for deferred delivery mode
R$*			$: < ${deliveryMode} > $1
R< d > $*		$@ deferred
R< $* > $*		$: $2
# authenticated?
R$*			$: $1 $| $>"tls_client" $&{verify} $| MAIL
R$* $| $#$+		$#$2
R$* $| $*		$: $1
R<>			$@ <OK>			we MUST accept <> (RFC 1123)
R$*			$: <?> $>CanonAddr $1		canonify sender address and mark it
R<?> $* < @ $+ . >	<?> $1 < @ $2 >			strip trailing dots
# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
R<?> $* < @ $* $=P >	$: <OK> $1 < @ $2 $3 >
R<?> $* < @ $+ >	$: <OKR> $1 < @ $2 >		... unresolvable OK
# check results
R<?> $*			$: @ $1		mark address: nothing known about it
R<$={ResOk}> $*		$@ <OKR>	domain ok: stop
R<TEMP> $*		$#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not
resolve"
R<PERM> $*		$#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not
exist"
######################################################################
###  check_rcpt -- check SMTP `RCPT TO:' command argument
######################################################################
SLocal_check_rcpt
Scheck_rcpt
R$*			$: $1 $| $>"Local_check_rcpt" $1
R$* $| $#$*		$#$2
R$* $| $*		$@ $>"Basic_check_rcpt" $1
SBasic_check_rcpt
# empty address?
R<>			$#error $@ nouser $: "553 User address required"
R$@			$#error $@ nouser $: "553 User address required"
# check for deferred delivery mode
R$*			$: < ${deliveryMode} > $1
R< d > $*		$@ deferred
R< $* > $*		$: $2
######################################################################
R$*			$: $1 $| @ $>"Rcpt_ok" $1
R$* $| @ $#TEMP $+	$: $1 $| T $2
R$* $| @ $#$*		$#$2
R$* $| @ RELAY		$@ RELAY
R$* $| @ $*		$: O $| $>"Relay_ok" $1
R$* $| T $+		$: T $2 $| $>"Relay_ok" $1
R$* $| $#TEMP $+	$#error $2
R$* $| $#$*		$#$2
R$* $| RELAY		$@ RELAY
R T $+ $| $*		$#error $1
# anything else is bogus
R$*			$#error $@ 5.7.1 $: "550 Relaying denied"
######################################################################
### Rcpt_ok: is the recipient ok?
######################################################################
SRcpt_ok
R$*			$: $>ParseRecipient $1		strip relayable hosts
# authenticated via TLS?
R$*			$: $1 $| $>RelayTLS	client authenticated?
R$* $| $# $+		$# $2			error/ok?
R$* $| $*		$: $1			no
R$*			$: $1 $| $>"Local_Relay_Auth" $&{auth_type}
R$* $| $# $*		$# $2
R$* $| NO		$: $1
R$* $| $*		$: $1 $| $&{auth_type}
R$* $|			$: $1
R$* $| $={TrustAuthMech}	$# RELAY
R$* $| $*		$: $1
# anything terminating locally is ok
R$+ < @ $* $=m >	$@ RELAY
R$+ < @ $=w >		$@ RELAY
R$+ < @ $* $=R >	$@ RELAY
# check for local user (i.e. unqualified address)
R$*			$: <?> $1
R<?> $* < @ $+ >	$: <REMOTE> $1 < @ $2 >
# local user is ok
R<?> $+			$@ RELAY
R<$+> $*		$: $2
######################################################################
### Relay_ok: is the relay/sender ok?
######################################################################
SRelay_ok
# anything originating locally is ok
# check IP address
R$*			$: $&{client_addr}
R$@			$@ RELAY		originated locally
R0			$@ RELAY		originated locally
R$=R $*			$@ RELAY		relayable IP address
R$*			$: [ $1 ]		put brackets around it...
R$=w			$@ RELAY		... and see if it is local
# check client name: first: did it resolve?
R$*			$: < $&{client_resolve} >
R<TEMP>			$#TEMP $@ 4.7.1 $: "450 Relaying temporarily denied. Cannot resolve
PTR record for " $&{client_addr}
R<FORGED>		$#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged "
$&{client_name}
R<FAIL>			$#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed "
$&{client_name}
R$*			$: <@> $&{client_name}
R<@>			$@ RELAY
# pass to name server to make hostname canonical
R<@> $* $=P 		$:<?>  $1 $2
R<@> $+			$:<?>  $[ $1 $]
R$* .			$1			strip trailing dots
R<?> $* $=m		$@ RELAY
R<?> $=w		$@ RELAY
R<?> $* $=R			$@ RELAY
######################################################################
###  trust_auth: is user trusted to authenticate as someone else?
###
###	Parameters:
###		$1: AUTH= parameter from MAIL command
######################################################################
SLocal_trust_auth
Strust_auth
R$*			$: $&{auth_type} $| $1
# required by RFC 2554 section 4.
R$@ $| $*		$#error $@ 5.7.1 $: "550 not authenticated"
R$* $| $&{auth_authen}		$@ identical
R$* $| <$&{auth_authen}>	$@ identical
R$* $| $*		$: $1 $| $>"Local_trust_auth" $1
R$* $| $#$*		$#$2
R$*			$#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as "
$&{auth_author}
######################################################################
###  Relay_Auth: allow relaying based on authentication?
###
###	Parameters:
###		$1: ${auth_type}
######################################################################
SLocal_Relay_Auth
######################################################################
###  tls_client: is connection with client "good" enough?
###	(done in server)
###
###	Parameters:
###		${verify} $| (MAIL|STARTTLS)
######################################################################
Stls_client
R$* $| $*	$@ $>"TLS_connection" $1
######################################################################
###  tls_server: is connection with server "good" enough?
###	(done in client)
###
###	Parameter:
###		${verify}
######################################################################
Stls_server
R$*		$@ $>"TLS_connection" $1
######################################################################
###  TLS_connection: is TLS connection "good" enough?
###
###	Parameters:
###		${verify}
###		Requirement: RHS from access map, may be ? for none.
######################################################################
STLS_connection
RSOFTWARE	$#error $@ 4.7.0 $: "403 TLS handshake."
######################################################################
###  RelayTLS: allow relaying based on TLS authentication
###
###	Parameters:
###		none
######################################################################
SRelayTLS
# authenticated?
######################################################################
###  authinfo: lookup authinfo in the access map
###
###	Parameters:
###		$1: {server_name}
###		$2: {server_addr}
######################################################################
Sauthinfo
#
######################################################################
######################################################################
#####
#####			MAIL FILTER DEFINITIONS
#####
######################################################################
######################################################################
#
######################################################################
######################################################################
#####
#####			MAILER DEFINITIONS
#####
######################################################################
######################################################################
##################################################
###   Local and Program Mailer specification   ###
##################################################
#####  $Id: local.m4,v 8.58 2000/10/26 01:58:29 ca Exp $  #####
#
#  Envelope sender rewriting
#
SEnvFromL
R<@>			$n			errors to mailer-daemon
R@ <@ $*>		$n			temporarily bypass Sun bogosity
R$+			$: $>AddDomain $1	add local domain if needed
R$*			$: $>MasqEnv $1		do masquerading
#
#  Envelope recipient rewriting
#
SEnvToL
R$+ < @ $* >		$: $1			strip host part
R$+ + $*		$: < $&{addr_type} > $1 + $2	mark with addr type
R<e s> $+ + $*		$: $1			remove +detail for sender
R< $* > $+		$: $2			else remove mark
#
#  Header sender rewriting
#
SHdrFromL
R<@>			$n			errors to mailer-daemon
R@ <@ $*>		$n			temporarily bypass Sun bogosity
R$+			$: $>AddDomain $1	add local domain if needed
R$*			$: $>MasqHdr $1		do masquerading
#
#  Header recipient rewriting
#
SHdrToL
R$+			$: $>AddDomain $1	add local domain if needed
R$* < @ *LOCAL* > $*	$: $1 < @ $j . > $2
#
#  Common code to add local domain name (only if always-add-domain)
#
SAddDomain
Mlocal,		P=/usr/lib/mail.local, F=lsDFMAw5:/|@qPSXfmnz9,
S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL,
		T=DNS/RFC822/SMTP,
		A=mail.local -l
Mprog,		P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
D=$z:/,
		T=X-Unix/X-Unix/X-Unix,
		A=sh -c $u
#####################################
###   SMTP Mailer specification   ###
#####################################
#####  $Id: smtp.m4,v 8.64 2001/04/03 01:52:54 gshapiro Exp $  #####
#
#  common sender and masquerading recipient rewriting
#
SMasqSMTP
R$* < @ $* > $*		$@ $1 < @ $2 > $3		already fully qualified
R$+			$@ $1 < @ *LOCAL* >		add local qualification
#
#  convert pseudo-domain addresses to real domain addresses
#
SPseudoToReal
# pass <route-addr>s through
R< @ $+ > $*		$@ < @ $1 > $2			resolve <route-addr>
# output fake domains as user%fake@relay
# do UUCP heuristics; note that these are shared with UUCP mailers
R$+ < @ $+ .UUCP. >	$: < $2 ! > $1			convert to UUCP form
R$+ < @ $* > $*		$@ $1 < @ $2 > $3		not UUCP form
# leave these in .UUCP form to avoid further tampering
R< $&h ! > $- ! $+	$@ $2 < @ $1 .UUCP. >
R< $&h ! > $-.$+ ! $+	$@ $3 < @ $1.$2 >
R< $&h ! > $+		$@ $1 < @ $&h .UUCP. >
R< $+ ! > $+		$: $1 ! $2 < @ $Y >		use UUCP_RELAY
R$+ < @ $~[ $* : $+ >	$@ $1 < @ $4 >			strip mailer: part
R$+ < @ >		$: $1 < @ *LOCAL* >		if no UUCP_RELAY
#
#  envelope sender rewriting
#
SEnvFromSMTP
R$+			$: $>PseudoToReal $1		sender/recipient common
R$* :; <@>		$@				list:; special case
R$*			$: $>MasqSMTP $1		qualify unqual'ed names
R$+			$: $>MasqEnv $1			do masquerading
#
#  envelope recipient rewriting --
#  also header recipient if not masquerading recipients
#
SEnvToSMTP
R$+			$: $>PseudoToReal $1		sender/recipient common
R$+			$: $>MasqSMTP $1		qualify unqual'ed names
R$* < @ *LOCAL* > $*	$: $1 < @ $j . > $2
#
#  header sender and masquerading header recipient rewriting
#
SHdrFromSMTP
R$+			$: $>PseudoToReal $1		sender/recipient common
R:; <@>			$@				list:; special case
# do special header rewriting
R$* <@> $*		$@ $1 <@> $2			pass null host through
R< @ $* > $*		$@ < @ $1 > $2			pass route-addr through
R$*			$: $>MasqSMTP $1		qualify unqual'ed names
R$+			$: $>MasqHdr $1			do masquerading
#
#  relay mailer header masquerading recipient rewriting
#
SMasqRelay
R$+			$: $>MasqSMTP $1
R$+			$: $>MasqHdr $1
Msmtp,		P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n,
L=990,
		T=DNS/RFC822/SMTP,
		A=TCP $h
Mesmtp,		P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n,
L=990,
		T=DNS/RFC822/SMTP,
		A=TCP $h
Msmtp8,		P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n,
L=990,
		T=DNS/RFC822/SMTP,
		A=TCP $h
Mdsmtp,		P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n,
L=990,
		T=DNS/RFC822/SMTP,
		A=TCP $h
Mrelay,		P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n,
L=2040,
		T=DNS/RFC822/SMTP,
		A=TCP $h
_______________________________________________
sunmanagers mailing list
sunmanagers@sunmanagers.org
http://www.sunmanagers.org/mailman/listinfo/sunmanagers


This archive was generated by hypermail 2.1.7 : Wed Apr 09 2008 - 23:26:18 EDT