Search the FAQ Archives

3 - A - B - C - D - E - F - G - H - I - J - K - L - M
N - O - P - Q - R - S - T - U - V - W - X - Y - Z - Internet FAQ Archives

UnixWare Frequently Asked Questions (The Email system)
Section - M1) What is the default Mailer on UnixWare?

( Single Page )
[ Usenet FAQs | Web FAQs | Documents | RFC Index | Airports ]

Top Document: UnixWare Frequently Asked Questions (The Email system)
Previous Document: News Headers
See reader questions & answers on this topic! - Help others by sharing your knowledge
The default mailer on UnixWare is based on SVR4 mail and was originally
developed at AT&T Bell Labs.  This mailer uses a regular-expression
based parser (/etc/mail/mailsurr) to deliver mail - this is similar in
format to sendmail but is not sendmail.
It supports SMTP, UUCP mail, mailing list directories,
mail aliases and an MHS gateway.

Sendmail is also included on the system and can be used instead
of the mailsurr subsystem  but is not the officially
supported mailer (see question M45 for how to make sendmail
the default mailer). If you do decide to use sendmail you are recommended
to get the latest version, the ones included by default are known
to be out of date and may have some security problems.

Subject: M2) Are there any mail related bug fixes for UnixWare2 ?

If you have UnixWare 2.01/2.02/2.03 you SHOULD install tf2100.tar.
(IGNORE THE RELEASE NOTES for tf2100 that say the fixes are in 2.03,
the final version of tf2100 was after 2.03, so you do need it).

If you have UnixWare 2.1 or Later you DO NOT need to install tf2100.tar,
but you are recommended to upgrade to 2.1.1 or 2.1.2 as that
contains further mail related fixes.

Other alternatives are to install sendmail or smap/smapd. See
the freebird archive for details.

Subject: M3) Is there any documentation describing the mail subsystem?

Please read the on-line Dynatext documentation provided with UnixWare.

Subject: M4) I've seen mention of the createSurr command and autoconfiguration
of the mail subsystem - what is this and what does it do?

The createSurr script is an attempt to autoconfigure the /etc/mail/mailsurr
file based on the running configuration.

createSurr is run automatically on each reboot in /etc/rc2.d/S81smtp.

To make permanent changes to the mail configuration you must edit
the /usr/lib/mail/mailsurr.proto file rather than the /etc/mail/mailsurr
file - or disable the call to createSurr in /etc/rc2.d/S81smtp by
commenting it out.

The first thing you might want to try prior to any other changes is
to run the new GUI admin tool for Mail Setup, in Admin_Tools/Mail_Setup,
select extended and save the selection.

The next section describes in some detail how createSurr works.

The mail autoconfiguration routine invoked by
/usr/lib/mail/surrcmd/createSurr consults the perl script  (note that
UnixWare includes a cut down version of perl 4.036 in /usr/gnu/bin)
/usr/lib/mail/surrcmd/configCheck to probe the system configuration, followed
by /usr/lib/mail/surrcmd/configMail to update the /etc/mail/mailsurr file.

In detail the sequence is as follows:

                calls-> configCheck
                                opens-> /etc/mail/mailflgs
                                updates-> /etc/mail/mailflgs
                calls-> configMail
                                opens-> /etc/mail/mailflgs
                                updates-> /etc/mail/mailsurr

Subject: M5) What are the configuration files used by the mail subsystem?

The configuration files are stored in /etc/mail and in /usr/lib/mail.

The key files in /etc/mail are:
        mailcnfg        mailsurr        rewrite         lookupLibs

The key files in /usr/lib/mail are:
        mailsurr.proto lookupLibs.proto

The /etc/mail/mailcnfg file:

This file  is used to initialise the mail configuration;
in UnixWare 2 the GUI Mail_setup tool edits this file.
The fields DOMAIN and SMARTERHOST are of particular importance.

DOMAIN  - string used to supply the domain name for the From: line

SMARTERHOST - can be set to a machine that has better routing information
in case the local machine does not understand the address. Its
possible and desirable for some workstations to route all mail
to the SMARTERHOST; if you are connecting to the internet you probably
want to set SMARTERHOST to the name of your ISP.

The /etc/mail/mailsurr file:

This file contains a set of rules for routing and transport of mail.
This is further described later in this document.

The /etc/mail/rewrite file:

This is new in UnixWare 2 and allows mail header rewriting (see
rewrite(4) and the Dynatext documents referred to in section M3) .

The /etc/mail/rewrite contains functions to rewrite mail headers for
local (called in the local() function) and remote delivery (called in
the main() function).

An example  of changing the From: lines to hide internal
hosts is given in question M15  section 3.

The /etc/mail/lookupLibs files:

This is new in UnixWare 2 and is a file containing the names of the
shared libraries to be opened when the mailalias command (which is
run by mail when parsing the mailsurr file). This determines where
aliases should be found. Its possible using this for alias lookup to
use the DNS and NIS.
This file is autoconfigured.

The /usr/lib/mail/mailsurr.proto file:

This contains the default mailsurr rules for different configurations.
This file is used to create the file /etc/mail/mailsurr. Permanent
changes to /etc/mail/mailsurr should be made by editing this file.
This is further described later in this document.

The /usr/lib/mail/lookupLibs.proto file:

This is new in UnixWare 2.
This contains the default mailalias lookup rules. This file is used
to create the file /etc/mail/lookupLibs. Permanent changes to that
file should be made by editing this file.
This is further described later in this document.

The /etc/mail/smtpcnfg file:

This is new in tf2100 and UnixWare 2.1.
The contains initialisation information for the behaviour of smtp.
See M51 for details of the default values in this file.

Subject: M6) How do I set the domain name used in the From: line?

In UnixWare2 the Mail_setup GUI tool can be used to set the domain
address. This edits a file called /etc/mail/mailcnfg and adds
a line, for example to set the domain to ""

Subject: M7) What other configuration parameters can I set in the
/etc/mail/mailcnfg file?

CLUSTER - can be used to name a group of machines. The string supplied
is used instead of the domain name when mail supplies the
remote from line. (with the /etc/mail/rewrite file included
in UnixWare 2 - i no longer use this field but add a rewrite
function instead)

FAILSAFE - can be used to denote a machine to which delivery should
be made in case local delivery fails - useful when using
mail in a networked environment

DEL_EMPTY_FILE - if value set to no empty mailfiles are not deleted by
mail or mailx

ADD_DATE - if set to true, i.e ADD_DATE=true, the mailer will add a Date:
line if one does not already exit

ADD_FROM - if set to true, i.e ADD_FROM=true, the mailer will add a From:
line if one does not already exit

Subject: M8) How does mail get delivered and how does the /etc/mail/mailsurr
             file work?

Incoming mail over smtp is received over TCP/IP on port 25.
In UnixWare 2.x an smtpd daemon process listens on port 25 to receive mail

Once mail is received by the smtp receiver it is passed to
the rmail process which then uses the regular expression based
parser (/etc/mail/mailsurr) to decide how to do deliver the mail.

Incoming mail over uucp is queued in /var/spool/uucp/sitename and then
uux scans that directory and passes the mail off to the
rmail process for delivery.

Outgoing mail is handed to rmail which based on the address and
the mailsurr rules in place  delivers the mail accordingly.

The file /etc/mail/mailsurr contains a set of rules for routing and
transport of mail.

This file is automatically created by the command
/usr/lib/mail/surrcmd/createSurr by scanning the system configuration
and a template mailsurr prototype file in /usr/lib/mail/mailsurr.proto.

To make permanent changes to this file edit the mailsurr.proto file
and then rerun the createSurr command.

The mail autoconfiguration routine invoked by /usr/lib/mail/surrcmd/createSurr
consults the perl script /usr/lib/mail/surrcmd/configCheck to probe the system

After scanning the system the file /etc/mail/mailflgs
contains flags for the configuration options autoconfigured. Examination of the
mailsurr.proto shows the same flags with conditional mailsurr entries.

The possible flags in /etc/mail/mailflgs are SMTR, MHS, DNS, UUCP and IP:

SMTR if SMARTERHOST is set in /etc/mail/mailcnfg

MHS is set if %g is set in /etc/mail/mailcnfg (MHS gateway )
This may be set off if MHSINTERVAL is set to 0 in /etc/mail/smfcnfg

DNS is set if there is a resolver set in /etc/resolv.conf
UUCP is set if there are entries in /etc/uucp/Systems
IP is set if it determines there is a valid device in

The createSurr command the invokes /usr/lib/mail/surrcmd/configMail to
produce the updated /etc/mail/mailsurr file.

Looking at the file created (see mailsurr(4) for full details).
Each entry in the /etc/mail/mailsurr file consists of three fields.

'sender'          'recipient'   'command'

The sender and recipient fields are regular expressions.  If
these first two fields match those of the mail message being
processed, the associated command is run.

Some sample mailsurr entries follow - don't worry if you don't
understand these, for a full explanation you can refer to the
UnixWare man page for mailsurr(4).

# mail-server, mailing lists and information distribution handling section
'.+'    'mail-server'   '<      /opt/lib/mserv/listener'
'.+'    'listproc'      '<S=0;      /home/listserv/catmail -r -f'

#    Send mail for `laser' to   attached laser printer
#    Make certain that failures are reported via return mail.
'.+' 'laser'     '< S=0;F=*; lp -dlaser'

#    For remote mail via uucp
'.+' '([^!@]+)!(.+)'     '< /usr/bin/uux - \\1!rmail (\\2)'

Examples of mailsurr/mailsurr.proto/mailcnfg files for a uucp/internet
gateway  and client workstation in cluster configurations
are available from the Freebird archive in the directory hints:

Subject: M9) How can I setup mail aliasing?

UnixWare mail has a convenient method of alias processing, and the
mailer calls a utility called mailalias.

The mailalias utility if it cannot find a user locally or a mailbox
(UnixWare mail delivers to mailfiles as well as users - so
you can just places a mailbox into /var/mail without setting
up a user account) looks for a list
of alias files in the configuration file /etc/mail/namefiles.

Note that mailsurr does not use any of the sendmail aliasing
files (i.e. /usr/ucblib/aliases).

The default files are /etc/mail/lists and /etc/mail/names. In our
local installation we've added added a couple of local files,
/etc/mail/groups for internal groups, /etc/mail/localiases for
internal distribution and /etc/mail/fullnames
which has alternate  long names; so this file looks like:

# --- example /etc/mail/namefiles -----
# Local add-ons
# -----end example ----

/etc/mail/groups could be:

# ---- example /etc/mail/groups -----
#       All the local groups within Sitename.This is the definitive copy used by
#       all the mail interfaces (it's totally transparent to them all).

managers        john fred wendy june
staff           joan michelle rita \
                sarah brendan
all             managers staff
# --- end example --

/etc/mail/localiases could be:

# ----- example /etc/mail/localiases ----
#       localiases:
#               These are purely local, readily changeable aliases for mapping
#       user@site.domain to internal host!user
# This file is for the gateway

john            argus!john
fred            argus!fred
wendy           woolco!wendy
june            sun4!june
rita            olim380!rita
sarah           olim380!sarah
brendan         sun4!brendan
# -- end example --

/etc/mail/fullnames could be:

# --- example /etc/mail/fullnames ---
j.williams      john
john.williams   john
f.jones         fred
fred.jones      fred
w.jones         wendy
wendy.jones     wendy
r.arnold        rita
rita.arnold     rita
# common misspellings can also be included
sara            sarah
brendon         brendan
# --- end example ----

Subject: M10) How are uucp and smtp handled by the mailsurr file?

Delivery by uucp is driven off the /etc/uucp files. If you wish to
do some smart routing see the later section on pathrouter..

Use of smtp can we be done either using DNS lookup or not.
Typically for internal hosts in a cluster, we set smarterhost
(in /etc/mail/mailcnfg) to our internet gateway, and then
that host does the DNS lookup.

# UnixWare 2 example: The mail transports go here.
# smtp delivery first followed by uucp
# If DNS is not used, use "smtpqer -N". If DNS is used, remove the "-N".
'.+'    '([^@,:]+)@(.+)'        '< B=4096; /usr/lib/mail/surrcmd/smtpqer -f %R -s %X' '\\1@\\2'
'.+'    '(@[^@,:]+[,:].+)'      '< B=4096; /usr/lib/mail/surrcmd/smtpqer -f %R -s %X' '\\1'
'.+'    '([^@,:]+)@(.+)%D'      '< H=add_from_header;B=1024; uux -a %R -p -- \\2 !rmail' '(\\1)'
'.+'    '@([^@,:]+)%D[,:](.+)'  '< H=add_from_header;B=1024; uux -a %R -p -- \\1 !rmail' '(\\2)'

Tip: If you are using dialup uucp you may want to change the uux command
invoked to add the "-r" flag so that mail will be queued for delivery,
rather than attempting delivery at the time the mail is sent. The mail
can then be sent when the uucp system polls the site which is more
efficient. An example of a uucp delivery line with the -r flag added

# invoke uux with -r flag to queue mail for delivery
'.+'    '([^@,:]+)@(.+)%D'      '< H=add_from_header;B=1024; uux -a %R -p -- \\2 !rmail' '(\\1)'
'.+'    '@([^@,:]+)%D[,:](.+)'  '< H=add_from_header;B=1024; uux -r -a %R -p -- \\1 !rmail' '(\\2)'

Since your mailsurr file was created by the createSurr command then remember
to make the changes permanent by editing the file
/usr/lib/mail/mailsurr.proto (the template prototype file).

Subject: M10.1) How do I setup uucp over TCP between two UnixWare machines?

Step 1. Edit /etc/uucp/Devices and uncomment the following line

CS  - - - CS

This then uses the connection server to make connections.

Step 2. Edit /etc/uucp/Systems , add a line for each system you
want to talk to, for example to system raven

raven     Any CS - -,listen:10103

This entry makes "uucico" run over the TCP network.
It causes the Connection Server to connect to the "10103" service
through the "listen" service. The "10103" service invokes uucico.

Step 3. Edit /etc/uucp/Permissions, to allow remote systems
connecting over the connection server to send and request files (note
that remote systems also need an entry in /etc/uucp/Systems).


M11) I want to setup uucp outbound over a modem, how do I setup
the uucp files?

In UnixWare2 you can do this using the Dialup_setup GUI tool.

Alternately I carry a floppy with the following files from /etc/uucp
that I install when I want to setup my laptop to call outbound:

        Config  Devices Devices.tcp Dialers Systems

This configuration is for a Hayes compatible modem, and is known
to work with Supra modems, Multitech ZDX modems and US Robotics.
These files can be obtained from the freebird archive in the file


Subject: M12) How do i restart smtp - do I need to reboot?

You can stop and restart smtp without rebooting as follows:
        $ su
        # sh /etc/rc2.d/S81smtp stop
        # sh /etc/rc2.d/S81smtp start

Subject: M13) How do I setup mail logging?

The following mailsurr entries log successful and failed deliveries in
/var/mail/:log and /var/mail:errors respectively.  In UnixWare 1.x these
are files, in UnixWare 2 these are directories.

# Log mail delivery
'.+'    '.+'    '> W=1;B=*; maillog -o /var/mail/:log' '-O %O %R %n %H %l --'
'.+'    '.+'    'Errors W=1;B=*; maillog -o /var/mail/:errors' '-O %O %R %n %H %l --'

#/usr/lib/mail/surrcmd/createSurr -l on

In UnixWare 2 you can also select the appropriate part of the GUI setup
to turn logging on.

In UnixWare 2 logs are now kept in directories with a different log being
stored each day in a file denoted by the day name, ie. Monday,....Sunday
for the 7 days. If you prefer the old style format of logging to
just a single file , its very simple just to replace the logging tool
with either your own or the one from UnixWare 1.x. (from the Freebird
archive ...freebird/hints/Mail/maillog.alt).

To determine problems with outgoing mail, check the /var/spool/smtpq/LOG file.
Each time a mail message is sent, a log of the delivery command is appended
to this log file.  A cron entry located in /var/spool/cron/crontabs/smtp
recycles daily backup copies of the mail message deliveries on a 7 day
cycle.  This is useful for debugging mail problems.

In UnixWare 2 daily logs for smtp delivery are now kept in the directory

Subject: M14) How do I setup Smart Routing - using pathrouter ?

Sometimes you may wish to override routing via MX records,
for  example if you want to route mail privately over a modem
link rather than the internet.

The utility suitable for use with UnixWare is pathrouter.

Pathrouter can be used to lookup route information for uucp and
domain addresses.

The /etc/uucp/paths file is the routing database for the pathrouter command
(see paths(4), and pathrouter(1M)) .  Each line of the file provides
routing information to either a host or to a domain (designated by a
leading ".").  Each line should have either two or three tab characters
(ascii 0x9) as separated fields.  The format of each line in the
paths file is:

        key  route   [cost]

Note that the cost field is a delivery weighting field
which is not used by the mail subsystem (smail would use it).

An example paths (/etc/uucp/paths) file for a gateway machine.

The following paths file is an example of setup for a gateway machine.
This example prefixes the destination routes with an exclamation
mark (!) to reduce the number of translations done by the rmail(1).

This example is used to rewrite the domain addresses;
and any uk domain address (matched by the .uk rule) to be routed
via the uel machine.

The domain address is converted to !usg!%s in order to utilise
the uucp transport rather than smtp.       !uel!!%s       0
uel     !uel!%s 0
usg     !usg!%s 0
windsor !uel!windsor!%s 0
.uk     !uel!%s 0        !usg!%s 0

Prefixing a name by a dot as in "" can be used to match
domains, and so this rule would match to be routed
thru usg!.

Note that this example does not have "smart-host" defined, and so
any addresses that are not matched by pathrouter are left unchanged. In this
example it is assumed that the DNS lookup will resolve the
address and perform delivery over smtp.

If you don't have DNS lookup, or you decide to route unknown
addresses to the nearest backbone then add an entry

smart-host      !backbone!%s    0

An example we use here to send mail to a particular route follows; this
for various internal routing to an internal gateway within the company,
and allows mail to be addressed as user@fpk, or with all mail going to the one gateway.

fpk     !!%s       0  !!%s       0      !!%s       0

This is then combined with a delivery line within mailsurr.proto
to send this over smtp:

'.+'    '!(!(.+)' '< B=4096; /usr/lib/mail/surrcmd/smtpqer -f %R -s \\1' '\\2'

Subject: M15) What do I need to do to Set Up an Internet/Uucp Mail Gateway
              on UnixWare 2?

The following section details the steps taken to setup up an email
gateway on UnixWare 2 - the email gateway is connected to the internet
and also has direct uucp connections over tcp and serial lines.

Subject: M15.1) Setup mail alias lookups via DNS, NIS or MHS

Do you want mailalias to use  DNS, NIS or MHS to lookup for aliases?
If you don't then by disabling the feature (by commenting out
lines in usr/lib/mail/lookupLibs.proto) you can speed mailalias
lookup - this is also useful if you are a dialup user who
wants to only send mail periodically when connected.

In /usr/lib/mail is the file lookupLibs.proto; by default this contains:

<DNS>   /usr/lib/mail/libalias/
<NIS>   /usr/lib/mail/libalias/
<MHS>   /usr/lib/mail/libalias/

When createSurr is run to auto-discover the machine configuration
and create a suitable mailsurr file, it will auto include the
lines for the features it discovers, for example DNS being
configured auto includes the line beginning <DNS>

You can insert a comment into this file to disable the line, or
you can delete the line; for example to disable DNS, NIS and MHS
mailalias lookup  on this machine;

<DNS>   #/usr/lib/mail/libalias/
<NIS>   #/usr/lib/mail/libalias/
<MHS>   #/usr/lib/mail/libalias/

Alternately you can replace mailalias with the UW1.x version of mailalias
which then only uses the aliases as defined in /etc/mail/namefiles.
Since I'm not using any aliases in the DNS/NIS presently I install
the UW1.x version as /usr/lib/mail/surrcmd/mailalias.alt and edit the line in
mailsurr.proto accordingly.

The changes are as follows:

# Run all (apparently) local names through the mail alias processor.
# This version uses mailalias.alt which is the 1.x version
'.+'    '.+'                    'Translate T=1;B=*; R=|/usr/lib/mail/surrcmd/mailalias.alt -P%L! -P%U! -P%L\%D! -P%U\%D! -S@%U\%D -S@%L\%D -S@%L -S@%U -r -p' '%n'

A copy of the UW1.x version of mailalias is available on the Freebird

Subject: M15.2) Set the mail domain information in /etc/mail/mailcnfg

You can establish many of the mail configuration parameters  by using
the Admin_Tools/Mail_Setup GUI Tool. One of the things this does is
to enter parameters into the file /etc/mail/mailcnfg - a file that does
not exist by default.

A typical file is as follows:


Important parameters here are:

SMARTERHOST - where to send mail in the event that you are
unable to resolve or have no uucp route to a host. Typically this
is your IP provider or another friendly site.

DOMAIN - is the mail domain for the From: line in mail. Typically
mail will have the form From: user@nodename.domain. The next section
in this document shows a mail rewrite rule which rewrites
the From: lines so as to make all mail  seem to have come from
just the domain name.

Subject: M15.3) Setup any header rewrite rules (/etc/mail/rewrite)

Using the default setup with, mail will appear
as if it comes from the Many installations
prefer to make it appear as if they have just one email address, their
domain name.

The /etc/mail/rewrite file contains functions to rewrite mail headers for
local and remote delivery. The following is a rewrite function
to search for occurrences of and replace them with

function check_headers()
var hdr;
# loop through ALL headers
for (hdr from headers_pattern("From:"))
   # if we match a header that has something like in it
   if (hdr ~ "[a-zA-Z]\\.novell\\.co\\.uk")
     # then substitute the shorter version in its place
     hdr=gsubstitute(hdr, "[a-zA-Z0-9.]+\\.novell\\.co\\.\\uk", "");

So this function should be added to the file /etc/mail/rewrite.
There are two pre-defined special functions within this file - main()
and local().

You need to add  this to the function main() which is executed before
any rules in the /etc/mail/mailsurr file are executed.

Other functions may be executed from mailsurr via Rewrite rules or
H= invocations  on delivery lines.

The function local() is executed for local delivery.

An example function to be executed by a H= invocationm is add_from_header.
This is a modified version we use for uucp connections
(this works for us below)

# function add_from_header
# Add a >From line.

function add_from_header()
    # Create the From header.
    var retpath, elementArray, newHeader;
    retpath = returnpath();
    if(strstr(retpath, "!") != 0)
        # uucp incoming case
        #retpath = substitute(retpath, "^(.+)!([^!]+)$", "\\1:\\2");
        elementArray = split(retpath, ":");
        elementArray[0] = substitute(elementArray[0], "^@", "");
        newHeader = elementArray[1] @ " " @ fromdate(time()) @ " remote from " @ elementArray[0];
    else if(strstr(retpath, "@") == 0)
        # local delivery so add this machine's domain
        newHeader = retpath @ " " @ fromdate(time()) @ " remote from " @ usefuldomain();
        # over smtp?
        retpath = gsubstitute(retpath, ":@", "!");
        retpath = substitute(retpath, "^@", "");
        if(strstr(retpath, ":") == 0)
            retpath = substitute(retpath, "([^!@]+)@([^@]+)$", "\\2:\\1");
            retpath = substitute(retpath, "([^:]*)[:]([^!@]+)@([^@]+)$", "\\1!\\3:\\2");

        elementArray = split(retpath, ":");
        elementArray[0] = substitute(elementArray[0], "^@", "");
        newHeader = elementArray[1] @ " " @ fromdate(time()) @ " remote from " @ elementArray[0];

    prepend_header(">From", ">From", newHeader);


function usefuldomain() {
var dom = domain();
  dom = substitute(dom, "^\.", "");
  return dom;

Also see section M21 for a rewrite function for changing the
Return-Path: mail header.

Subject: M15.4) Customizing /etc/mail/mailsurr (/usr/lib/mail/mailsurr.proto)

To customize the /etc/mail/mailsurr file and make the changes
permanent you need to make the changes to the file

Some example changes are below:

To see mail to the address "" as local when the nodename is add the following entry to /etc/mail/mailcnfg

Add the following line to /usr/lib/mail/surrcmd/ (just after the ACCDOM
line in Part 2 and before the mailalias line)

'.+'    '([^@]+)@%d'            'Translate R=\\1'

To do this change in a more generic manner add a capital D to the NODOT entry
in mailsurr.proto. (The NODOT was a typo)

An alternate to adding %d into the mailcnfg is to put the explicit
line in the mailsurr.proto file; for example:

'.+'    '([^@]+)@('            'Translate R=\\1'   # our old domain

Subject: M15.5) Setting up delivery lines to mail-servers, list-processors
                etc (mailsurr.proto)

Entries can also be added to setup special delivery lines into
programmes such as the mail-server.

Add the entry in part 3 after the ckbinarsys line:

'.+'    'mail-server'   '<      /opt/lib/mserv/listener'

Subject: M15.6) Activating mail logging

You won't get too far without being able to determine whats
going on. The command to switch mail logging on follows:

/usr/lib/mail/surrcmd/createSurr -l on

Subject: M15.7) Setting up suitable defaults for mailx users

Edit the file /etc/mail/mailx.rc and add some suitable site

set autoprint askcc bang crt=20 dot showto
set metoo cmd=/opt/bin/mailPR page hold
set sendmail=/bin/rmail
set from

ignore Message-Id Received Status Content-Type Content-Length Default-Options Auto-Forwarded-From Auto-Forward-Count

Subject: M15.8)  If you have local users, then add other mail-user agents :
for example, mush, elm, pine etc

If you are using the version of Elm from the mail-server, system
wide defaults are contained in /opt/lib/elm/elm.rc, a sample is below
for our site.

## /opt/lib/elm/elm.rc -- system wide defaults for elm

## default hostname to override uname in From: line
## for example.
##   hostname =
## If not set, the From: line defaults to the uname
## hostname =
hostname =
hostdomain =
hostfullname =

## weedout unwanted mail headers
weedout via Default-Options Auto-Forwarded-From Auto-Forward-Count X-Nvlenv-01DL-Expanded Original-Content-Type Content-Type Content-Length X-Nvlenv-01Date-Transferred X-Nvlenv-01Date-Posted References

Subject: M15.9) Update /etc/profile

        postmark="`grep '^'$LOGNAME':' /etc/passwd | cut -d: -f5`"
        ORGANIZATION="Novell Europe."
        export EDITOR postmask ORGANIZATION

Subject: M15.10) Setting up smart routing between uucp and internet zones

As a mail gateway that has both uucp connections and an internet
connection we need to be able to smart route between the zones.
A utility called pathrouter is provided with UnixWare 2 to enable

To enable the pathrouter utility, find the lines beginning
<PATHS> in mailsurr.proto :

<PATHS> # Reroute using pathrouter.
<PATHS> '.+' '[^@]+' 'Translate R=|/usr/lib/mail/surrcmd/pathrouter %n'

And change these to:

# Reroute using pathrouter.
#'.+' '[^@]+' 'Translate R=|/usr/lib/mail/surrcmd/pathrouter %n'
'.+'    '.*[!@].*'              'Translate T=1;B=*; R=|pathrouter -p' '%n'

Also add a uucp delivery line (before or after the smtp delivery
lines depending on your preference)

#Added for pathrouter
'.+'    '!([^!]+)!(.+)'         '< B=1024; uux -r -a %R -p -- \\1!rmail' '(\\2)'

#before <UUCP>

One thing I also found was to comment out calls to localmail in mailsurr.proto.

Install paths routing database in /etc/uucp/paths

Subject: M15.11) Add a rule to mailsurr.proto to catch mail to unknown local users.

# mailgate setup:
# This rule included for catching email sent to an unknown local user.
# This combined with  the use of pathrouter allows unknown local mail
# to be sent to user@uknown which pathrouter expands to postmaster and the
# unknown address so an error mesg still gets sent to the originator.
'.+'    '[^!@]+'                'Translate T=1;B=*; R=|localmail -p -S @unknown' '%n'

In /etc/uucp/paths add:

unknown !windsor!postmaster %s  0

(Note windsor is where the postmast mailbox lives)

For localdelivery to postmaster this would simply be:

unknown postmaster %s   0

Subject: M15.12) Setup uucp over the connection server for  uucp over
the network (rather than dialup uucp)

Edit /etc/uucp/Systems.tcp, add entries:

usl Any CS - -,listen:10103
usle Any CS - -,listen:10103
waterloo Any CS - -,listen:10103
carrera Any CS - -,listen:10103
marlow Any CS - -,listen:10103

Edit /etc/uucp/Devices; enable CS - - - CS entry

Edit /etc/uucp/Permissions

Subject: M15.13) Setup mail alias files

Typically, you will want to edit /etc/mail/namefiles and add any filenames
that you wish to contain your mailing lists. See section M9 for

Subject: M15.14) Install an alternate incoming smtpd so that incoming
mail connections can be controlled using the TCP/SPX wrappers.

(see M17 for further details)

Subject: M15.15) Install the TCP/SPX wrappers so as to monitor who is

If you're paranoid (or security conscious) and want to keep logs of who is
connecting to your machine, install the TCP/SPX wrappers. If you're
on the internet you should consider installing this package or the
netacl's from the TIS Firewall Toolkit in order to control access
to all TCP services.

Subject: M16) I have UW2 and my inbound smtpd keeps dying. Is there a fix?

If you are running 2.0x apply tf2100.tar - although the release
notes say tf2100 is included  in 2.03 you still need to apply it.

If you are running 2.1.x update to 2.1.1 or later.

If these don't work reliably, then an alternative is to use smap/smapd
from the TIS Firewall toolkit (see the next question on running
smtpd from inetd on UW2). Another alternative is to
install sendmail , see elsewhere in this FAQ.

Subject: M17) I have UW2 - smtpd now runs as a daemon - is there a way to run
it from inetd? Running from inetd makes it more reliable and also
can be wrapped.

You can run the smap/smapd programmes from the TIS Firewall Toolkit V1.3
as replacements for the inbound smtpd. These have been ported
to UnixWare2 /rmail subsystem - binaries can be found in the
internet/server/fwtk/smap directory on the Freebird archive.

smap is a simple incoming smtp daemon invoked from inetd.
Its job in life is to store incoming mail for processing by
smapd. It runs chroot'd in the incoming mail spool area.

smapd reads mail from the incoming spool area, and hands it
off to the real mail subsystem

The idea behind this mailer is that smap is simple and understandable
and robust, and can be run on a firewall - you can also run
it as a replacement to the stock smtpd daemon if you prefer -
and this allows you to use tcp wrappers if you wish.

The files provided on the server with smap contain a new /etc/rc2.d/S81smtp
script that auto detects if smapd is in place and runs smapd
on system startup - this assumes you'll reconfigure
your inetd to include the smap and restart it.

Subject: M18) I have UW2  and my outbound smtp  does incorrect routing to MX
record sites and also continually bounces mail when sending
to an unknown user when it should only bounce once - is there a fix?

If you are running UW2.0x apply tf2100 - or update to 2.1.1 or later.
Alternately consider installing the sendmail package from the
freebird archive.

Subject: M19) I'm having trouble routing email from my local machine to the net.
I'm connected to a local internet provider and can run Mosaic etc
but can't send email. What do i need to do to make this work?

Either (1) use them as a SMARTERHOST (for mail forwarding if
they are agreeable),  by setting
in /etc/mail/mailcnfg

and  updating the /etc/mail/mailsurr mail configuration file (best to
back it up first) by the following:


CreateSurr looks at the system configuration
and using the /usr/lib/mail/mailsurr.proto file creates a new
/etc/mail/mailsurr file , in this case it enables a section of the
mailsurr file to forward all mail to unknown sites to the site
specified by SMARTERHOST. You may want to make sure that the IP
address of the site specified by SMARTERHOST is in your /etc/hosts

Alternately (2) if you have DNS working  backup /usr/lib/mail/mailsurr.proto
and then edit it changing the smtpqer lines to remove the -N flag,
which tells smptqer to do a DNS lookup.

And then create a new /etc/mail/mailsurr file:


If you create the /etc/mail/mailcnfg file (btw check the manual page for details
on mailcnfg) the permissions should be  444 bin mail.
On my UnixWare 1.x machines we have the following.


You should change SMARTERHOST and REMOTEFROM accordingly.

If you choose to have SMARTERHOST set to a fully qualified domain name

Then toggle two lines in part 3 of the /etc/mail/mailsurr to use
smtp delivery first...

You'll have something like this in part 3 (for UnixWare 1.x),

'.+'    '!([^!]+)!(.+)'         '< B=512; uux -a %R -p -- \\1!rmail' '(\\2)'
'.+'    '!([^!]+)!(.+)'         '< B=4096; smtpqer -N %R \\1' '\\2'

Swap the two lines around.

Subject: M20)Mail sent to my domain does not arrive locally on the
machine. It gets here but the local mailsystem does not recognise it
as local.

The Mail Setup GUI has a button to select to catch mail to the domain
for local delivery. This activates the NODOT entry in the mailsurr file.
This in fact should be  DNODOT  (edit /usr/lib/mail/mailsurr.proto and
change the occurrence of NODOT to DNODOT, re-run createSurr and this
should work correctly).

(Note that this is fixed in update2.03 and tf2100.tar)

Subject: M20.1) How can I set other mail domains besides my real domain
to be treated as local?

If you have multiple domain names that you want to
receive mail, you can add an entry to /etc/mail/mailcnfg

Edit /usr/lib/mail/mailsurr.proto
to create a translation entry in  that file.  The user@domain
entry is shown below from the mailsurr.proto file:

# Map all names of the form user@local-machine -> user
# Map all names of the form user@uname -> user
# Map all names of the form user@domain
# Then loop back through from the top.
'.+'  '(.+)@%L'    'Translate R=\\1'
'.+'  '(.+)@%U'    'Translate R=\\1'
'.+'  '(.+)@%d'    'Translate R=\\1'   #This is the added entry for user@domain

Then run the script /usr/lib/mail/surrcmd/createSurr.

If mail is coming in via the internet you'll also need to
setup an MX record for the other domain to tell it to send mail
to this host.

Subject: M21) I'm using UnixWare2 and when mail arrives locally the Return-Path:
header has the format @myprovider:remotedomain!user or @domain:user or
@domain:user@domain.  Is there someway to put this into normal
domain address format?

The following rewrite function edits the Return-path: header
for locally delivered email into normal domain address format.
Add the following functions to the file /etc/mail/rewrite.

function local()

function fix_return_path()
    var hdr;
    # loop through the headers of this name
    for (hdr from headers("Return-path"))
        if (hdr ~ "@([a-zA-Z0-9.]+):([a-zA-Z0-9.]+)!([a-zA-Z0-9.]+)" )
            hdr = gsubstitute(hdr, "@([a-zA-Z0-9.]+):([a-zA-Z0-9.]+)!([a-zA-Z0-9.]+)", "\\3@\\2");
        if (hdr ~ "@([a-zA-Z0-9.]+):([a-zA-Z0-9.]+)@([a-zA-Z0-9.]+)" )
            hdr = gsubstitute(hdr, "@([a-zA-Z0-9.]+):([a-zA-Z0-9.]+)@([a-zA-Z0-9.]+)", "\\2@\\3");
        if (hdr ~ "@([a-zA-Z0-9.]+):([a-zA-Z0-9.]+)" )
            hdr = gsubstitute(hdr, "@([a-zA-Z0-9.]+):([a-zA-Z0-9.]+)", "\\2@\\1");

Subject: M22) Large mail alias lists don't seem to work on UnixWare 2. Is this
a known problem?

This is a bug. To fix this you need to apply one of the mail updates in
section M2.

An alternative workaround is to use the UnixWare 1.x version of mailalias.
This loses some functionality , i.e. is not driven off the
/etc/mail/lookupLibs file and only looks up aliases based
off the files referenced in /etc/mail/namefiles; but then is
thus faster.

I have installed this on my UW2 mail gateway as

and adjusted the /usr/lib/mail/mailsurr.proto file as:

'.+'    '.+'                    'Translate T=1;B=*; R=|/usr/lib/mail/surrcmd/mailalias.alt -P%L! -P%U! -P%L\%D! -P%U\%D! -S@%U\%D -S@%L\%D -S@%L -S@%U -r -p' '%n'

And then recreated the /etc/mail/mailsurr file with

/usr/lib/mail/surrcmd/createSurr -l on

A copy of the UW1.x version of mailalias is on the Freebird archive
as mailalias.bin.UW1.Z.

Subject: M23) smtp mail to hosts which only have MX records and no valid A
records never gets there? This is with the 2.0 developer release.

This is  a bug fixed in the 2.01 version of smtpd. Update to 2.01,2.02 or 2.03
or apply tf2100.tar.

Subject: M24) How do I make the mailsystem send mail for local addresses off
to another host if they are not found locally without setting up

Enable the following line in the mailsurr file, replacing the HOST.DOMAIN
field by the appropriate values.

# If you have a flat name space across multiple machines, but user-names only
# exist on disjoint machines, this entry will forward any name not known
# locally off to the given host.
#'.+'   '[^!@]+'                'Translate T=1;B=*; R=|localmail -p -S @HOST.DOMAIN' '%n'

Subject: M25) How can I get mailx/dtmail to add fullname information to
the From: line?

UnixWare rmail/mail adds additional information to the From: line based
on the postmark environment variable. On our systems we typically
add the following to /etc/profile:

        postmark="`grep '^'$LOGNAME':' /etc/passwd | cut -d: -f5`"
        export postmark

Subject: M26) How can I set all the From: line  (hiding the internal hosts to a
mail domain)?

This can be done either in the mail user agent , that is mailx, dtmail ,
elm or mush , which are described here , or alternately using the
rewrite rules in /etc/mail/rewrite (only in UnixWare 2 - see question
M15 section 3 for details on this feature).


In your .mailrc for mailx,dtmail

set  postmark="myname@my.domian (My Fullname)"

From the mailx man page:

                   The specified string is included in the comment field of
                   the From: header of messages that you send.  The string
                   is usually set to your name.  See from and translate.
                   If the string includes an @, it will be used for the
                   entire From: header.

==>For elm, edit /opt/lib/elm/elm.rc

## /opt/lib/elm/elm.rc -- system wide defaults for elm

## default hostname to override uname in From: line
## for example.
##   hostname =
## If not set, the From: line defaults to the uname
## hostname =
hostname = my.domain
hostdomain = my.domain
hostfullname = my.domain

==>For mush

in your system mushrc file

set hostname=my.domain

Subject: M27) I want to setup a cluster of machines, with a single mail
gateway machine.

(for UW1) Use the sample files client.mailcnfg and client.mailsurr to
make the internal hosts forward all mail to the gateway. And then
just configure the mail gateway to be a smarthost for mail.

On UnixWare 2 setup a client machine with the GUI so that all
mail is forwarded to a smarter host - which can be your local
email gateway. Copy the resulting /etc/mail/mailsurr and /etc/mail/mailcnfg
files - install on each machine in the cluster - and edit S81smtp so
as not to call createSurr and rewrite the /etc/mail/mailsurr file on
each reboot.

Subject: M28) How can i make bounced email go to the postmaster if the user
address is invalid?

A simple way just to send the message to the postmaster follows:
'.+'    '[^!@]+'                'Translate T=1;B=*; R=postmaster'

You should add these lines to the /usr/lib/mail/mailsurr.proto file
before part 4 (postprocessing commands),
and use the command /usr/lib/mail/surrcmd/createSurr to create a new
mailsurr file (best to backup your existing mailsurr file first).
CreateSurr looks at the system configuration
and using the /usr/lib/mail/mailsurr.proto file creates a new
/etc/mail/mailsurr file .

Subject: M29) How can i debug mail delivery?

There are two commands you can execute to see whats happening:

/bin/mail -d address

Will show you a short list of translations and delivery commands
(and will deliver the message).

/bin/mail -T "" address

will show you in gorey detail the translations taken from the
default mailsurr file.  This can be used to determine whether a problem
can be isolated to the address translation.

Subject: M30) How can i debug the /etc/mail/rewrite rules?

Set the following environment variable:


/bin/mail -d email-address

This lets you see what the rewrite rules are doing.

Subject: M31)How can I use the rewrite rules to rewrite a To: header
of the format uunet!domain!user to user@domain?

Add a call to the function fix_to_line() in the main() function of
/etc/mail/rewrite so this is called for remote mail delivery.

function main()

function fix_to_line(var hdrname)
    var hdr;
    # loop through the headers of this name
    for (hdr from headers(hdrname))
        # if the header has uunet!domain!user in it
        if (hdr ~ "uunet!([a-zA-Z0-9.]+)!([a-zA-Z0-9.]+)" )
            # then convert !uunet!domainr!user to user@domain
            hdr = gsubstitute(hdr, "uunet!([a-zA-Z0-9.]+)!([a-zA-Z0-9.]+)", "\\2@\\1");

Subject: M32) I have  tcp installed yet i only want to do transfers over
uucp. How do i make the mailsurr file exclude the smtpqer delivery lines?

Comment out the smtpqer entries in the /usr/lib/mail/mailsurr.proto and
execute /usr/lib/mail/surrcmd/createSurr to eliminate the smtp delivery command.

Subject: M33) I'm sending to a SCO system over uucp which only understands
RFC822. The UnixWare mailsystem inserts an extra From line which upsets the SCO

(for UW1)

To have the From line stripped when sending mail via UUCP
an I=1; would need to be prepended to  the uux delivery command lines in the
mailsurr.proto file, otherwise the mail will bounce because of this
postmark line. Then execute /usr/lib/mail/surrcmd/createSurr to update the
/etc/mail/mailsurr file.

Subject: M34) Where are outgoing messages stored for smtp?

(for UW1)All outgoing mail messages for SMTP are located in /var/spool/smtpq
under the domain/host directories.

(for UW2) Mail msgs are now stored in /var/spool/mailq .

Subject: M35) Mail is bouncing back with problems about an invalid
From header line, what should I do?

(for UnixWare 2.0x)
Please apply patch tf2100.tar. This symptom is often seen
when communicating with Microsoft Mail or cc:Mail.

Subject: M36) After changing the system owner to another user and
deleting the original user, mail is still being sent to the original
system owner for example when a new package is installed,
and errors stating "unable to send to " appear after adding a package.

This is caused since the files

/var/sadm/install/admin/check and
/var/sadm/install/admin/default contain a line
"mail=username username2 etc.

These files do not get updated when some users are deleted from the system.
The fix is to manually take out the names of the non existing user
from the mail= line in /var/sadm/install/admin/check and

Subject: M37) Why when I send local mail does my PPP link get established, for
example when I pkgadd or pkgrm a package?

On UnixWare 2 this is triggered by the mailalias program.
There is a file in /etc/mail called lookupLibs (built from
/usr/lib/mail/lookupLibs.proto) that contains references to shared
libraries used to lookup aliases.  By default if you have DNS defined
in your mailflgs file, mailalias will connect to your name server to
ask it about aliases.  To work around this just comment out the <DNS> line
/usr/lib/mail/lookupLibs.proto and /etc/mail/lookupLibs.

Subject: M38) Is it possible to change the sender address with
mailsurr's translation facilities?  The man page indicates
that only the recipient address can be changed.
Am I going to have to move to sendmail?

For UnixWare 2.x we add functions to the file /etc/mail/rewrite
to rewrite mail headers.

Subject: M39) How do I setup a POP3 server on UnixWare ?

The POP server is included in UW2 in /usr/lib/mail/surrcmd/popper,
however there's a problem with truncation of the last mail
message with that version.

Either pick up tf2100 from

or get one of the freeware versions from|
in /pub/unixware/freebird/mailtools/popper  (source and binaries

To make operational, you need to do the following:

 (i) edit /etc/services, ensure there is an entry

pop3            110/tcp                         # Post Office

 (ii) edit /etc/inetd.conf, add an entry

 pop3   stream  tcp     nowait  root    /replace_with_Path_to_popper/popper             popper

 (iii) Restart inetd, by sending a kill -HUP to the inetd PID.

Subject: M40) I'm using UnixWare 1.x and  I can't find the createSurr command,
what should i do?

This occurs because you did not install the nuc package.

Subject: M41) How do I setup my mail to be autoanswered?

This is done by using the vacation command.
To setup the default autoanswering message just type


For example:

        $ vacation
        UX:vacation: INFO: Vacation notification installed
        UX:vacation: INFO: Logging will go to '/opt/lib/mserv/.maillog'
        UX:vacation: INFO: '/usr/share/lib/mail/std_vac_msg' will be used for the canned message

This will cause the system to send the following standard reply:

        Subject: AUTOANSWERED!!!

        I am on vacation. I will read (and answer if necessary)
        your e-mail message when I return.

        This message was generated automatically and you will
        receive it only once, although all messages you send
        me while I am away WILL be saved.

A list of senders is kept in the file $HOME/.maillog, and
incoming mail is kept in your normal mailbox by default,
since the UnixWare mailer keeps the forwarding information in
/var/mail/:forward and not in the mailbox file as in earlier SVR4.0 releases.

If you would prefer to customise the reply, prepare a message in a
file and then give the filename as an option to the vacation utility,
for example:

        vacation -M message

For example:
        $ vacation -M Msg
        Forwarding to |/usr/lib/mail/vacation2 -o %R -M Msg

For example the message might contain (Note: the ``From:'' line is the address
for folks to reply to -- this should be of the form username@domain_addr, this
may not be needed if your mail subsystem puts a From: line for you, there
should be an entry ADD_FROM=true in /etc/mail/mailcnfg if using the default
mailer [/bin/mail])

        Subject: AUTOANSWERED!!!
        From: (Postmaster)

        I am permanently on vacation. I will read (and answer if necessary)
        your e-mail message when and if  I return, and if I can be bothered.

        This message was generated automatically and you will
        receive it only once, although all the messages you send
        me while I am away WILL be saved.

        If your mail is really for the attention of somebody else, then why
        did n't you send it to them in the firstplace :-) Alternately try :-)

          -- The Postmaster

To  read your mail while vacation is in effect:

You can use your normal mail user agent (elm, mush, mailx or whatever),
since the UnixWare mailer keeps the forwarding information in
/var/mail/:forward and not in the mailbox file as in earlier SVR4.0 releases.

To remove the vacation facility:

        /bin/mail -F ""

        vacation -n

For example:
        $ /bin/mail -F ""
        UX:mail: INFO: Forwarding removed

Subject: M42) How do I setup my mail to be forwarded?

To forward all your mail to another person or another mailbox use
the following command :

To forward to a single person, e.g.

        /bin/mail -F andrew

To forward to more than one person use a quoted string:

        /bin/mail -F "andrew plord"

for example:

        $ /bin/mail -F "andrew plord"
        UX:mail: INFO: Installing forwarding to local address: andrew
        UX:mail: INFO: Installing forwarding to local address: plord
        UX:mail: INFO: Forwarding to andrew plord

It is also possible to combine a forward with the vacation programme:

for example

        $ vacation -M $HOME/.MSG -f andrew
        UX:vacation: INFO: Vacation notification installed
        UX:vacation: INFO: Logging will go to '/opt/lib/mserv/.maillog'
        UX:vacation: INFO: '/opt/lib/mserv/.MSG' will be used for the canned message

To confirm the forward is in effect, cat the :forward/user-id file:

        $ cat /var/mail/:forward/mserv
        Forward to andrew | C=0;S=2;F=*; /usr/lib/mail/vacation2 -o %R -M /opt/lib/mserv/.MSG

Note that you should not edit the /var/mail/:forward files directly
else they will loose the correct permissions and email delivery will

Subject: M43) How do I setup a mail-server?

The mail-server we use at is the Squirrel mail-server
version 3.01 . This is written by Johan Vromans and is mainly
written in perl.

A binary version ready for use with UW1.x or UW2 is on the
Freebird archive

The steps to install this are as follows:

Create an account mserv, with the home directory rooted in
/opt/lib/mserv.  We assume the mail-server archive tree is in
/home/mserv-archive, if its elsewhere make a symlink.

        useradd -s /usr/bin/ksh -d /opt/lib/mserv mserv
        (mkdir /opt/lib if it does not exist)
        cd /opt/lib
        zcat mserv.tar.Z|tar xvf -
        chown -R mserv mserv
        chown root mserv/listener

To run the mail-server, you need to install ALL the following packages:
utils/perl-4.0pl36.pkg.tar, archivers/gzip-1.2.4.pkg.tar,
utils/gnufind-3.7.pkg.tar.  All these packages are on the mail-server archive.

You also need to allow  the mserv account to use cron,
edit  /usr/lib/cron/cron.allow and add the mserv user.

To test prior to running out of cron, login as user mserv

        ./listener -noqueue

You can then type interactive requests

Once you are happy, edit the file


Place the files you want to serve in /home/mserv-archive,
run some of the indexing commands by hand


Then enable the crons

        crontab ctab

Next stage, enable in the mailsubsystem. This can be done
by editing /usr/lib/mail/mailsurr.proto and editing the following in
section 3 of the file after the ckbinarsys entry.

# mail-server, mailing lists and information distribution handling section
'.+'    'mail-server'   '<      /opt/lib/mserv/listener'

Then run /usr/lib/mail/surrcmd/createSurr -l on.

#       /etc/mail/extaliases

Then run /usr/lib/mail/surrcmd/createSurr -l on.

On the system that the mail-server runs I have a mailbox called
bit-bucket, which as long as it exists in /var/mail/bit-bucket
and is mode 660 owner mserv, group mail is used to catch
all admin mail.

System aliases are added a file in /etc/mail, /etc/mail/names

### Mailserver ###
# if you want mail to go to real people
#mserv          plord andrew
# else put it in a mailbox
mserv           bit-bucket

# various typos on mail-server
mailserv        mail-server
mailserver      mail-server
mail_server     mail-server
mail-serverl    mail-server
mail-serv       mail-server
mail-serve      mail-server
mail-sarver     mail-server
mailx-server    mail-server
mailer-server   mail-server
ftpmail         mail-server

# various strange things that requestors send, best to dump them in the
# bit-bucket mailbox

reply-address   bit-bucket
your-address-here       bit-bucket
your-mail-address-goes-here     bit-bucket
address-to-reply-to     bit-bucket
your-email-address      bit-bucket

File Permissions:

All files except listener can be owned by user mserv.
listener has to be owned by root and setuid.

Subject: M44) How do I  setup a mailing list - such as Listproc ?

A port of ListProcessor Version 6.0, Binary distribution for UnixWare
is available on

Please observe the copyright notice below:

ListProcessor version 6.0 by Anastasios Kotsikonas, Copyright (c) 1991-93.
Use, duplication or disclosure by the U.S. Federal Government is subject to the
restrictions set forth in FAR 52.227-19(c), Commercial Computer Software or,
for U.S. Department of Defense Users, by DFAR 252.227-7013(c)(1)(ii).

To make this work with the UnixWare mail subsystem (mailsurr), the
formail utility from procmail has been used as a front end to
the ListProcessor catmail utility, to edit the headers etc.

Installation instructions for this distribution

(1) Login as root

If you are running straight UnixWare 2.0 , 2.01 or 2.02
you need to apply a patch to the smtp subsystem.

The supported version can be obtained from

(2) Then install the listproc tools into /home/listserv as follows:

cd /home
zcat listproc.tar.Z|tar xvf -
useradd -d /home/listserv -s /usr/bin/ksh listserv
chown -R listserv listserv
vi /usr/lib/cron/cron.allow     append listserv to the end of this file

(3) Setup the mailaliases etc:

You need to add entries in the /etc/mail/mailsurr file
for your mailing lists. This can be done by editing the
file /usr/lib/mail/mailsurr.proto adding the lines below
(note xopen-testing is an example) and then running the

        /usr/lib/mail/surrcmd/createSurr -l on

#### Part 3
#### Delivery commands should go here.

# Check for binary mail. Uncomment this if you want to use it.
#'.+'   '!([^!]+)!.+'           '< F=*;C=0; /usr/lib/mail/surrcmd/ckbinarsys -t %C -s \\1'

# mailgate setup:
# mail-server, mailing lists and information distribution handling section
# admin requests
'.+'    'listproc'      '<S=0;      /home/listserv/catmail -r -f'
# mailing lists
'.+'    'xopen-testing'         '<S=0;F=1-255;C=*;  /home/listserv/catmail -L XOPEN-TESTING -f'

(4) Edit /etc/mail/namefiles and add:

This tells mailalias to look in this file for additional aliases.
Add the following to that list, change the name (andrew)
as appropriate

### Mailing Lists ###

# who is the overall admin for listproc
list-admin      andrew
# if you share this file on multiple machines enable the next line
# to get the mail to the right machine
#xopen-testing  lechladel!xopen-testing
xopen-testing-request   listproc

(5) Login as user listserv:

Edit the config file and change values in there as appropriate for
your configuration.

The organization line needs changing, as do the lists that
you define. In this example a list xopen-testing is shown.
This list requires all subscription requests to be approved
by the list owner.

Also in this example the lists are running on a machine called
lechlade, you want to change all email addresses to be those
of your mail domain.

Check out the documentation in the doc directory.

Lastly when you are ready and feel you have an understanding,
install a crontab entry .

Install a cron file to start the server:
        crontab crontab

This will start the server.

To test, send some mail to listproc, and also to xopen-testing.
It takes a while for the listproc to awake the first time, since
its only started on the hour, once awake the daemon keeps running.
Edit the crontab to start the daemon sooner.

To see where incoming requests go, if you configured the mailer
correctly, check the file /home/listserv/requests.

xopen-testing should say you are not subscribed, you can then
resend and subscribe. Check both the admin mail box and the

Look at help/general and change the first line as required.

To add new lists you have to create a set of files in /home/listserv/lists
in a subdirectory as well as editing /home/listserv/config.
Check out the doc directory.

File & Directory Perms in /home/listserv

A couple of utilities have to be setuid listserv - see below:

total 4032
drwxr-xr-x    2 listserv other         96 Apr 12 14:56 News
drwx------    3 listserv other         96 Apr 12 14:56 arc
drwx------    5 listserv tech          96 Apr 12 14:55 archives
-rw-------    1 listserv tech           0 Jan 18  1994 batch
drwxr-xr-x    2 listserv other         96 Apr 12 14:56 bin
-rwsr-xr-x    1 listserv other         86 Apr 17 09:10 catmail
-rwsr-xr-x    1 listserv other     155400 Jan 26  1994 catmail.prog
-rw-------    1 listserv tech        6745 Feb 14 19:12 config
-rw-r--r--    1 listserv other         57 Feb 10  1994 crontab
drwx------    2 listserv tech        1024 Apr 12 14:55 doc
-rwx------    1 listserv other     175732 Jan 26  1994 farch
-rw-------    1 listserv tech          84 Jan 18  1994 flocks
-rwx------    1 listserv other      15208 Jan 26  1994 fwin
drwxr-xr-x    2 listserv tech          96 Apr 12 14:56 gateway
drwx------    2 listserv tech        1024 Apr 12 14:56 help
-rwxr-xr-x    1 listserv other      13892 Jan 26  1994 ilp
-rwx------    1 listserv other     321880 Jan 26  1994 list
-rwx------    1 listserv other     424760 Jan 26  1994 listproc
drwx------   11 listserv tech        1024 Apr 12 14:55 lists
-rwxr-xr-x    1 listserv other      45208 Jan 18  1994 make
-rw-r--r--    1 listserv tech         546 Jan 18  1994 makefile
drwxr-xr-x    4 listserv other         96 Apr 12 14:56 man
-rw-------    1 listserv other     251796 Jul  6 08:16 mbox
drwx------    2 listserv tech        1024 Jul 10 18:57 mqueue
-rwx------    1 listserv tech        1986 Jan 18  1994 news
-rw-------    1 listserv tech         892 Jul  5 10:18 owners
-rwx------    1 listserv tech        1888 Jan 18  1994 peer
-rwx------    1 listserv other     216956 Jan 26  1994 pqueue
-rwx------    1 listserv tech        1201 Jan 18  1994 queued
-rwxr-xr-x    1 listserv other        501 Jan 20  1994 rcp
-rw-------    1 listserv other         57 Jul  6 08:16 received
-rwx------    1 listserv tech         502 Jan 18  1994 redux
-rw-------    1 listserv other          0 Jul  6 08:16 requests
-rwx------    1 listserv other       4808 Jan 26  1994 rev
-rwxr-xr-x    1 listserv other       7420 Jan 26  1994 semset
-rw-------    1 listserv other          6 Jul  6 08:16 sent
-rwxr-xr-x    1 listserv other     172072 Jan 26  1994 serverd
-rwx------    1 listserv tech        6931 Jan 20  1994 setup
-rwx------    1 listserv other     169264 Jan 26  1994 start
-rwx------    1 listserv tech       23389 Jan 18  1994 systest
-rwx------    1 listserv other      22312 Jan 26  1994 tlock
-rwx------    1 listserv tech         133 Jan 18  1994 ulock
-rw-------    1 listserv tech         700 Jan 18  1994 unwanted.hosts
drwxr-xr-x    2 listserv tech        1024 Apr 12 14:56 util
-rw-r--r--    1 listserv tech         591 Jan 18  1994

Subject: M45) How do I  make sendmail the default mailer?

Note that this is for the default sendmail included with the base
system and is not for the Sendmail package included with the
Free UW212 IFS - please check with SCO for how to configure that.

On UnixWare 2:

(Step 1). rename /etc/rc2.d/S81smtp to /etc/rc2.d/s81stmp
(Step 2).  Start sendmail in /etc/inet/config. Like this:

# The next line can be read:
# If field 3 is a Y and /usr/sbin/in.gated was not run, then run
# /usr/sbin/in.routed -q
###4c:/usr/sbin/route::n::add default router_placeholder 1
7:/usr/bin/sh::y:/etc/inet/rc.inet:/etc/inet/rc.inet start:
4c:/usr/sbin/route::y::add default 1:
## added by JRD
8:/usr/ucblib/sendmail::y:/usr/ucblib/ -q24h:

(Step 3). copy the /etc/ucbmail/mailsurr file over the /etc/mail/mailsurr file.

Note that you should also check the mailtools/sendmail directory
on the ftp archive since  there is a binary pkgadd
version of sendmail there which does the setup automagically.

Subject: M46) Mail of the address format @mylocal.domain:user@mylocal.domain
              is not delivered locally, how can I fix this?

You need to add a line to /usr/lib/mail/mailsurr.proto
as follows:

After the uucollapse line add:

'.+'    '@(%DNODOT)[:,](.+)'               'Translate R=\\2'
'.+'    '@(%L%D)[:,](.+)'               'Translate R=\\2'
'.+'    '@(%U)[:,](.+)'         'Translate R=\\2'

Then run

        /etc/rc2.d/S81smtp stop
        /etc/rc2.d/S81smtp start

Subject: M47) dtmail won't restart after my machine was switched off.

One of our machines was switched off with a dtmail session active
and when restarted wont let the user back into mail, saying the mail
is already being read - any ideas?

Check /var/mail/:readlock for a file as in username.lock

Try removing that file. If that does not work and you can't get
in (due to a kernel lock) move the mailbox in /var/mail aside
and rename it, then copy it back to the original name (has to be
done quickly:-)

Subject: M48) Inbound mail is addressed to
     and does not get delivered to the local user.

Our  Internet provider is Demon, and we are using the mail forwarding service.
This allows use of, rather than the usual

The problem :-

The "RCPT TO:" line when receiving mail reads ( As seen in the osm log )


Instead of the mail being delivered to the user, it goes to root.  This is the
same for any user.  Outgoing mail is fine.

To fix:  edit the /usr/lib/mail/mailsurr.proto file and
try the following:

{after uucollapse }; add

# Strip off local routes to domain, local.domain, uname, uname.alternate
'.+'     '@(%DNODOT)[:,](.+)'     'Translate R=\\2'
'.+'     '@(%L%D)[:,](.+)'     'Translate R=\\2'
'.+'     '@(%U)[:,](.+)'     'Translate R=\\2'
# put our alternate domain here
'.+'     '@([:,](.+)'     'Translate R=\\2'

Subject: M49) I'm using PPP but don't have the interface up when the system
    creates the mailsurr file, and thus it does not detect my IP
    link - what can I do?

Bob Stewart writes:

If your only networking connection is via ppp, you will have to make
a change to /usr/lib/mail/surrcmd/configCheck if you want to use smtp
to send your mail.  Look for the section entitled "Check if IP is up
and running".  Add the following line immediately after the check to
just force IP as the mail transport:

$flaglist{IP} = 1;

Reboot your system, or alternately as root, type

        sh /etc/rc2.d/S81smtp stop
        sh /etc/rc2.d/S81smtp start

and verify that IP preceeds UUCP in /etc/mail/mailflgs.

Subject: M50) How can I set mailalias in the form : user@site  maps to
    local user?

I run multiple domains in my server and I want to map

        "" to a user "andy"
        "" to a user "ron".

How should I do this?
Set up the mailsurr file in the following way...

Robert A Heller writes:

We have a script in /etc/mail/vdom that takes two command line
parameters as:

/etc/mail/vdom username domain

If the 'user' is one of a common set between domains like, info,
accounts, sales, webmaster etc (create your own list), it appends
an index number to the user name.

For example, sending to will result in mail
calling vdom as /etc/mail/vdom info

vdom will find the index number for (say 20) and it
will then print on the standard output info20, which is returned
to the mail delivery system.

The mailsurr file is modified with an entry like:

'.+'    '([^@]+)@(.*'       'Translate T=1; R=|/etc/mail/vdom \\1 \\2'

somewhere before 'local' mail delivery.

If the username is not one of the 'common' names, but rather a real e-mail
at that address it simply puts the real name on the output.

Therefore, if michael is a real user at but owns the
virtual domain, mail program will...

/etc/mail/vdom michael

and the output returned to the mail program for further processing
will simply be 'michael'.

'.+'    '([^@]+)@([^@]+)('  'Translate T=1; R=|/etc/mail/vdom \\1 \\2'
does not work.

Here are our samples:

<ACCDOM>        '.+'    '([^@]+)@%{DNODOT}'             'Translate R=\\1'

# This is to weed out any addresses of the form

'.+'    '([^@]+)@(.*'             'Translate T=1; R=\\1'
'.+'    '([^@]+)@(.*'         'Translate T=1; R=\\1'

# Virtual domains hosted by this server

'.+'    '([^@]+)@(.*'  'Translate T=1; R=|/etc/mail/vdom \\1 \\2'
'.+'    '([^@]+)@(.*'   'Translate T=1; R=|/etc/mail/vdom \\1 \\2'
'.+'    '([^@]+)@(.*'      'Translate T=1; R=|/etc/mail/vdom \\1 \\2'

#       COUNTER 23
case $vdomain in
        *      no=1;;
        *       no=2;;
        *          no=21;;
        *)      no=;;

case $1 in
        admin | info | sales | support | accounts | accounting | webmaster | director | orders ) user=$1$no;;
        *)      user=$1;;

printf $user

Subject: M51) What is the /etc/mail/smtpcnfg file in tf2100/UW2.1?

This file is read when smtp is started.

It contains fields of the format

The default file with UW212 looks like

TIMEOUT=3 days
LOG_MASK=incoming, outgoing, errors

MX_FIRST=yes : means smtp attempts delivery to a hosts
specified Mail Exchanger record (MX DNS record) rather than the
delivering directly to the host IP address. If set to no,
then it attempts delivery directly to the host IP address and
then any MX hosts if specified.

USE_LOG_FILES=yes : whether to log to /var/spool/mailq/Logs. If no
value is given this defaults to yes.

USE_WRAPPERS=no : whether to check to access using the /etc/hosts.allow
file (as in the tcp wrappers package). I've not been able to convince
myself that this works at the moment.

USE_OSM=no : whether to direct log messages to syslog (osmlog). If
yes these can be viewed using the Message_monitor GUI tool, or syslogd
can direct them to log files.

TIMEOUT=3 days : the time from original delivery attempt before the
mail is returned to the sender as being undeliverable. If a value of
"-1" is given the attempts continue indefinitely. An example of
7 days timeout can also be specified as "TIMEOUT=1 week".

LOG_MASK=incoming, outgoing, errors : what events to be logged.
Other classes to be logged are:  "queued" - log info on msgs
placed on queues; "debug" - log debug info; "connection" - log
info on connections; "recipients" - log info about recipients.
Its possible to switch all this off with the value "nothing"
or to switch all logging on with "everything".

Subject: M52) How should I setup Mail via PPP?

Let's assume firstly that you have a PPP link up and working
and that tcp/ip services between your host and your ISP have
been established.

Lets also assume that you can obtain the Email FAQ  from
since that explains the email subsystem in greater depth than here.

There are various scenarios:

        (1) You have your own domain name, for example and your ISP initiates an smtp
        transfer to your host when you start a ppp session
        (this is how demon work in the UK)

You need to establish your DOMAIN name for email. This can be
done by using the Mail_setup GUI tool or by editing(or creating)
the file: /etc/mail/mailcnfg

The mailcnfg file I use at home is

By setting outbound mail from my home machine tamarix
has the From: line set to

Since you are at home you  want to try and do all mail processing
while offline - hence the use of a SMARTERHOST, whose IP address
should be added to your /etc/hosts file so as not to require
an MX lookup when sending mail (see smtpqer line later)

You also want to edit the file /usr/lib/mail/lookupLibs.proto
and comment out some lines in there so as to reduce DNS lookups.

<DNS>   #/usr/lib/mail/libalias/
<NIS>   #/usr/lib/mail/libalias/
<MHS>   #/usr/lib/mail/libalias/

This proto file ends up creating the file /etc/mail/lookupLibs ,
(after running the /usr/lib/mail/surrcmd/createSurr command - ran
out of /etc/rc2.d/S81smtp).

The /etc/mail/mailsurr file is the key file for determining how
mail gets delivered, I customize this file and then make it permanent -
after all once you've set it up why let createSurr keep rewriting it!

A fixed mailsurr file appropriate for PPP can be
obtained from:

        (2) You have a POP mailbox on the ISP server, and your
        mail account is username@your_isp_address.dom. You'll need
        to use a POP client or equivalent to get the mail onto
        your local machine. You'll then need to reply using mail on
        the local machine and want to ensure that the mail headers
        look like mail is being sent from the ISP machine.

In this case your mailbox is held on the ISP's machine and they
have a POP server.  You need a popclient to retrieve the mail from
the server onto your local machine. A version of the Mail Users Shell
(Mush) is available on
that can be used. There has also been a tool posted in this group
that will retrieve the mailbox from your ISP into the local machine,
in which case you can then use your favourite mail user agent to read it
(i don't have a copy off-hand).

POP allows you to retrieve mail but most servers don't allow you
to send mail. You can use smtp to send mail from your local machine
using the above configuration with one exception, you need to
rewrite the From: line for outbound mail to hide your nodename
(so in my case, mail would appear to come from and

This can be done by editing the file /etc/mail/rewrite
and adding the routine (this will need editing for your

function check_headers()
var hdr;
# loop through ALL headers
for (hdr from headers_pattern("From:"))
   # if we match a header that has something like in it
   if (hdr ~ "[a-zA-Z]\\.demon\\.co\\.uk")
     # then substitute the shorter version in its place
     hdr=gsubstitute(hdr, "[a-zA-Z0-9.]+\\.demon\\.co\\.\\uk", "");

Add a call to this in the function main() in /etc/mail/rewrite, so this
looks like:

function main()

        (3) When sending mail you'll want to consider whether you
        want to relay mail via a SMARTERHOST (recommended), usually
        your ISP or whether you want to send the mail directly
        across the internet to the remote recipient

In the mailsurr example above, I've assumed that this is what you'd
want to do. And in most cases this makes sense, since that way
you can let your ISP handle the routing and delivery issues.
For those odd occasions when you want to get mail somewhere quickly
or directly i use an i: prefix to say internet directly which you
may or may not find particularly useful.

        (4) Perhaps you have two PPP links in different domains (like
        my home box), and can switch between them. You want to receive mail
        to both domain addresses - this requires some level of customization

I have some scripts (written by Mike Convey) to swap between my ISP
and my work PPP links.  At home my machine is known as tamarix, at work
its known as voyager (now if i'd kept the names the same i would
not need this!).

When I send email i keep the
domain in there, but occasionally i want to forward mail over the work
link to my machine. In this case I have to add a line to the mailsurr
file so that it recognises the mail as local, otherwise it sends
it off to the SMARTERHOST

The trick is to add another delivery line to translate the mail
for local delivery, and add your alternate nodename in there

'.+'    '([^@]+)@(voyager)%D'           'Translate R=\\1'

The %D is needed since the inbound smtp adds the Domain info.

        (5) Perhaps your ISP relays mail to you over uucp over TCP/IP,
        perhaps by a mail forward? What then?

For incoming mail this is not a problem, and you can still send
mail outwards using smtp.

I'm sure there are other configurations not covered here, hopefully
this will be useful to some folks!

Subject: M53) How can I setup mail to handle virtual hosts's mail?

How do I handle virtual hosts' mail with mailsurr ?

Example: have machine 
have virtual machines 
I want to have server handle mail for

One way to handle this is to add explicit rules on the mailsurr.proto
file as follows:

Add this in just before the area where it deals with supposedly local names.

# Map all names addressed to to appropriate users.
'.+'    '(sales)@('                  'Translate T=1; R=ron'
'.+'    '(sales)@('    'Translate T=1; R=andy'
'.+'    '(sales)@('       'Translate T=1; R=linda'
'.+'    '(sales)@('                    'Translate T=1; R=bob'

In the above, all the R=names are local users or aliases (if they
are not local you can alias them to the real addresses).

Subject: M54) I need to print all incoming mail as well as send it to
   local users.

# Add this before any address translations to mailsurr.proto
#    Send all incomming mail to printer and to user.
#    Do a C=* so mail is sent to the user also.
'.+'    '([^@]+)@('                '< C=*; lp      -dtest'

Subject: M55) Mail loops - its forwarded by my provider but then goes into a loop - any ideas?

This usually occurs when the /etc/mail/mailsurr file is not
pattern matching a delivery line, specifically a line to translate the
address to a local address for delivery.

Examine the log file  in /var/mail/:log , look at the To
address of the bounced message. If its of the form

See M48.
Else check that your DOMAIN is defined in /etc/mail/mailcnfg and that any customisations
to /etc/mail/mailsurr have been done.

Subject: M56) Mail delivery does not seem to be case insensitive - any ideas?

Problem: Any mail that is received with a capitol letter in the
recipient field is returned to the originator.  Meaning, if you compose
mail to AUser@mydom,net, it will not get to me. Instead an
ambiguous/invalid recipient error is generated.

The problem occurs since the mailalias call with the mailsurr sees the
address with a domain still attached.  Translation to lower case is
handled by the mailalias line within /etc/mail/mailsurr, in this case
the mailalias call leaves this alone as its not local, and a later line
attempts local delivery. The fix is to add another mailalias call
by duplicating the existing line.


Many thanks to the following for feedback and comments on various
drafts of this FAQ: Steve Wootton, Pete Holsberg, Michael Tiernan,
Bob Stewart, Dan Daggett.

Andrew Josey,  Disclaimer: Any views expressed are not those of
my employer, either past, present or future.

User Contributions:

Comment about this article, ask questions, or add new information about this topic:


Top Document: UnixWare Frequently Asked Questions (The Email system)
Previous Document: News Headers

Single Page

[ Usenet FAQs | Web FAQs | Documents | RFC Index ]

Send corrections/additions to the FAQ Maintainer: (Andrew Josey)

Last Update March 27 2014 @ 02:12 PM