HOLD(8zm)

NAME
hold - zmailer deferred processing transport agent

SYNOPSIS

hold
    [-V] [-c channel]

DESCRIPTION
hold is a ZMailer transport agent which is usually only run by the scheduler(8zm) program to test conditions for reprocessing of previously deferred message addresses. The hold program must be run with the same current directory as the scheduler, namely POSTOFFICE/transport.

The program will interpret the host part of an address destined for its channel as a condition that must be met before the original address (in the user part) can be reprocessed by the router. The condition specification contains a general condition class name followed by colon followed by a parameter string. The currently supported condition classes are:

ns  succeeds when the nameserver lookup indicated by the parameter does not produce a temporary nameserver error. The parameter is a domain name followed by a slash followed by a standard Internet nameserver Resource Record type name.

timeout
    succeeds when the time given by the parameter (in normal seconds-since-epoch format) has passed.

age succeeds when message spool file is at least of given age. The interval can be given in complex '1d5h7m3s' -format.

io  succeeds 10% of the time, to allow retry of temporary I/O failures.

script
    runs the named shell script with the optional given argument. The parameter is a simple name, the shell script name within the MAILBIN/bin directory, optionally followed by a slash followed by an argument to be passed to the shell script.

home
    This tries to locate home-directory for named user, and then tries to stat() the directory, until it succeeds.

For example:

    NS:nic.ddn.mil/cname
    TIMEOUT:649901432
    AGE:2h
    IO:error
    SCRIPT:homedir/joe
    HOME:joe

The condition class name is case-insensitive but is capitalized by convention. The parameter strings are case-preserved for condition class-specific interpretation. Whitespace is not permitted.

The envelope of the resubmitted message is created from the sender and (no longer deferred) recipient addresses, and a "via suspension" header.

OPTIONS
Options are:

-c channel
    specifies which channel name should be keyed on. The default is hold.

-V  prints a version message and exits.

INTERFACE
This program reads in processable file names relative to the current working directory of the scheduler (namely: $POSTIOFFICE/transport/). Optionally on the same line the scheduler may tell which host is to be looked for from the recipients of the message.

    relative-spool-path [ <TAB> hostname ]

This program produces diagnostic output on the standard output. Normal diagnostic output is of the form:

    id/offset/status message

where id is the inode number of the message file, offset is a byte offset within its control file where the address being reported on is kept, status is one of ok, error, or deferred, and the message is descriptive text associated with the report. The text is terminated by a linefeed. Any other format (as might be produced by subprocesses) is passed to standard output for logging in the scheduler log.

The exit status is a code from <sysexits.h>.

ENVIRONMENT VARIABLES

ZCONFIG
    This environment variable is expected to be inherited from the scheduler(8zm), and it tells where scheduler's idea of ZENV-variables are located at.

Z-ENVIRONMENT VARIABLES

Following ZENV-variables are used by the hold program:

PATH, ZCONFIG, MAILBIN, MAILSHARE
    These four are passed onwards to script execution environment.

FILES
/usr/local/etc/zmailer/zmailer.conf | (ZCONFIG)
/var/spool/postoffice | (POSTOFFICE)

SEE ALSO
scheduler(8zm), zmailer.conf(5zm).

AUTHOR
This program authored and copyright by:
    Rayan Zachariassen <no address>,
Maintance in ZMailer environment
    Matti Aarnio <mea@nic.funet.fi>