The handler is expected to produce the following output on standard
error:
-
PASSThe message should be passed further. The handler should write the
message, possibly modified, on the standard output. -
STOPThe 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. -
DEFERThe message should not be passed further. A temporary error condition
should be indicated. Subsequent handlers won’t be called. -
REJECTThe message should not be passed further. A permanent error condition
should be indicated. Subsequent handlers won’t be called. -
LOG textThe line of text should be treated as a warning or error message and
added to the appropriate log. -
SKIPThe 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.