.\" @(#)$Id: ADMIN.rf,v 2.16 1992/05/19 21:48:37 jromine Exp $
.de $c \" Major Heading printer
.b "\\s12\\n+(ch.\\ \\$1\\s0" \" 12 Point Bold Header
.sp 45p \" 45 point space or about 1/2 inch
\".nr xs .15v \" Put index entries closer together
.de $0 \" Sub-Heading macro called AFTER printing the heading
.de $s \" Macro to print footnote separator
\"\l'2i' \" No line drawn
. sp 1.3 \" But extra space to make up for it.
.fc ^ ~ \" The characters ^ and ~ CANNOT BE USED
\" throughout this document except as field
\" delimiter & pad indicator!
.ll 32P \" 32 Picas or about 5+1/3 inch Line Length
.if n .ll 72m \" Use 72 ems for nroff
.nr ss 30p \" 30 point space before section titles
.nr fm 5v \" RAND likes bigger than normal [3v] bottom margins
.ds . \\fB.\\fP\\h'-(1m/3)' \" Bold period to stand out.
.ds << <\\h!-(\\w'<'/2)!<
.ds >> >\\h!-(\\w'>'/2)!>
.ds ** \v'-3p'\s+1*\s0\v'+3p'
.uh "Scope of this document"
This is the Administrator's Guide to \fIMH\fR.
If you don't maintain an \fIMH\fR system,
the information is entirely too technical.
then read this guide until you understand it,
follow the advice it gives,
and then forget about the guide.
Before continuing, I'll point out two facts:
\fIThis document will never contain all the information
Furthermore, this document will never contain everything
I know about maintaining MH.\fR
and mailsystems in general,
are more complex than most people realize.
A combination of experience, intuition, and tenacity is required to maintain
This document can provide only guidelines for bringing up an \fIMH\fR system
There is a sufficient amount of customization possible that not all events or
During \fIMH\fR generation,
you specify several configuration constants to the \fImhconfig\fR program.
These directives take into consideration such issues as hardware and
operating system dependencies in the source code.
They also factor out some major mailsystem administrative decisions
that are likely to be made consistantly at sites with more than one host.
The manual entry \fImh\-gen\fR\0(8) describes all the static configuration
when you install \fIMH\fR you may wish to make some site\-specific
or host\-specific changes which aren't hardware or even software related.
Rather, they are administrative decisions.
That's what this guide is for: it describes all of the dynamically tailorable
Usually, after installing \fIMH\fR, you'll want to edit the
\fB@(MHETCPATH)/mtstailor\fR file.
This file fine-tunes the way \fIMH\fR interacts with the message transport
Section 2 talks about the MTS interface and MTS tailoring.
After that, if you're running the UCI BBoards facility,
you'll need to know how to maintain those systems.
Sections 3 and 4 talk about these.
you're not running an MTS that can handle both Internet and \fIUUCP\fR traffic,
you should read\-up on mail filtering in Section 5.
Although this is considered \*(lqold technology\*(rq now,
the mechanisms described in Section 5 were really quite useful when
first introduced way back in 1981.
Finally, you may want to know how to modify the \fIMH\fR source tree.
Section 6 talks (a little bit) about that.
The last two sections describe a few hidden features in \fIMH\fR,
and the configuration options that were in effect when this guide was
After \fIMH\fR is installed, you should define the address \*(lqBug\-MH\*(rq
to map to either you or the \fIPostMaster\fR at your site.
if you want to tailor the behavior of \fIMH\fR for new users,
you can create and edit the file \fB@(MHETCPATH)/mh.profile\fR.
When the \fIinstall-mh\fR program is run for a user,
if this file exists, it will copy it into the user's \&.mh\(ruprofile
.\" macros for the .me/.man files
.he '\\$1(\\$2)'-%-'\\$1(\\$2)'
.b "\\s-2Helpful Hints\\s0"
.ta \w'@(MHETCPATH)/ExtraBigFileName 'u
.ta \w'ExtraBigProfileName 'u
.b "\\s-2Profile Components\\s0"
The file \fB@(MHETCPATH)/mtstailor\fR customizes
certain host\-specific parameters of \fIMH\fR
related primarily to interactions with the transport system.
The parameters in this file override the compiled\-in defaults given during
Rather than recompiling \fIMH\fR on each host to make minor customizations,
it is easier simply to modify the \fBmtstailor\fR file.
All hosts at a given site normally use the same \fBmtstailor\fR file,
though this need not be the case.
It is a good idea to run the \fIconflict\fR\0(8) program each morning
The following line usually suffices:
00 05 * * * @(MHETCPATH)/conflict -mail PostMaster
.fo '@(MHLEFTFOOT)'@(MHCENTERFOOT)'UCI version'
The UCI BBoards facility has two aspects: message reading, and
message delivery. The configuration directives applicable to
BBoards are \*(lqbboards: on/off/pop/nntp\*(rq and
\*(lqbbdelivery: on/off\*(rq.
If you enabled BBoards delivery (\*(lqbbdelivery: on\*(rq)
then the initial environment for bboards delivery
was set\-up during installation.
A BBoard called \*(lqsystem\*(rq is established,
which is the BBoard for general discussion.
To add more BBoards, become the \*(lqbboards\*(rq user,
and edit the \fB@(BBHOME)/BBoards\fR file.
The file \fBsupport/bboards/Example\fR is a copy of the
\fB@(BBHOME)/BBoards\fR file that we use at UCI.
you don't have to create the files associated with it,
the BBoards delivery system will do that automatically.
Private BBoards may be created.
To add the fictitious private BBoard \*(lqhacks\*(rq,
add the appropriate entry to the BBoards file,
create the empty file \fB@(BBHOME)/hacks.mbox\fR (or whatever),
change the mode of this file to 0640,
and change the group of the file to be the groupid of the people that you
want to be able to read it.
Also be sure to add the \*(lqbboards\*(rq user to this group
so the archives can be owned correctly.
By using the special INVIS flag for a BBoard,
special purpose BBoards may be set\-up which are invisible to the \fIMH\fR
if a site distributes a BBoard both locally to a number of machines and to a
number of distant machines.
It might be useful to have two distribution lists:
one for all machines on the list, and the other for local machines only.
This is actually very simple to do.
put the standard entry of information in the \fB@(BBHOME)/BBoards\fR file,
with the complete distribution list.
For the local machines list,
and add a similar entry to the \fB@(BBHOME)/BBoards\fR file.
All the fields should be the same except three:
the BBoard name should reflect a local designation (e.g., \*(lql\-hacks\*(rq),
the distribution list should contain only machines at the local site,
and the flags field should contain the INVIS flag.
Since the two entries share the same primary and archive files,
messages sent to either list are read by local users,
while only thoses messages sent to the main list are read by all users.
Two automatic facilities for dealing with BBoards exist:
automatic archiving and automatic aliasing.
The file \fBsupport/bboards/crontab\fR contains some entries that you
should add to your \fB/usr/lib/crontab\fR file to run the specified programs
at times that are convenient for you.
The \fBbboards.daily\fR file is run once a day and generates an alias file
By using this file, users of \fIMH\fR can use, for example,
\*(lqunix\-wizards\*(rq instead of \*(lqunix\-wizards@brl\-vgr\*(rq
when they want to send a message to the \*(lqunix\-wizards\*(rq
This is a major win, since you just have to know the name of the group,
not the address where it's located.
The \fBbboards.weekly\fR file is run once a week and handles old
messages (those received more than 12 days ago) in the BBoards area.
those BBoards which are marked for automatic archiving
will have their old messages placed in the \fB@(BBHOME)/archive/\fR area,
or have their old messages removed.
Not only does this make BBoards faster to read,
but it conveniently partitions the new messages from the old messages
so you can easily put the old messages on tape and then remove them.
It turns out that this automatic archiving capability is also a major
our policy is to save archived messages on tape (every two months or so).
We use a program called \fIbbtar\fR to implement our particular policy.
Since some BBoards are private (see above),
we save the archives on two tapes:
one containing the world\-readable archives
(this tape is read-only accessible to all users by calling the operator),
and the other containing the non\-world\-readable ones
(this tape is kept locked\-up somewhere).
.uh "BBoards with the POP"
If you configured \fIMH\fP with \*(lqbboards: pop\*(rq and \*(lqpop: on\*(rq,
then the \fIMH\fR user is allowed to read BBoards on a server machine
instead of the local host (thus saving disk space).
For completely transparent behavior,
the administrator may set certain variables in the \fBmtstailor\fR file
The variable \*(lqpopbbhost\*(rq indicates the host where BBoards are
(it doesn't have to be the POP service host,
but this host must run both a POP server and the BBoards system).
The variable \*(lqpopbbuser\*(rq indicates the guest account on this host
This username should not be either the POP user or the BBoards user.
Usually the anonymous FTP user (ftp) is the best choice.
Finally, the variable \*(lqpopbblist\*(rq indicates the name of a file which
contains a list of hosts (one to a line, official host names only) which
should be allowed to use the POP facility to access BBoards via the guest
(If the file is not present, then no check is made.)
The \*(lqpopbbuser\*(rq variable should be set on both the client and service
The \*(lqpopbbhost\*(rq variable need be set only on the client host
(the value, of course, is the name of the service host).
The \*(lqpopbblist\*(rq variable need be set only on the service host.
if a POP service host is not explicitly given by the user
(i.e., \*(lqpopbbhost\*(rq is implicitly used),
then \fIbbc\fR will explicitly check the local host prior to contacting
This allows each POP client host to have a few local BBoards
(e.g., each host could have one called \*(lqsystem\*(rq),
and then have the POP service host used for all the rest
(a site\-wide BBoard might be known as \*(lqgeneral\*(rq).
.uh "BBoards with the NNTP"
If you configured \fIMH\fP with \*(lqbboards: nntp\*(rq and \*(lqpop: on\*(rq,
the \fIMH\fR user is allowed to read the Network News on a
server machine using the standard \fIbbc\fR command.
For completely transparent behavior,
the administrator may set the \*(lqnntphost\*(rq variable in the
\fBmtstailor\fR file to indicate the host where the Network News is kept.
The \*(lqnntphost\*(rq variable should be set only on the client host
if an NNTP service host is not explicitly given by the user
(i.e., \*(lqnntphost\*(rq is implicitly used),
then \fIbbc\fR will explicitly check the local host prior to contacting
This allows each NNTP client host to have a few local BBoards
(e.g., each host could have one called \*(lqsystem\*(rq),
and then have the NNTP service host used for to read the Network News.
Reading BBoards via the POP and via the NNTP are mutually exclusive.
.fo '@(MHLEFTFOOT)'@(MHCENTERFOOT)'UCI version'
For POP (Post Office Protocol) client hosts,
you need to edit the \fB@(MHETCPATH)/mtstailor\fR file to know about two
the SMTP service host and the POP service host.
Normally, these are the same.
Change the \*(lqlocalname\*(rq field of the \fBmtstailor\fR file
of \fIMH\fR in the file to be the name of the POP service host.
This makes replies to mail generated on the POP client host possible,
since \fIMH\fR will consider use the hostname of the POP service host as the
local hostname for outgoing mail.
Also set the value of \*(lqpophost\*(rq to this value.
This tells \fIinc\fR and \fImsgchk\fR to use POP instead of looking for mail
make sure the value of \*(lqservers\*(rq includes the name of the SMTP
The recommended value for \*(lqservers\*(rq is:
servers:\ SMTP\-service\-host localhost \\01localnet
If you want more information on the Post Office Protocol used by \fIMH\fR,
consult the files \fBsupport/pop/rfc1081.txt\fP and
\fBsupport/pop/rfc1082.txt\fP which describe the \fIMH\fP version of
you need to run a daemon, \fIpopd\fR\0(8).
The daemon should start at multi\-user boot time,
if [ \-f /etc/popd ]; then
/etc/popd & echo \-n ' pop' >/dev/console
to the \fB/etc/rc.local\fR file is sufficient.
The port assigned to the POP3 protocol is \*(lq110\*(rq.
For historical reasons, many sites are using port \*(lq109\*(rq
which is the port assigned to the \*(lqPOP\*(rq (version 1 and 2) protocol.
The configuration option \*(lqPOPSERVICE\*(rq is the name of the
port number that \fIMH\fP POP will try to use, and defaults to the
To generate \fIMH\fP to use newer assigned port number,
in your \fIMH\fP config file, add:
options POPSERVICE='\*(lqpop3\*(rq'
And on both the POP client and service hosts,
you need to define the port that the POP service uses.
to the \fB/etc/services\fR file (if it's not already there).
There are two ways to administer POP:
each user-id in the \fIpasswd\fR\0(5) file is considered a POP subscriber.
No changes are required for the mailsystem on the POP service host.
this method requires that each POP subscriber have an entry in the password
The POP server will fetch the user's mail from wherever maildrops are kept on
This means that if maildrops are kept in the user's home directory,
then each POP subscriber must have a home directory.
(enabled via \*(lqDPOP\*(rq being given as a configuration option),
the list of POP subscribers and the list of
login users are completely separate name spaces.
A separate database (simple file similar to the \fIBBoards\fR\0(5) file)
is used to record information about each POP subscriber.
the local mailsystem must be changed to reflect this.
This requires two changes (both of which are simple):
the aliasing mechanism is augmented so that POP subscriber addresses
are diverted to a special delivery mechanism.
\fIMH\fR comes with a program, \fIpopaka\fR\0(8),
which generates the additional information to be put in the mailsystem's
a special POP channel (for MMDF-II) or POP mailer (for SendMail)
performs the actual delivery (\fImh.6\fR supplies both).
All it really does is just place the mail in the POP spool area.
These two different philosophies are not compatible on the same POP service
host: one or the other, but not both may be run.
Clever mailsystem people will note that
the POP mechanism is really a special case of the more general
In addition, there is one user-visible difference,
which the administrator controls the availability of.
The difference is whether the POP subscriber must supply a password to the POP
The first method uses the standard ARPA technique of sending a username and a
The appropriate programs (\fIinc\fR, \fImsgchk\fR, and possibly \fIbbc\fR\0)
will prompt the user for this information.
(which is enabled via \*(lqRPOP\*(rq being given as a configuration option)
uses the Berkeley UNIX reserved port method for authentication.
This requires that the two or three mentioned above programs be
(There are no known holes in any of these programs.)
for the first method, one simply follows the usual procedures for adding a
new user, which eventually results in adding a line to the \fIpasswd\fR\0(5)
for the second method, one must edit the POP database file
(kept in the home directory of the POP user),
and then run the \fIpopaka\fR program.
The output of this program is placed in the aliases file for the transport
system (e.g., \fB/usr/lib/aliases\fR for SendMail).
Authentication for POP subscribers differs
depending on the two methods.
When the user supplies a password for the POP session:
the contents of the password field for the user's entry in the
\fIpasswd\fR\0(5) is consulted;
the contents of the password field for the subscriber's entry in the
\fIpop\fR\0(5) file is consulted.
(To set this field, the \fIpopwrd\fR\0(8) program is used.)
If you are allowing RPOP,
the user's \fI\&.rhosts\fR file is consulted;
the contents of the network address field for the subscriber's entry
in the \fIpop\fR\0(5) file is consulted.
a third authentication scheme is available.
When the APOP configuration option is given,
options APOP='\*(lq/etc/pop.auth\*(rq'
the server also allows a client to supply authentication
credentials to provide for origin authentication and reply protection,
but which do not involve sending a password in the clear over the network.
having as its name the value of APOP configuration option,
is used to keep track of this information.
This file is created and manipulated by the \fIpopauth\fR\0(8) program.
Because this file contains secret information,
it must be protected mode 0600 and owned by the super-user.
your first step after installing the software is to issue
which creates and initalizes the POP authorization DB.
.fo '@(MHLEFTFOOT)'@(MHCENTERFOOT)'UCI version'
There was a time when users on a UNIX host might have had two maildrops:
one from \fIMMDF\fR and the other from \fIUUCP\fR.
This was really a bad problem since it prevented using a single
user\-interface on all of your mail.
if you wanted to send a message to addresses on different mailsystems,
you couldn't send just one message.
To solve all these problems,
the notion of \fImail filtering\fR was developed that allowed sophisticated
munging and relaying between the two pseudo\-domains.
\fIMH\fR will perform mail filtering, transparently, if given the MF
with the advent of \fISendMail\fR and further maturation of \fIMMDF\fR,
\fIMH\fR doesn't really need to do this anymore,
since these message transport agents handle it.
The mail\-filtering stuff is too complicated.
It should be simpler, but, protocol translation really \fIis\fR difficult.
.fo '@(MHLEFTFOOT)'@(MHCENTERFOOT)'UCI version'
Finally, here's a little information on modifying the \fIMH\fR sources.
A word of advice however:
If you really want new \fIMH\fR capabilities,
write a shell script instead.
that's what UNIX is all about, isn't it?
Here's the organization of the \fIMH\fR source tree.
.ta \w'miscellany/ 'u +\w'sendmail/ 'u
config/ compiled configuration constants
miscellany/ various sundries
papers/ papers about \fIMH\fR
support/ support programs and files
bboards/ UCI BBoards facility
tma/ Trusted Mail Agent (not present in all distributions)
zotnet/ MTS\-independent areas
bboards/ UCI BBoards facility
.fo '@(MHLEFTFOOT)'@(MHCENTERFOOT)'UCI version'
The capabilities discussed here should not be used on a production basis,
as they are either experimental, are useful for debugging \fIMH\fR, or
are otherwise not recommended.
The \fImark\fR command has a `\-debug' switch which essentially prints out
all the internal \fIMH\fR data structures for the folder you're looking at.
The \fIpost\fR command has a `\-debug' switch which does everything but
actually post the message for you.
Instead of posting the draft, it sends it to the standard output.
\fIsend\fR has a `\-debug' switch which gets passed to \fIpost\fR.
Some \fIMH\fR commands look at envariables to determine debug\-mode operation
of certain new facilities.
The current list of envariables is:
^MHFDEBUG~^OVERHEAD facility
^MHPOPDEBUG~^POP transactions
^MHVDEBUG~^window management transactions
^MHWDEBUG~^alternate\-mailboxes
The \fIforw\fR and \fImhl\fR commands have two switches,
`\-dashmunging' and `\-nodashmunging' which enable or disable
the prepending of `\-\ ' in forwarded messages. To use
`\-nodashmunging', you must use an \fImhl\fR filter file.
The \fIsend\fR command has two switches, `\-unique' and `\-nounique',
which are useful to certain individuals who, for obscure reasons,
do not use draft\-folders.
\*(lqDistribution Carbon Copy\*(rq addresses may be specified in
This header is removed before posting the message,and a copy of the message
is distributed to each listed address.
This could be considered a form of Blind
Carbon Copy which is best used for sending to an address which
would never reply (such as an auto\-archiver).
If you're running a version of \fIMH\fR which talks directly to an
\fISMTP\fR server (or perhaps an advanced \fIMMDF\fR submit process),
there are lots of interesting switches for your amusement which \fIsend\fR
and \fIpost\fR understand:
^-mail~^Use the \fIMAIL\fR command (default)
^-saml~^Use the \fISAML\fR command
^-send~^Use the \fISEND\fR command
^-soml~^Use the \fISOML\fR command
^-snoop~^Watch the \fISMTP\fR transaction
^-client host~^Claim to be \*(lqhost\*(rq when posting mail
^-server host~^Post mail with \*(lqhost\*(rq
The last switch is to be useful when \fIMH\fR resides on small
workstations (or PC:s) in a network\-\-they can post their outgoing mail with
and reduce the load on the local system.
the `\-server\ host' switch is defaulted appropriately using the SMTP
The \fIwhom\fR command understands the last three switches.
If you are licensed to run the TTI Trusted Mail Agent (TMA),
here are three utility programs to manage the Key Distribution Server (KDS):
\fIkdsc\fR, \fIkdsd\fR, and \fIkdser\fR.
.fo '@(MHLEFTFOOT)'@(MHCENTERFOOT)'UCI version'
.+c "CONFIGURATION OPTIONS"
This manual was generated with the following configuration options in
.ta \w'BBoards Home Directory 'u
^Primary Directory~^@(MHBINPATH)/
^Secondary Directory~^@(MHETCPATH)/
^Maildrop Location~^@(MHDROPLOC)
^BBoards Support~^Enabled
^BBoards Home Directory~^@(BBHOME)
^BBoards using NNTP~^Enabled
^Trusted Mail Support~^Enabled
^Transport System~^MMDF-I \*(SM
^Transport System~^MMDF-II \*(SM
^Transport System~^SendMail \*(SM
^Transport System~^Stand\-Alone Delivery
.\" And now the COVER sheet
\s-2(Not to be confused with a well\-known soft drink)\s+2