mail_open, mail_priority, mail_abort, mail_close, mail_close_alternate, mail_alloc, mail_free, mail_host - zmailer message submission interface
The main program against which this library is liked is expected to export Linkage time: -lzmailer |
These routines may be used by any program wishing to submit mail. mail_open will return a FILE * to a message file that should be written to by the application. This message file contains three parts: the message envelope, the message header, and the message body. The exact format of these components depend on the message protocol, which must be specified as the parameter to mail_open. The choices are predetermined by the capabilities of the mailer, and are defined in the header file. The known possibilities are:
MSG_RFC822 |
this is the only format supported by default by the mailer. The message headers and body in this format are defined by the DARPA Request For Comments 822 and 1123. The mes- sage envelope syntax is similar to the message header syntax, but for complete details refer to the ZMailer documentation. |
|
MSG_FAX MSG_UUCP MSG_X400 |
intended for fax transmissions. intended for old style UUCP format message headers intended for X.400(88) messages. |
The mail_open() routine will look for FULLNAME and PRETTYLOGIN environment variables and translate them into message envelope data for use by the mailer if it generates a sender address header for the message.
Note that the return value from the mail_open() routine corresponds to the return value of an fopen(3), and simi- larly the return values from mail_abort() and mail_close() correspond to the return value of fclose(3).
The mail_priority variable has default value of 0, and is used on scanning Zmailer configuration variable ROU- TERDIRS, which tells alternate router directories under the POSTOFFICE directory. At value 0, ROUTER- DIRS variable is not used. At higher values, successive directory from "ROUTERDIRS" is taken. See below about Z-Environment.
The mail_close_alternate() can be used to send currently open message file to some alternate destination, and is used at smtpserver(8) to send some quick-action requests directly to the scheduler(8).
The mail_alloc() and mail_free() routines are used to provide memory space for internal data structures. The versions of these routines in the library simply call malloc(3) and free(3) but an application may override them if desired.
Similarly the mail_host() routine is intended to return a unique string for each host, by default the hostname, and this too is intended to be overridden by an application that may already have this information available in some form.
The message envelope headers are used to carry meta-information about the message. The goal is to carry trans- port-envelope information separate from message (RFC-822) headers, and body.
At first the message starts with a set of envelope headers (*-prefix denotes optional):
*external \n |
*todsn [NOTIFY=...] [ORCPT=...] \n
to <%s> \n |
... set up signal handlers ... |
FULLNAME variable defines textual fullname, for example: "Sample User"
PRETTYLOGIN variable defines user@node format of what user wants to claim as his/her own address (it
must match those of mail router accepts.)
POSTOFFICE |
defines directory where all POSTOFFICE functions are under. |
|
ROUTERDIRS |
defines a `:' separated list of alternate router directories. If these are defined at all, they must exist, if alternate queueing priority mechanism is desired to be used. |
|
ROUTERDIRHASH |
Value ``1'' at this variable means that all router directories must have subdirectories with |
|
/var/spool/postoffice/public (POSTOFFICE/public)
/var/spool/postoffice/router (POSTOFFICE/router)
/var/spool/postoffice/{ROUTERDIRS} (POSTOFFICE/{ROUTERDIRS})
zmailer(1), sendmail(8)
RFC822
This program authored and copyright by:
Rayan Zachariassen <rayan@cs.toronto.edu>
ROUTERDIRS mechanism is by Matti Aarnio <mea@nic.funet.fi>