SYNOPSIS |
#include <libmilter/mfapi.h>
int smfi_setreply(
SMFICTX *ctx,
char *rcode,
char *xcode,
char *message
);
Set the default SMTP error reply code. Only 4XX and 5XX replies are accepted.
|
DESCRIPTION |
Called When |
smfi_setreply may be called from any of the xxfi_ callbacks
other than xxfi_connect. |
Effects |
Directly set the SMTP error reply code for this connection. This code
will be used on subsequent error replies resulting from actions taken by
this filter. |
|
ARGUMENTS |
Argument | Description |
ctx |
Opaque context structure.
|
rcode |
The three-digit (RFC 821/2821) SMTP reply code, as a
null-terminated string. rcode cannot be NULL, and must be a valid
4XX or 5XX reply code.
|
xcode |
The extended (RFC 1893/2034) reply code. If xcode is NULL, no
extended code is used. Otherwise, xcode must conform to RFC 1893/2034.
|
message |
The text part of the SMTP reply. If message is NULL, an empty message is used.
|
|
RETURN VALUES |
smfi_setreply will fail and return MI_FAILURE if:
- The rcode or xcode argument is invalid.
- A memory-allocation failure occurs.
- The length of any text line is more than MAXREPLYLEN (980).
- The message argument contains a carriage return or line feed.
Otherwise, it return MI_SUCCESS.
|
NOTES |
- Values passed to smfi_setreply are not checked for standards compliance.
- The message parameter should contain only printable characters,
other characters may lead to undefined behavior.
For example, CR or LF will cause the call to fail,
single '%' characters will cause the text to be ignored
(if there really should be a '%' in the string,
use '%%' just like for printf(3)).
- For details about reply codes and their meanings, please see RFC's
821/
2821
and
1893/
2034.
- If the reply code (rcode) given is a '4XX' code but SMFI_REJECT is used
for the message, the custom reply is not used.
- Similarly, if the reply code (rcode) given is a '5XX' code but
SMFI_TEMPFAIL is used for the message, the custom reply is not used.
Note: in neither of the last two cases an error is returned to the milter,
libmilter silently ignores the reply code.
- If the milter returns SMFI_TEMPFAIL and sets the reply code to '421',
then the SMTP server will terminate the SMTP session with a 421 error code.
|