The handler is expected to produce the following output on standard
error:
-
PASS
The message should be passed further. The handler should write the
message, possibly modified, on the standard output. -
STOP
The message should not be passed further and this is not an error.
This should be used when the handler implements its own custom
delivery instead of the delivery provided by the MTA. Subsequent
handlers won’t be called. -
DEFER
The message should not be passed further. A temporary error condition
should be indicated. Subsequent handlers won’t be called. -
REJECT
The message should not be passed further. A permanent error condition
should be indicated. Subsequent handlers won’t be called. -
LOG text
The line of text should be treated as a warning or error message and
added to the appropriate log. -
SKIP
The handler should not process and pass the message to the handler’s
output. The message should be passed further without any
modifications.
Each line of output on the standard error should be terminated with LF.
After the first PASS
, STOP
, DEFER
, REJECT
, or SKIP
line, further output is not accepted, so any LOG lines must precede the
above.
The exit code from the handler should be 0 on PASS
or STOP
and
not 0 in other cases.