As it delivers messages to local users PMDF checks to see if the
user has a MAIL.DELIVERY file in their default login directory.
DELIVER is invoked if this file exists. DELIVER takes the
following steps:
1. DELIVER reads and parses the MAIL.DELIVERY file.
By default the message is returned to the sender if any errors
occur during the reading and parsing of the MAIL.DELIVERY
file. Note that an empty MAIL.DELIVERY file is considered an
error.
The system administrator can configure DELIVER to change this
behavior. If the logical name PMDF_IGNORE_MAIL_DELIVERY_ERRORS
is defined /SYSTEM/EXECUTIVE, any errors in the MAIL.DELIVERY
file (including an empty file) are ignored. The mail is
delivered normally to the user's NEWMAIL folder as if the
MAIL.DELIVERY file did not exist.
2. DELIVER writes the headers of the message to a temporary file
in the recipient's home directory.
3. DELIVER writes the body of the message to a temporary file in
the recipient's home directory.
4. A command file is constructed to complete the delivery
process. This file is also created in the recipient's
home directory. The directives previously read from the
MAIL.DELIVERY file are compared with the message. Any
directives that match will cause commands to be written to
the command file that implements the requested action.
5. After the list of directives is exhausted DELIVER checks to
see that at least one directive caused an action to be taken.
If none did, DELIVER writes to the command file a default
action command to deliver the message normally. Commands to
delete the message file (unless the MESSAGE_DELETE flag is set
to NO by one of the actions) and the command file itself are
written to the command file and the command file is closed.
6. The command file is queued to the batch queue specified by the
MAIL.DELIVERY file for processing. If the MAIL.DELIVERY files
not specify a queue, the DELIVER_BATCH queue will be tried,
and if that fails the queue SYS$BATCH will be used. The file
is queued so that it will execute just as if the recipient had
submitted it for processing from his or her own account. Once
the command file is submitted DELIVER tidies up, deallocating
any storage allocated for directive lists, and returns control
to PMDF.
DELIVER does not bother to create the batch job if there's no
work for it to do.
7. DELIVER passes responsibility for delivery back to PMDF if it
was asked to deliver the message to the user's NEWMAIL folder
and the requested handling of headers matches the the handling
specified by the local channel. This does not preclude other
actions using the message in other ways.