+.TH SLOCAL %manext1% "November 23, 2012" "%nmhversion%"
.\"
.\" %nmhwarning%
.\"
-.TH SLOCAL %manext1% "%nmhdate%" MH.6.8 [%nmhversion%]
.SH NAME
slocal \- asynchronously filter and deliver new mail
.SH SYNOPSIS
.HP 5
.na
.B %libdir%/slocal
-[address\ info\ sender]
.RB [ \-addr
.IR address ]
.RB [ \-info
.BR sendmail ,
the sender will obtained from the UUCP
\*(lqFrom:\*(rq line, if present. The user may override these
-values with command line arguments, or arguments to the
+values with the
.B \-addr
and
.B \-sender
is taking, as well as check for syntax errors in your
.RI \*(lq \&.maildelivery \*(rq
file.
-
.SS "Message Transfer Agents"
Most modern MTAs including
.BR sendmail ,
support a \&.forward file for directing incoming mail.
You should include the line
.PP
-.RS 5
+.ce
\*(lq|\ %libdir%/slocal\ \-user\ username\*(rq
-.RE
.PP
in your \&.forward file in your home directory. This will cause
your MTA to invoke
.B slocal
on your behalf when a message arrives.
-
.SS "The Maildelivery File"
The
.RI \*(lq \&.maildelivery \*(rq
file is:
.PP
.RS 5
-.B header pattern action result string
+.B "header pattern action result string"
.RE
.PP
.BR header :
The delivery file is always read completely, so that several matches
can be made and several actions can be taken.
.RE
-
.SS "Security of Delivery Files"
In order to prevent security problems, the
.RI \*(lq \&.maildelivery \*(rq
will check for a global delivery file at
.IR %etcdir%/maildelivery .
This file is read according to the same rules. This file must be
-owned by the root and must be writable only by the root.
+owned by root and must be writable only by root.
.PP
If a global delivery file cannot be found or does not perform an
action which delivers the message, then standard delivery to the
user's maildrop is performed.
-
.SS "Example Delivery File"
To summarize, here's an example delivery file:
.PP
# always run rcvtty
* \- pipe R %libdir%/rcvtty
.fi
-
.SS "Sub-process environment"
When a process is invoked, its environment is: the user/group-ids are
set to recipient's ids; the working directory is the recipient's home
.PP
In order to avoid any time limitations, you might implement a process
that began by
-.BR fork ()-ing.
+.IR fork ()-ing.
The parent would return the appropriate
value immediately, and the child could continue on, doing whatever it
wanted for as long as it wanted. This approach is somewhat risky if
the parent is going to return an exit status of zero. If the parent is
going to return a non-zero exit status, then this approach can lead to
quicker delivery into your maildrop.
-
.SH FILES
.fc ^ ~
.nf
^%etcdir%/maildelivery~^Rather than the standard file
^%mailspool%/$USER~^The default maildrop
.fi
-
.SH "SEE ALSO"
-rcvdist(1), rcvpack(1), rcvstore(1), rcvtty(1), mh\-format(5)
-
+.IR rcvdist (1),
+.IR rcvpack (1),
+.IR rcvstore (1),
+.IR rcvtty (1),
+.IR mh\-format (5)
.SH DEFAULTS
.nf
.RB ` \-noverbose '
.RB ` \-file "' defaults to stdin"
.RB ` \-user "' defaults to the current user"
.fi
-
.SH CONTEXT
None
-
.SH HISTORY
.B Slocal
was originally designed to be backward-compatible with
.B RP_MECH
(200), which means
\*(lquse an alternate route\*(rq (deliver the message to the maildrop).
-
.SH BUGS
Only two return codes are meaningful, others should be.
.PP