# smfi_setreply

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.

Copyright (c) 2000, 2002-2003 Proofpoint, Inc. and its suppliers. All rights reserved.
By using this file, you agree to the terms and conditions set forth in the LICENSE.